Belajar FFmpeg - ffprobe & ffplay
Episode 7 of 23

Belajar FFmpeg - ffprobe & ffplay

Pada episode ini kalian belajar memeriksa detail stream dan format media dengan ffprobe, membaca hasil sebagai JSON untuk scripting, serta memutar dan mem-preview filter secara real-time dengan ffplay.

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

Pendahuluan

Di episode 6 kalian sudah mengolah audio — mengubah codec, bitrate, sample rate, dan menerapkan filter. Tapi bagaimana kalian tahu kalau hasilnya benar? Bagaimana cara membaca isi sebuah file sebelum memutuskan perintah apa yang akan dijalankan? Di sinilah dua alat yang jarang mendapat sorotan ini masuk: ffprobe dan ffplay.

ffprobe adalah alat "membaca MRI" untuk media — ia membedah file tanpa mengubah apa pun dan melaporkan detail stream. ffplay adalah pemutar mini yang bisa menjalankan filter secara real-time. Keduanya adalah mata dan telinga kalian sepanjang sisa series ini.

Mengenal ffprobe

ffprobe membaca file dan mencetak informasi struktur serta metadata. Ia tidak pernah memodifikasi file — aman dijalankan berulang kali. Bayangkan seperti dokter yang memeriksa pasien: pemeriksaan tidak menyakitkan, dan hasilnya menentukan keputusan pengobatan (perintah ffmpeg) yang tepat.

probe-format.sh
ffprobe -v quiet -show_format input.mp4

Output menampilkan duration, bit_rate, format_name, dan metadata lainnya. Ini pemeriksaan pertama yang paling cepat: berapa lama file, seberapa besar bitrate total, format kontainer apa.

Melihat Detail Stream

File media hampir selalu berisi lebih dari satu stream. -show_streams membedah masing-masing: video, audio, subtitle.

probe-streams.sh
ffprobe -v quiet -show_streams input.mp4

Untuk video, kalian akan melihat codec_name, width, height, avg_frame_rate. Untuk audio: codec_name, sample_rate, channels. Output mentahnya panjang; itulah gunanya -select_streams untuk mempersempit dan -show_entries untuk memilih field yang dimau.

probe-video-saja.sh
ffprobe -v quiet -select_streams v -show_entries stream=codec_name,width,height,avg_frame_rate input.mp4
probe-audio-saja.sh
ffprobe -v quiet -select_streams a -show_entries stream=codec_name,sample_rate,channels input.mp4

v dan a adalah singkatan tipe stream. Pola -select_streams v dan -select_streams a ini adalah pasangan yang akan kalian pakai terus-menerus — cepat menjawab pertanyaan "file ini pakai codec apa?"

Output JSON dengan -of json

Pemeriksaan manual itu bagus, tapi untuk scripting kalian butuh format yang bisa diolah mesin. -of json mengubah seluruh laporan menjadi JSON terstruktur — siap dipipakan ke jq seperti yang kalian kenal dari series curl.

probe-json.sh
ffprobe -v quiet -of json -show_format -show_streams input.mp4
probe-jq.sh
ffprobe -v quiet -of json -show_streams input.mp4 | jq -r '.streams[] | "\(.codec_type) \(.codec_name)"'

Baris jq di atas mencetak tipe dan nama codec setiap stream, satu per baris. Dengan JSON, kalian bisa menulis skrip yang otomatis memverifikasi "video harus H.264, audio harus AAC" sebelum build pipeline — pemeriksaan yang sulit dilakukan manual pada ratusan file.

Validasi File dengan ffprobe

ffprobe juga menjadi alat validasi: ia mengembalikan exit code 0 jika file bisa dibaca dengan baik, dan non-zero jika ada kerusakan. Dengan -v error hanya pesan kesalahan yang ditampilkan.

validasi-file.sh
ffprobe -v error -show_format input.mp4 && echo "VALID" || echo "CORRUPT"

Kalau perintah di atas mencetak VALID, file dipastikan terbaca. Untuk menghitung jumlah masalah, arahkan output ke wc -l:

hitung-error.sh
ffprobe -v error -show_format input.mp4 2>&1 | wc -l

Ini sangat berguna di script: file yang tidak lolos validasi dilewati, bukan menghentikan seluruh batch. Kalian akan memakai pola ini di episode 9 saat memproses ratusan file sekaligus.

Tip

-v quiet menekan semua log agar output bersih, sedangkan -v error hanya menampilkan masalah. Untuk debugging yang lebih detail bisa pakai -v verbose — tapi di script, error adalah pilihan paling masuk akal karena mudah diparsing.

ffplay: Pemutar Sekaligus Preview

ffplay adalah pemutar video/audio minimal yang ikut terinstall bersama FFmpeg. Ia bukan pengganti VLC untuk pemakaian sehari-hari, melainkan alat kerja: cepat dipanggil dari terminal, dan mendukung semua filter FFmpeg secara real-time.

putar-video.sh
ffplay input.mp4
putar-audio.sh
ffplay input.mp3

Perintah di atas langsung membuka jendela dan memutar. Tanpa argumen lain, ia memilih stream default — cukup untuk pengecekan cepat.

Kontrol Keyboard ffplay

ffplay bisa dikendalikan penuh dari keyboard. Beberapa tombol yang paling sering dipakai:

TombolFungsi
SpaceJeda / lanjutkan
q atau EscKeluar
/ Maju / mundur 10 detik
/ Maju / mundur 60 detik
wToggle mode deinterlace
mMute / unmute

Menghafal tiga tombol saja sudah cukup produktif: Space untuk jeda, q untuk keluar, dan panah untuk melompat. ffplay bahkan bisa langsung membuka posisi tertentu dengan -ss:

putar-di-detik.sh
ffplay -ss 00:05:00 input.mp4

Preview Filter Real-time

Inilah alasan utama memakai ffplay sebagai alat kerja: kalian bisa menguji -vf dan -af tanpa menunggu re-encode. Kalau di ffmpeg satu percobaan butuh hitungan menit, di ffplay hasilnya terlihat instan.

preview-fv.sh
ffplay -vf "hue=s=0" input.mp4

Perintah di atas memutar video dengan saturasi nol (hitam putih) secara langsung. Begitu kalian puas dengan kombinasi filter, tinggal pindahkan argumen yang sama ke ffmpeg untuk render final.

preview-af.sh
ffplay -af "volume=0.5" input.mp3

Pola kerja ini sangat menghemat waktu: eksperimen di ffplay, produksi di ffmpeg. Tidak ada perbedaan syntax antara -vf/-af di keduanya — apa yang kalian lihat di ffplay adalah apa yang akan dirender.

Important

Ketika mencoba filter yang berat (misalnya scale besar atau beberapa filter berantai), ffplay bisa sedikit laggy di mesin kecil. Itu bukan tanda perintah salah — hanya keterbatasan render real-time. Untuk kepastian, selalu verifikasi hasil akhir dengan render ffmpeg, bukan hanya dari kelancaran preview.

Penutup

Pada episode 7 ini kalian telah menambah dua alat ke sabuk FFmpeg: ffprobe untuk membedah file — -show_format, -show_streams, -select_streams, dan -of json untuk membaca hasil secara terstruktur — serta ffplay untuk memutar dan mem-preview -vf/-af secara real-time dengan kontrol keyboard.

Inti yang perlu dibawa pulang: jangan pernah menebak. Setiap kali menerima file yang tidak dikenal, probe dulu. Setiap kali ingin mencoba filter, preview dulu di ffplay. Dua kebiasaan ini akan mencegah sebagian besar tebakan salah dan render buang waktu.

Di episode 8 selanjutnya kita akan membedah container: apa bedanya MP4, MKV, dan WebM, kapan harus remux tanpa re-encode, serta cara memilih dan memetakan stream dengan -map. Sampai jumpa di episode 8!