Belajar FFmpeg - Encoding Video & Codec
Episode 4 of 23

Belajar FFmpeg - Encoding Video & Codec

Memilih codec dengan kesadaran penuh: H.264, H.265/HEVC, VP9, dan AV1, menguasai opsi -c:v, -crf, -preset, dan -b:v, memahami strategi two-pass, serta mengatur resolusi, fps, dan GOP untuk menyeimbangkan kualitas dengan ukuran file.

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

Pendahuluan

Setelah di episode 3 kalian bisa menjalankan transcode pertama — konversi format dan stream copy — episode ini masuk ke jantung kualitas: encoding video. Di sinilah perbedaan antara hasil "bisa diputar" dan hasil "layak produksi" ditentukan.

Kalian tidak akan menghafal semua opsi FFmpeg; yang kalian butuhkan adalah model mental yang benar. Bayangkan encoding seperti menyetel mesin kopi: ada beberapa parameter yang saling berhubungan, dan kalian harus tahu mana yang diputar dulu, mana yang dikorbankan, dan mana yang tidak boleh disentuh asal-asalan.

Memilih Codec: Bahasa Video

Di episode 0 kalian belajar bahwa codec adalah algoritma kompresi. Sekarang kita lihat empat codec video yang paling sering kalian temui dan encoder-nya di FFmpeg:

CodecEncoder FFmpegKarakteristik
H.264 / AVClibx264Paling luas didukung, standar web dan mobile
H.265 / HEVClibx265Kompresi lebih baik, dukungan lebih selektif
VP9libvpx-vp9Open, unggul di browser dan YouTube
AV1libaom-av1, libsvtav1Kompresi paling tinggi, encoding lambat

Pilihannya seperti memilih bahasa: H.264 adalah bahasa universal yang dipahami semua perangkat; HEVC lebih hemat ruang tapi tidak semua pemutar memahaminya; AV1 paling irit untuk kualitas yang sama, tapi butuh tenaga komputasi jauh lebih besar saat encode. Untuk konten umum, H.264 masih juara kompatibilitas.

Cek encoder apa saja yang tersedia di build kalian:

Daftar encoder video
ffmpeg -encoders | grep -E "libx264|libx265|libvpx-vp9|libsvtav1"

Untuk melihat seluruh opsi sebuah encoder, jalankan ffmpeg -h encoder=libx264 — daftar parameter lengkap beserta deskripsinya.

Menentukan Codec: -c:v

Opsi -c:v memilih codec video; -c:a untuk audio. Perintah lengkapnya:

Encode H.264 dengan kualitas tinggi
ffmpeg -i sample.mp4 -c:v libx264 -crf 18 -preset slow out-h264.mp4
Encode AV1 dengan encoder SVT-AV1
ffmpeg -i sample.mp4 -c:v libsvtav1 -crf 30 -preset 8 out-av1.mp4

Perhatikan pasangan -crf dan -preset yang selalu menyertai libx264 — inilah dua tuas utama yang wajib kalian pahami.

-crf: Tuas Kualitas

CRF (Constant Rate Factor) adalah cara paling intuitif mengontrol kualitas: nilai lebih kecil = kualitas lebih tinggi = file lebih besar. Skala khasnya:

CRFKesan
18Kualitas nyaris tak hilang (visual lossless)
23Kualitas default libx264, seimbang
28Lebih kecil, mulai terlihat penurunan
30+Kecil, kualitas kompromi untuk web

CRF bersifat konstan: FFmpeg menambah bitrate di adegan kompleks dan menguranginya di adegan tenang. Analoginya seperti juru kamera yang menyesuaikan kompresi agar tiap momen selalu terlihat baik — bukan memakai satu setting kaku untuk seluruh video.

-preset: Tuas Kecepatan

-preset mengatur kompromi kecepatan vs efisiensi. Preset lebih lambat memberi kompresi lebih baik pada ukuran file yang sama:

PresetArahEfek
ultrafast, fastCepatUkuran lebih besar
mediumSeimbangDefault libx264
slow, veryslowLambatUkuran lebih kecil

Untuk hasil akhir yang disimpan, -preset slow biasanya worth it. Untuk preview atau pengujian cepat, pakai -preset fast. Sekali lagi: pilih sesuai situasi, bukan kebiasaan.

Bitrate: -b:v dan Two-Pass

CRF bagus untuk file lokal karena ia mengejar kualitas. Tapi untuk streaming dengan target bitrate tertentu — misal maksimal 2 Mbps di atas jaringan terbatas — kalian butuh mode bitrate:

Encode dengan target bitrate
ffmpeg -i sample.mp4 -c:v libx264 -b:v 2M -maxrate 2.5M -bufsize 5M out-2mbps.mp4

Kualitas mode ini menurun pada adegan kompleks — bitrate dipatok, sehingga kualitas "menyerah". Untuk hasil terbaik dalam mode bitrate, pakai two-pass: pass pertama memetakan kompleksitas video, pass kedua mengalokasikan bitrate secara optimal:

Two-pass pass pertama
ffmpeg -y -i sample.mp4 -c:v libx264 -b:v 2M -pass 1 -an -f null /dev/null
Two-pass pass kedua
ffmpeg -i sample.mp4 -c:v libx264 -b:v 2M -pass 2 out-2pass.mp4

Pass pertama hanya menganalisis tanpa menghasilkan file video (diarahkan ke -f null /dev/null), lalu pass kedua memakai hasil analisis itu. Hasilnya: kualitas terbaik untuk bitrate tertentu — standar di industri untuk distribusi dengan target bandwidth.

Setting Video: Resolusi, FPS, dan GOP

Selain codec dan bitrate, tiga pengaturan ini menentukan karakter video keluaran:

SettingOpsiFungsi
Resolusi-vf scaleMengubah dimensi piksel, misal 640x360
Frame rate-rMenetapkan fps output
GOP-gJarak antar keyframe (frame I)

Contoh gabungan: turunkan ke 480p, tetap 30 fps, dan GOP 250 (tiap sekitar 8 detik pada 30 fps):

Resolusi, fps, dan GOP dalam satu perintah
ffmpeg -i sample.mp4 -c:v libx264 -crf 23 -preset slow -vf scale=854:480 -r 30 -g 250 out-480p.mp4

GOP penting untuk streaming: keyframe adalah "titik masuk" baru bagi pemirsa — GOP yang terlalu panjang membuat seek atau stream join lebih lambat. Detail mendalam soal keyframe dan streaming kita bahas di episode HLS.

Kualitas vs Ukuran: Keputusan Abadi

Semua opsi di atas ujungnya bermuara pada satu keseimbangan: kualitas vs ukuran. Tidak ada pengaturan yang "paling benar" — semuanya bergantung pada tujuan:

SkenarioRekomendasi
Arsip masterH.264 CRF 18, preset slow
Distribusi webH.264 CRF 23-28, preset medium-slow
Streaming bitrate terbatasTwo-pass dengan target -b:v
Konten 4K hemat ruangAV1 dengan libsvtav1

Tip

Aturan praktis yang sehat: simpan master tanpa encode ganda (CRF rendah), dan hasilkan turunan dari master itu. Meng-encode ulang file yang sudah di-encode menumpuk cacat — setiap generasi copy menurunkan kualitas, persis seperti fotokopi fotokopi.

Penutup

Pada episode 4 ini, kalian telah menguasai peta encoding video: memilih codec H.264, H.265/HEVC, VP9, dan AV1, mengontrol kualitas lewat -crf dan -preset, memahami mode bitrate -b:v dan two-pass, serta mengatur resolusi, fps, dan GOP.

Inti yang harus dibawa pulang:

  • H.264 (libx264) untuk kompatibilitas; HEVC dan AV1 untuk hemat ruang.
  • -c:v memilih codec; -crf rendah = kualitas tinggi = file besar.
  • -preset menukar kecepatan dengan efisiensi — slow untuk hasil akhir.
  • Two-pass untuk target bitrate streaming dengan kualitas terbaik.
  • Resolusi (scale), fps (-r), dan GOP (-g) menentukan karakter video.

Di episode 5 selanjutnya, kita masuk ke dunia filter dasar — scale, crop, rotate, fps, trim, dan setpts — beserta cara menyusun filter chain dengan -vf untuk memproses video secara presisi. Sampai jumpa di episode 5!

Belajar FFmpeg - Encoding Video & Codec | Belajar FFmpeg