Menguasai filter video dasar: scale, crop, rotate, fps, trim, dan setpts, memahami sintaks filter dengan parameter dan opsi, serta menyusun filter chain menggunakan -vf untuk memproses video secara presisi dalam satu perintah.

Setelah di episode 4 kita menguasai encoding video — codec, -crf, bitrate, dan GOP — episode ini menambah satu dimensi baru: filter. Jika encoding menentukan bagaimana video dikompresi, filter menentukan seperti apa videonya sebelum dikompresi.
Ingat pipeline dari episode 2: Demux -> Decode -> Filter -> Encode -> Mux. Filter hidup di tengah, setelah video di-decode menjadi frame mentah dan sebelum di-encode kembali. Di sanalah kalian bisa mengubah ukuran, memotong bagian, memutar, atau mengubah kecepatan — semua sebelum encode.
Filter adalah prosesor frame tunggal: ia menerima satu frame, mengolahnya, lalu menghasilkan satu frame keluaran. libavfilter — library yang kita kenal di episode 2 — adalah mesin di baliknya.
Analoginya seperti fotografer studio yang menyentuh setiap foto satu per satu sebelum cetak: ubah ukuran, crop, putar, atur pencahayaan. FFmpeg melakukan itu untuk ribuan frame per detik dengan satu perintah.
Sebuah filter ditulis dalam bentuk nama_filter=opsi. Opsi bisa berupa:
| Bentuk | Contoh | Arti |
|---|---|---|
| Nilai tunggal | scale=640 | Tetapkan satu parameter pertama |
| Dua nilai | scale=640:360 | Parameter dipisah titik dua |
| Nama-nilai | scale=w=640:h=360 | Opsi disebut eksplisit |
| Ekspresi | rotate=45*PI/180 | Nilai bisa berupa ekspresi |
Important
Hati-hati dengan dua pemisah yang mudah tertukar: titik dua (:) memisahkan opsi dalam satu filter, sedangkan koma (,) memisahkan antar filter. Mengubah salah satunya akan membuat filtergraph gagal parse.
Filter dipasang ke opsi -vf (video filter) pada bagian output:
ffmpeg -i sample.mp4 -vf scale=640:360 out-640.mp4Perintah ini mengubah semua frame menjadi 640x360 sebelum encode — tidak peduli resolusi aslinya.
ffmpeg -i sample.mp4 -vf scale=480:-1 out-480.mp4-1 membuat FFmpeg menghitung sisi satunya agar proporsi tetap: lebar 480 menghasilkan tinggi yang menyesuaikan rasio asli video. Cara ini jauh lebih aman daripada memaksakan scale=480:360, yang akan mengubah bentuk gambar.
ffmpeg -i sample.mp4 -vf crop=640:360 out-crop.mp4Format crop=lebar:tinggi:x:y. Koordinat x:y menandai sudut kiri atas area potongan; tanpa koordinat, FFmpeg memotong dari tengah. Crop seperti memotong foto dengan gunting — piksel di luar area dibuang.
ffmpeg -i sample.mp4 -vf rotate=PI/2 out-rotated.mp4rotate menerima nilai dalam radian — PI/2 sama dengan 90 derajat. Nilai ini adalah ekspresi yang dihitung FFmpeg, jadi rotate=45*PI/180 akan memutar tepat 45 derajat.
ffmpeg -i sample.mp4 -vf fps=15 out-fps15.mp4Filter fps menghitung ulang frame rate: frame digandakan atau dibuang agar cocok dengan target. Bedanya dengan opsi -r di episode 4: -vf fps memengaruhi frame sebelum encode, sementara -r bekerja pada tahap output.
Ada dua pendekatan memotong durasi. Cara cepatnya dengan opsi input -ss, cara presisi dengan filter trim:
ffmpeg -ss 00:00:00 -t 5 -i sample.mp4 -c copy potong.mp4ffmpeg -i sample.mp4 -vf trim=start=2:end=8,setpts=PTS-STARTPTS potong-presisi.mp4Keduanya mengubah durasi, tapi dengan cara berbeda. -ss di depan -i membuat FFmpeg melompat langsung ke detik ke-0 lalu mengambil 5 detik — cepat, pas untuk potongan kasar. trim memproses frame dan butuh setpts untuk me-reset timestamp setelah pemotongan.
ffmpeg -i sample.mp4 -vf setpts=PTS/2,scale=640:-1 out-fast.mp4setpts menggeser timestamp frame. PTS/2 mempercepat dua kali (setengah timestamp = frame tampil lebih cepat); PTS*2 memperlambat. Ini filter yang hampir selalu muncul berpasangan dengan trim untuk membersihkan timestamp.
Filter bisa digabung dengan koma — output filter pertama menjadi input filter berikutnya:
ffmpeg -i sample.mp4 -vf scale=480:-1,fps=15,setpts=PTS/2 out-chain.mp4Urutannya dibaca dari kiri ke kanan: resize ke 480p, paksa 15 fps, lalu percepat 2 kali. Urutan penting: resize dulu baru proses lain, sehingga setiap filter bekerja pada frame dengan ukuran yang diharapkan. Filter chain seperti jalur produksi — setiap stasiun mengerjakan satu tugas sebelum diteruskan.
Tip
Cek filter apa saja yang tersedia dengan ffmpeg -filters — daftarnya ratusan. Untuk sekarang, kuasai lima filter di atas sampai hafal, karena kelimanya adalah fondasi untuk filtergraph kompleks di episode-episode berikutnya.
Pada episode 5 ini, kalian telah menguasai filter video dasar: sintaks filter dengan parameter dan opsi, enam filter penting — scale, crop, rotate, fps, trim, dan setpts — serta menyusun filter chain dengan -vf.
Inti yang harus dibawa pulang:
-vf pada bagian output.scale untuk ukuran, crop untuk memotong area, rotate untuk memutar.trim/-ss memotong durasi; setpts mengatur timestamp dan kecepatan.Di episode 6 selanjutnya, kita akan membahas audio processing — filter audio seperti volume, fade, aecho, dan amix, resampling, normalisasi, serta cara menukar dan menggabungkan jalur audio. Sampai jumpa di episode 6!