Belajar FFmpeg - Perintah Dasar & Transcoding
Episode 3 of 23

Belajar FFmpeg - Perintah Dasar & Transcoding

Mulai mengetik perintah FFmpeg sungguhan: sintaks dasar ffmpeg -i input output, konversi format MP4 ke MKV dan WebM, perbedaan stream copy dengan re-encode penuh, serta kebiasaan membaca metadata dan durasi file lewat ffprobe sebelum memutuskan perintah.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 2 kita memahami arsitektur FFmpeg — pipeline demux-decode-filter-encode-mux dan konsep stream — sekarang saatnya mengetik perintah sungguhan. Episode ini adalah "hari pertama kerja": kalian belajar sintaks dasar, melakukan konversi format, dan membedakan dua strategi yang paling menentukan hasil — stream copy dan re-encode.

Mengapa ini penting? Karena sebagian besar kesalahan pemula FFmpeg bukan berasal dari opsi yang rumit, melainkan dari salah memahami dua hal: urutan input-output, dan apakah data benar-benar diproses ulang atau hanya disalin.

Sintaks Dasar

Seluruh FFmpeg dimulai dari satu pola: input lebih dulu, output di belakang.

Pola dasar
ffmpeg [opsi-input] -i INPUT [opsi-output] OUTPUT

Contoh paling sederhana — salin (tanpa re-encode) satu file ke format lain:

Konversi container paling sederhana
ffmpeg -i sample.mp4 sample.mkv

Perintah ini membaca sample.mp4, lalu menulis sample.mkv. Karena tidak ada opsi codec, FFmpeg memilih default: libx264 untuk video dan aac untuk audio, sehingga terjadi re-encode. Untuk tugas cepat, ini sering tidak diinginkan — kita bahas stream copy di bawah.

Important

Urutan tidak bisa dibalik: ffmpeg sample.mp4 -i sample.mkv akan membingungkan FFmpeg dan gagal. Selalu tulis -i beserta inputnya sebelum output. Ini aturan nomor satu yang harus melekat.

Konversi Format: MP4, MKV, dan WebM

Sekarang kita bedah istilah yang di episode 0 hanya kita sebut sekilas: codec vs container. Konversi format bisa berarti dua hal yang sangat berbeda:

  1. Mengganti container saja — isi stream tetap, hanya "kemasannya" yang berubah.
  2. Mengganti codec sekaligus — data benar-benar di-decode dan di-encode ulang.

Untuk tugas penggantian container murni, pakai stream copy:

MP4 ke MKV tanpa re-encode
ffmpeg -i sample.mp4 -c copy sample.mkv
MP4 ke WebM dengan re-encode
ffmpeg -i sample.mp4 -c:v libvpx-vp9 -c:a libopus sample.webm

Yang pertama menyelesaikan dalam hitungan detik karena data hanya disalin. Yang kedua butuh waktu karena video H.264 harus di-decode lalu di-encode ulang menjadi VP9 dan Opus — pasangan codec standar untuk WebM.

Stream Copy vs Re-encode

Inilah salah satu keputusan paling sering kalian buat. Pahami tabel ini sejak dini:

Aspek-c copyRe-encode
ProsesData disalin mentahDecode + encode ulang
KecepatanSangat cepatLambat, sesuai codec
KualitasTidak berubahBerpotensi turun
Ukuran fileUmumnya tetapBisa dikecilkan
PenggunaanGanti container, gabung streamUbah codec, resolusi, bitrate

-c copy seperti fotokopi dokumen asli; re-encode seperti mengetik ulang dokumen di komputer baru. Fotokopi kilat tapi tidak bisa mengubah isi; mengetik ulang lambat tapi kalian bisa mengedit apa pun. Pilih sesuai kebutuhan, bukan kebiasaan.

Perluasan opsi: -c:v memilih codec video, -c:a memilih codec audio. Contoh re-encode video saja, audio tetap disalin:

Video re-encode, audio copy
ffmpeg -i sample.mp4 -c:v libx264 -crf 23 -c:a copy sample-h264.mp4

Membaca Media dengan ffprobe

Sebelum mengetik perintah apa pun, teknisi yang baik memeriksa bahan bakunya lebih dulu. Itulah kerja ffprobe — inspektur media yang kita kenal di episode 2. Mulai dari yang paling ringkas:

Lihat format dan durasi
ffprobe -hide_banner sample.mp4
Contoh output
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4':
  Metadata:
    major_brand     : isom
  Duration: 00:00:10.00, start: 0.000000, bitrate: 123 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360
  Stream #0:1[0x1](und): Audio: aac (LC) (mp4a / 0x6134706d), 44100 Hz, stereo, fltp

Dari output ini kalian bisa langsung membaca durasi, bitrate, resolusi video, dan codec audio — persis informasi yang dibutuhkan sebelum memutuskan strategi transcode.

Untuk bentuk yang lebih terstruktur dan mudah dipakai dalam script, kombinasikan -show_format dengan -show_streams:

Format terstruktur untuk script
ffprobe -hide_banner -show_format -show_streams sample.mp4

Mengendalikan Output FFmpeg

Dua opsi ini akan kalian pakai setiap hari untuk menjaga terminal tetap bersih dan informatif:

OpsiFungsi
-hide_bannerMenghilangkan banner versi dan build config
-loglevelMengatur tingkat detail: quiet, error, warning, info, debug

Contoh yang paling sering dipakai di production — hanya menampilkan error saja:

Mode senyap, error saja
ffmpeg -hide_banner -loglevel error -i sample.mp4 -c copy sample.mkv

Dengan -loglevel error, terminal hanya teriak ketika ada masalah — sempurna untuk script dan CI/CD yang harus tetap bersih.

Tip

Uji selalu pada file kecil atau potongan pendek sebelum memproses batch: ffmpeg -ss 00:00:00 -t 10 -i sample.mp4 -c copy test.mp4 mengambil 10 detik pertama dalam sekejap — pasangan terbaik untuk mencoba opsi baru tanpa menunggu lama.

Penutup

Pada episode 3 ini, kalian telah menulis perintah FFmpeg pertama yang sungguhan: sintaks dasar, konversi container MP4-MKV-WebM, perbedaan -c copy dengan re-encode, membaca metadata lewat ffprobe, serta mengendalikan output dengan -hide_banner dan -loglevel.

Inti yang harus dibawa pulang:

  • Pola dasar: ffmpeg [opsi-input] -i INPUT [opsi-output] OUTPUT.
  • Konversi container murni: -c copy; ubah codec: re-encode dengan -c:v dan -c:a.
  • -c copy itu fotokopi, re-encode itu mengetik ulang — pilih sesuai kebutuhan.
  • ffprobe adalah kebiasaan baik sebelum setiap transcode: baca durasi, bitrate, dan stream dulu.
  • -hide_banner dan -loglevel error menjaga output tetap bersih.

Di episode 4 selanjutnya, kita masuk ke jantung kualitas video: encoding video & codec — memahami H.264, H.265/HEVC, VP9, dan AV1, peran -crf dan -preset, strategi two-pass, serta pengaturan resolusi, fps, dan GOP. Sampai jumpa di episode 4!