FFmpeg adalah alat canggih yang dapat melakukan hampir semua hal yang di inginkan dengan file multimedia. Tapi kelemahan alat ini adalah tidak adanya tampilan jendela aplikasi seperti alat - alat multimedia lainnya seperti Audacity, Openshot dan semacamnya. Bukan berarti alat - alat multimedia lain tersebut tidak berguna, akan tetapi jika kita hanya sekedar ingin mengkonversi media file, mengekstrak audio dari file video dengan cepat, dan lain sebagainya maka akan lebih mudah dengan menggunakan FFmpeg.
Untuk menggunakan FFmpeg diperlukan terminal emulator seperti Windows Command Promp (cmd), Xterm (Linux), Termux (android) dan lain sebagainya. Itulah kenapa FFmpeg tidak terlalu banyak di gunakan oleh pengguna komputer pada umumnya, karena akan sangat sulit untuk mengingat setiap perintah yang tersedia.
Media File
Umumnya media file terdiri dari container (wadah) dan stream (aliran).
Stream (aliran) menyertakan komponen AV yang sebenarnya, seperti audio atau video pada sebuah film dan dikodekan menggunakan pengkodean media tertentu yang disebut codec. Setiap codec memiliki sifat, kelebihan, dan kekurangan tersendiri. Misalnya, codec FLAC mengutamakan audio lossless berkualitas tinggi, sedangkan vorbis dirancang untuk bersaing dengan MP3 dalam hal ukuran file sembari menawarkan kualitas audio yang lebih baik. Maka file berformat FLAC akan lebih besar ukurannya dibanding audio stream vorbis, tetapi kualitasnya tetap jauh lebih baik dibanding vorbis. Tidak ada yang lebih baik dari keduanya karena masing masing berusaha melakukan hal yang berbeda.
Penampung (container) adalah pembungkus aliran (stream) yang menyajikan satu antarmuka sehingga dapat berinteraksi dengan media player dan alat media file lainnya. Aliran (stream) di dalam pernampung (container) tidak harus berupa audio atau video, penampung (container) yang berbeda memungkinkan untuk menampung aliran yang berbeda seperti subtittle, cover, judul, informasi bab, atau metadata lainnya.
Konversi Dasar
Hal membingunkan bagi sebagian pengguna ketika ingin mencoba mengonversi audio dan video adalah memilih format stream (codec) dan container yang sesuai. FFmpeg memiliki pengaturan default yang secara otomatis memilih codec dan container tanpa harus merubah konfigurasi yang rumit.
Sebagai contoh untuk mengubah audio MP3 menjadi OGG:
ffmpeg -i input.mp3 output.ogg
Dari sudut pandang FFmpeg, perintah tersebut berarti mengubah stream audio MP3 menjadi stream audio Vorbis dan menggabungkannya dalam container OGG. Jadi kita tidak perlu menentukan jenis stream dan containernya secara manual, karena FFmpeg akan secara otomatis mencarikan codec yang sesuai.
Hal ini juga berlaku pada Video:
ffmpeg -i input.mp4 output.webm
Karena WebM adalah format yang terdefinisi dengan baik, FFmpeg secara otomatis mengetahui video dan audio apa yang didukung dan menkonversi stream menjadi file WebM yang valid.
Tergantung pada pilihan container yang dipilih, cara ini tidak selalu berhasil. Seperti contohnya pada container Matroska (file *.mkv) yang dirancang untuk dapat menampung berbagai macam codec stream. Maka apapun codec stream dari satu container ke container Matroska bisa saja menghasilkan codec stream yang sama (hanya dipindahkan).
Memilih codec
Untuk menyesuaikan codec yang diinginkan pada container Matroska (yang dapat menampung semua aliran), maka dapat menggunakan opsi -c pada perintah ffmpeg. Opsi ini memungkinkan untuk menyesuaikan codec berbeda setiap alirannya, untuk menyesuaikan codec audio dengan opsi -c:a
dan video -c:v
.
Adapun contoh untuk mengubah audio steam menjadi Vorbis perintahnya seperti berikut ini:
ffmpeg -i input.mp3 -c:a libvorbis output.ogg
Hal yang sama dapat dilakukan untuk mengubah stream video dan audio sekaligus seperti berikut:
ffmpeg -i input.mp4 -c:v vp9 -c:a libvorbis output.mkv
Perintah tersebut akan membuat wadah Matroska dan digunakan untuk menampung video yang disesuaikan ke dalam format codec VP9, serta audio yang disesuaikan ke dalam format Vorbis.
Untuk mengetahui daftar codec yang didukung oleh ffmpeg, dengan menjalankan perintah ffmpeg -codecs
Output perintah ini akan berbeda tergantung pada versi yang diinstal.
Mengubah Aliran (Stream) Tunggal
Mengenkode ulang aliran (stream) beberapa aliran sekaligus dapat memakan waktu yang cukup lama. Sering ditemukan dari wadah (container) input terdapat codec aliran (stream) yang sudah kita inginkan dan hanya ingin mengubah aliran (stream) lain yang kurang sesuai dengan yang kita inginkan.
Misal, jika format codec untuk stream video yang kita inginkan sudah sesuai di container WebM, tapi untuk stream audionya kita ingin menggunakan codec FLAC. Maka perintah yang bisa kita gunakan sebagai berikut:
ffmpeg -i input.webm -c:v copy -c:a flac output.mkv
Perintah tersebut akan menyalin (-c:v copy
) stream video dan mengkodekan stream audio Vorbis menjadi FLAC (-c:a flac
). Contoh tersebut dapat diterapkan juga untuk aliran video.
Mengganti Wadah (Container)
Contoh lain yaitu jika kita hanya ingin mengganti wadanya saja, tanpa harus mengubah codec stream audio dan videonya maka dapat menggunakan perintah berikut ini:
ffmpeg -i input.webm -c:av copy output.mkv
Dengan perintah tersebut maka FFmpeg akan manyalin stream audio dan video (-c:av copy
) ke dalam wadah Matroska. Seperti yang kita ketahui Matroska dirancang untuk dapat menampung berbagai macam codec stream.
Mengubah Kualitas
Setelah kita mengetahui tentang codec stream pada beberapa container, mengubah codec setiap stream dan memindahkan stream dari satu container ke container lain. Selanjutnya: Bagaimana kita mengatur kualitas setiap stream?
Cara yang paling sederhana yaitu mengubah bitrate sehingga menghasilkan kualitas yang berbeda atau kualitasnya tetap. Kemampuan manusia untuk mendengar dan melihat tidak dapat diukur dan sejelas yang kita pikirkan. Terkadang mengubah bitrate akan membuat perbedaan besar pada kualitas suara/gambar, juga dapat ditemukan dibeberapa kasus kita tidak menemukan perbedaan pada kualitasnya, hanya saja ukuran filenya yang berubah.
Untuk menyesuaikan bitrate setiap stream kita dapat menggunakan opsi (-b
). Cara kerjanya sama dengan opsi (-c
). Hanya saja opsi ini untuk bitrate.
Misal, untuk mengubah bitrate video, kita dapat menggunakan perintah berikut:
ffmpeg -i input.webm -c:a copy -c:v vp9 -b:v 1M output.mkv
Perintah tersebut akan menyalin audio (-c:a copy
), mengonversi video ke codec VP9 (-c:v vp9
) dengan bitrate 1M/s (-b:v 1M
) dari container WebM ke container Matroska.
Cara lain yang dapat mempengaruhi kualitas adalah menyesuaikan framerate menggunakan opsi -r
:
ffmpeg -i input.webm -c:a copy -c:v vp9 -r 30 output.mkv
Perintah tersebut akan membuat file Matroska baru seperti perintah sebelumnya bedanya disini kita menggunakan opsi untuk mengubah stream video ke 30 frame per detik (-r 30
).
Cara ketiga yaitu dengan mengubah dimensi video (mengubah ukuran tampilan video) menggunakan opsi (-s
). Cara termudah adalah menggunakan ukuran video yang telah di tentukan oelh ffmpeg. Ukuran ini juga sering di temukan pada dimensi video pada umumnya.
Adapun contoh perintahnya sebagai berikut:
ffmpeg -i input.mkv -c:a copy -s hd720 output.mkv
Perintah tersebut akan mengubah dimensi tampilan video menjadi 1280x720 pada layar. Kita juga dapat menggunakan perintah manual dengan hasil yang sama seperti berikut:
ffmpeg -i input.mkv -c:a copy -s 1280x720 output.mkv
Perintah tersebut akan menghasilkan output yang sama dengan perintah sebelumnya. Yaitu lebar video (1280
) dan tinggi video (720
).
Menyesuaikan bitrate dan framerate adalah dua cara yang cukup kasar namun efektif untuk mengetahui hasil kualitas dari sebuah media file, Akan tetapi menggunakan nilai yang lebih tinggi tidak berarti akan meningkatkan kualitas, apalagi jika sumber file media (file input) kualitasnya memang sudah rendah.
Menggunakan opsi ini paling sering digunakan untuk mengurangi streaming media berkualitas tinggi dengan cara memperkecil ukuran file. Mengubah kualitas file adalah masalah yang sangat subjektif yang tidak ada satu cara yang bisa digunakan dan berhasil setiap saat. Cara terbaik adalah dengan mencoba melakukan beberapa perubah pada file media, dan mengujinya apakah tampilan atau suaranya lebih baik.
Memangkas Aliran (Stream)
Seringkali kita ingin mengambil hanya beberapa bagian dari media file, tentu akan lebih mudah menggunakan alat lain yang dapat menunjukkan kepada kita dimana bagian tersebut atau di menit dan detik ke berapa bagian yang akan kita gunakan. Tetapi bukan berarti FFmpeg tidak dapat melakukan pemangkasan pada media file, jika kita mengetahui persis dimana bagian yang akan di ambil maka FFmpeg juga dapat membantu dalam memangkas bagian tersebut.
Misal, kita akan memangkas dari menit pertama sampai dengan detik ke 10. maka kita dapat menggunakan perintah berikut ini:
ffmpeg -i input.mkv -c:av copy -ss 00:01:00 -t 10 output.mkv
Opsi memulai dari menit pertama ditunjukkan pada (-ss 00:01:00
) kemudian mengambil 10 detik dari video tersebut ditunjukkan pada opsi (-t 10
). Opsi awal bisa kita sesuaikan ke yang lebih akurat tidak hanya jam, menit, dan detik, namun dapat juga turun ke milidetik jika diperlukan.
Mengekstrak Audio
Seringkali kita ingin mengambil stream audio saja dari sebuah video, biasanya contoh kasus seperti ini adalah ketika kita ingin mengamblil audio dari video klip musik.
Maka untuk mendapatkan file audionya saja dengan cara membuang stream video menggunakan opsi -vn
seperti berikut:
ffmpeg -i input.mkv -vn hanya_audio.ogg
Seperti yang kita ketahui sebelumnya, ffmpeg akan menyesuaikan codec ke Vorbis dan menyimpannya ke hanya_audio.ogg
. Kita juga bisa menggunakan opsi -an
untuk membuang stream audio dan -sn
untuk membuang stream subtittle.
Membuat Animasi GIF
File animasi gif hingga saat ini masih banyak digunakan, biasanya digunakan untuk menganimasikan meme dari cuplikan video. Untuk membuat animasi tersebut dari video kita dapat menggunakan opsi -an
untuk membuang stream audio pada hasil outputnya seperti berikut:
ffmpeg -i input.mkv output.gif
Seringkali hasil output file animasi gif akan lebih besar dari pada video aslinya. Hal ini dikarnakan GIF tidak terkompresi dengan baik dibanding video. Untuk mengatasi masalah tersebut maka kita dapat menggunakan opsi untuk mengubah dimensi ukuran video (-s
) seperti yang telah kita bahas pada bagian menyesuaikan kualitas di atas.
Tips
Untuk memudahkan dalam mengetahui format stream dalam media container, kita bisa menggunakan media player yang sering kita gunakan seperti vlc atau alat khusus seperti mediainfo
. alat tersbut dapat menampilkan semua informasi dalam media container, seperti informasi stream sampai dengan metadata file tersebut.
Masih banyak lagi kegunaan FFmpeg yang bisa kita manfaatkan. jika kamu tertarik, dokumentasi untuk FFmpeg bisa kamu manfaatkan untuk belajar trik - trik baru untuk mengolah file media.