(PHP) Mengambil Gambar Dari Video Dengan FFMPEG

FFMPEG Logo

FFMPEG adalah salah satu program yang dikhususkan untuk meng-kostumisasi video atau audio dengan fitur yang sangat lengkap. Saat ini ffmpeg telah banyak digunakan oleh banyak developer untuk pembuatan aplikasi, dan tentunya mendukung di hampir semua bahasa pemrograman. Kali ini Saya hanya akan membagikan cara mengambil gambar yang ada di video dengan bantuan ffmpeg.

Jika pernah tahu, sebuah website yang membagikan video yang diunggah oleh user pasti ada beberapa thumbnail atau cuplikan gambar dari video. Nah cuplikan tersebut bisa jadi didapatkan melalui bantuan ffmpeg. Tidak semua server hosting telah terinstall ffmpeg, terkadang harus menginstall sendiri melalui SSH Shell atau langsung ke root directory.

Kebanyak hosting tidak memberikan akses fungsi exec(), shell_exec(), dan passthru() di PHP karena alasan keamanan. Jadi sebelum menggunakan ffmpeg pastikan fungsi tersebut diaktifkan, sebab ffmpeg bukan sebuah fungsi asli PHP namun sebuah file berbentuk binnary .exe yang dapat merespon dengan bantuan Command, dan di PHP hanya dapat memakai ketiga fungsi yang Saya sebutkan diatas. Untuk mengunduh ffmpeg, bisa langsung menuju situs utama ffmpeg yaitu FFMPEG.ORG.
Jika tidak ada kendala tentang servernya, langsung saja lihat kode dibawah ini.

<?php
$ffmpeg = '/usr/local/bin/ffmpeg';
$video = '/home/user/public_html/video.mkv';
$gambar = '/home/user/public_html/gambar.jpg';
$durasi = '01:30:00';
echo exec("ffmpeg -i $video -deinterlace -an -ss $durasi -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $thumbnail 2>&1");
?>

Penjelasan

$ffmpeg – ubah sesuai directory ffmpeg yang ada pada server. Jika memakai server Linux, jangan diubah.

$video – Ubah sesuai letak direktori video, dan pastikan menggunakan fullpath sesuai contoh diatas.

$gambar – Ubah sesuai letak dimana output gambar akan disimpan. Gunakan fullpath seperti contoh diatas.

$durasi – Ubah sesuai waktu yang diinginkan saat mengambil gambar. Format waktunya adalah jam:menit:detik. Contoh diatas telah diatur untuk 1 jam 30 menit.

exec – Untuk mengeksekusi command line dari ffmpeg. Untuk mengambil gambar hanya fokus pada vcodec mjpeg, dan perintah -ss. Untuk perintah -t adalah durasi tambahan, lebih baik dipakai 1 detik. Sebaiknya jangan ubah apapun dari line ini.

Sebenarnya ada 2 cara lagi yang sama, tapi mungkin akan bingung jika tidak terbiasa menghitung, yakni menggunakan perintah -vframes. Dengan peritah itu dapat mengambil setiap frame (bingkai) dari video dan dapat juga dipakaikan sebagai waktu detik. Tapi menurut Saya masih mudah menggunakan cara yang memakai format jam menit detik. Dan sebenarnya bisa juga ditambah milisecond. Jadi formatnya misalkan akan berbentuk seperti ini: jam:menit:detik.milisecond.
Milisecond (MS) bisa diartikan begini, setiap 1000 MS adalah 1 detik. Jadi 500 MS adalah setengah detik. Mudah bukan ? 😀

Fungsi ffmpeg tidak hanya untuk mengambil gambar saja, tapi dapat melakukan convert video, trim/cut dan lain sebagainya. Jika ada yang ditanyakan tentang diatas silahkan berkomentar. :mrgreen:

Semoga bermanfaat dan Selamat mencoba

1 comment
  1. ckckck bagus bgt mas, tp sayangnya install ffmpeg di vps nya susah, saya gagal terus nyoba install ffmpeg buat web saya.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *