Pada artikel sebelumnya telah dibahas beberapa tip penggunaan opsi mplayer, perangkat lunak pemutar video di Linux berbasis command-line. Dengan opsi -ss <detik> untuk memulai pemutaran pada detik tertentu, opsi -frames <n> untuk hanya memutar sekian buah frame saja, dan opsi -vo jpeg untuk menghasilkan keluaran file JPEG, kita dapat membuat screenshot atau thumbnail sebuah video pada posisi tertentu.

Selain thumbnail tunggal, dikenal juga istilah thumbnail sheet (lembar thumbnail) yang berisi susunan thumbnail video pada beberapa posisi tertentu, sehingga jika dilihat akan dengan cepat memberikan gambaran apa isi sebuah video. Beberapa situs video seperti Google Video sudah memberikan opsi untuk menayangkan thumbnail sheet ini.

Contoh thumbnail sheet dapat dilihat di Gambar 1.

Contoh thumbnail sheet My CMS

Artikel ini akan memberikan contoh penggunaan mplayer dibantu dengan ImageMagick dan sekitar 200 kurang baris skrip Perl untuk membuat generator thumbnail sheet. Sebetulnya sudah terdapat perangkat lunak lain, seperti beberapa pemutar video atau penampil gambar yang mampu menghasilkan thumbnail sheet ini. Namun kita akan mendemokan penggunaan mplayer dan juga membahas beberapa konsep/trik dalam membuat thumbnail sheet.

Listing skrip Perl dapat dilihat pada Listing 1.

Pembahasan skrip

Pada dasarnya, prinsip kerja skrip ini sederhana saja. Untuk setiap file video yang ingin diproses, kita cari tahu dulu panjang total videonya (dalam detik), lalu menggunakan mplayer kita ambil N buah screenshot pada posisi-posisi sepanjang video ini secara merata. Setelah itu, dengan bantuan ImageMagick (tepatnya program command-line montage) screenshot ini kita gabung (montase) ke dalam satu gambar besar.

Untuk menentukan panjang total video, kita memanggil mplayer dan mencoba menskip jauh ke depan (opsi -ss 99999, baris 108). Mplayer akan melaporkan panjang video dalam output teksnya.

Kesulitan muncul kala sebuah file video tidak dapat ditentukan, yang kadang-kadang dapat saja terjadi bergantung proses enkode file video tersebut. Dalam kasus tersebut mplayer tidak melaporkan panjang dan kita perlu melakukan pengira-ngiraan panjang video ini menggunakan metode biner (baris 139-161).

Lalu yang perlu dikemukakan juga adalah trik dalam menghasilkan screenshot. Kita tidak dapat hanya menggunakan -frames 1, karena bisa saja saat seek ke posisi tertentu menggunakan -ss (dalam satuan detik) kita tidak tiba pada keyframe. Pada saat itu kita tidak memperoleh gambar secara keseluruhan. Maka triknya adalah dengan mengambil beberapa frame, dan mengambil file .jpg frame terakhir (yang gambarnya paling sempurna). Barulah kemudian satu per satu file .jpg yang telah dikumpulkan dirangkai jadi satu dan nanti dihapus kembali karena tidak lagi diperlukan.

Dalam membuat montase, kita tinggal menggunakan perhitungan aritmetika sederhana untuk memperkecil tiap file .jpg agar menjadi sel thumbnail dalam thumbnail sheet (baris 181-184).

Menggunakan skrip

Agar dapat menggunakan skrip ini, Anda membutuhkan ImageMagick, Mplayer (beserta semua codec yang diperlukan), dan juga sebuah modul CPAN untuk Perl bernama File::Type. Di Ubuntu Anda dapat menginstal ini semua dengan perintah:

$ sudo apt-get install mplayer imagemagick libfile-type-perl

Setelah itu seperti biasa ketiklah skrip ini (atau ambillah kode sumber skrip ini dari homepage penulis) dan lakukan chmod +x agar dapat dieksekusi.

Untuk menghasilkan thumbnail sheet video menggunakan skrip ini, panggillah dengan menyebutkan satu atau lebih file video yang diinginkan:

$ ./genvthumbs film1.rmvb "film kedua.avi"

Karena level logging pada skrip adalah $DEBUG, maka Anda akan melihat banyak output diagnostik. Untuk mengurangi kebawelan ini, silakan ganti $DEBUG di baris 61 menjadi $INFO atau $WARN misalnya.

Skrip yang penulis tulis ini dapat menghasilkan thumbnail sheet untuk semua jenis video yang dapat dimainkan oleh Mplayer. Skrip juga sudah mengerti beberapa opsi command-line. Opsi –output mengatur nama file gambar thumbnail sheet yang dihasilkan, defaultnya adalah <nama-file-video>.jpg. Opsi –rows dan –cols mengatur jumlah baris dan kolom thumbnail yang diinginkan (contoh: –rows 6 –cols 4 akan menghasilkan 24 thumbnail yang disusun dalam 6 baris dan 4 kolom). Opsi –width mengatur ukuran (dalam piksel) sheet, defaultnya 1024. Opsi –skip-if-exists akan menghindari generasi ulang thumbnail sheet jika file bernama sama sudah ada.

Gunakan opsi –help untuk melihat bantuan.

Anda dipersilakan mengembangkan sendiri skrip ini jika berminat, misalnya dengan menambah opsi untuk menulis judul atau posisi tiap thumbnail pada sheet, dsb.