Tutorial FFMpeg Menambahkan Audio pada File Video

2 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Tutorial FFmpeg menambahkan audio pada video
Sound icon by Freepik dan Video icon by Becris

TeknoCerdas.com – Salam cerdas untuk kita semua. Seperti pada judul, tulisan ini adalah tutorial bagaimana menambahkan atau mixing file audio ke dalam file video menggunakan tools open soure populer yaitu FFmpeg.

Tulisan ini tidak membahas cara instalasi FFmpeg dan mengasumsikan bahwa FFmpeg sudah terinstal di komputer anda.

Daftar Isi

Mendownload File Video

File video yang digunakan adalah video berformat MP4 berdurasi 10 detik dan berukuran 3.3MB. Video diambil dari website Pixabay. Link dari video adalah sebagai berikut.

https://pixabay.com/videos/fishing-fish-fisherman-water-44534/

Kunjungi alamat URL diatas kemudian download file video yang dimaksud pada satu direktori atau folder. Simpan video tersebut dengan nama video.mp4.

Cek informasi dari video menggunakan ffprobe.

$ ffprobe video.mp4
ffprobe version 3.3.2 Copyright (c) 2007-2017 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)

[...CUT...]
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41isomavc1
    creation_time   : 2020-07-17T21:05:22.000000Z
  Duration: 00:00:09.86, start: 0.000000, bitrate: 2795 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 2539 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 48k tbc (default)
    Metadata:
      creation_time   : 2020-07-17T21:05:22.000000Z
      handler_name    : L-SMASH Video Handler
      encoder         : AVC Coding
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 253 kb/s (default)
    Metadata:
      creation_time   : 2020-07-17T21:05:22.000000Z
      handler_name    : L-SMASH Audio Handler

Meskipun file video diatas tidak memiliki suara namun dapat dilihat jika terdapat stream audio #0:1 pada file. Audio ini akan kita buang dan kita ganti dengan audio baru.

Mendownload File Audio

File audio yang digunakan adalah audio berformat MP3 berdurasi 1 menit 36 detik dan berukuran 2.9MB. Audio diambil dari website mixkit.co. Berikut adalah URL dari audio yang digunakan.

https://mixkit.co/free-stock-music/tag/ukulele/

Judul lagu: Summer’s Here by Ahjay Stelino

Donwload file audio tersebut kemudian letakkan satu direktori bersama dengan file video yang telah didownload sebelumnya. Simpan file audio tersebut dengan nama audio.mp3.

Cek informasi dari file audio dengan perintah `ffprobe`.

$ ffprobe audio.mp3
ffprobe version 3.3.2 Copyright (c) 2007-2017 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)

[...CUT...]
Input #0, mp3, from 'audio.mp3':
  Metadata:
    encoded_by      : Pro Tools
    originator_reference: laak!dGtQVhaaaGk
    date            : 2019-02-1
    time_reference  : 158826150
    encoder         : Lavf58.12.100
  Duration: 00:01:36.13, start: 0.025057, bitrate: 256 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 256 kb/s
    Metadata:
      encoder         : Lavc58.18

Dari informasi diatas dapat dilihat jika bitrate dari file mp3 tersebut adalah 256 kb/s. Bitrate ini nanti akan kita turunkan menjadi 128 kb/s pada video akhir.

Menambahkan Audio pada File Video

Cara menambahkan atau menggabungkan audio ke file video dengan FFmpeg cukup mudah. Sekarang pastikan kedua file video dan audio ada direktori yang sama.

$ ls -l
-rw-r--r--@ 1 rioastamal  staff   2.9M Oct  1 01:55 sound.mp3
-rw-r--r--@ 1 rioastamal  staff   3.3M Oct  1 00:48 video.mp4

Dapat dilihat jika ada dua file yaitu video.mp4 dan sound.mp3. Perintah untuk menggabungkan audio ke video adalah sebagai berikut.

$ ffmpeg -i video.mp4 -i audio.mp3 \
-c:v copy -c:a aac -b:a 128k \
-map 0:v:0 -map 1:a:0 -shortest output.mp4

Penjelasan perintah diatas adalah:

  • -i video.mp4 -i audio.mp3 Inputan file video dan audio yang digunakan
  • -c:v copy Codec yang digunakan pada video adalah “copy” artinya tidak ada proses encoding tetapi hanya menyalin frame. Sehingga kualitas gambar tidak berkurang.
  • -c:a aac Codec audio yang digunakan adalah AAC. Proses encoding dari MP3 ke AAC dilakukan untuk file audio.
  • -b:a 128k Bitrate yang digunakan untuk audio yaitu 128 kb/s diturunkan aslinya yaitu 256 kb/s.
  • -map 0:v:0 Pada inputan pertama yang diambil adalah video saja yaitu index ke 0.
  • -map 1:a:0 Pada inputan kedua yang diambil adalah audio saja yaitu index ke 0.
  • -shortest Durasi yang dijadikan patokan adalah terpendek. Dalam hal ini adalah video karena 10 detik. Sedangkan audio berdurasi 1:36.
  • output.mp4 adalah nama file output hasil mixing audio dan video dari ffmpeg.

Berikut ini adalah output dari mixing file audio dan video menggunakan FFmpeg.

Output hasil mixing audio dan video dengan FFmpeg

Untuk melihat detail informasi dari file output.mp4 dapat digunakan perintah ffprobe.

$ ffprobe output.mp4
[...CUT...]
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.71.100
  Duration: 00:00:09.84, start: 0.000000, bitrate: 2674 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 2539 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 48k tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

Dapat dilihat Stream 0:0 yaitu video adalah sama dengan versi originalnya. Pada audio yaitu Stream 0:1 sudah berubah yang awalnya adalah audio kosong. Kemudian diganti dengan sound dari audio.mp3 dengan bitrate yang diturunkan menjadi 128 kb/s.