Mengubah Video ke Gif Animasi

3 menit saja |

Wuah lama benar tidak update blog. Tak kerasa sudah akhir tahun Masehi dan akan berganti Tahun.

Kali ini dokumentasi sesuatu yang aku anggap menarik, mungkin bagi banyak orang juga. Yakni mengubah file video menjadi gif menggunakan command line atau pakai baris perintah, yang biasa (dulu) ketika masih pake OS Wind*ws pakai Software GUI.

Karena sudah pakai Linux buat sehari-hari, semua rasa #eh semua kebiasaan telah berubah. Sekarang jadi tambah asyik dan makin asyik hehe..

OK, let’s go!

Video ke GIF

Kita dokumentasikan cara mengkonversi video menjadi Animasi GIF. Tidak terbatas pada mp4 wmv atau lain, tapi hampir semua video (yang codecnya sudah terpasang) dapat di convert.

Kebutuhan

Ok sebelum kita mulai, kita siapkan bahan-bahannya. Aku sendiri sudah serasa gak nginstall apa-apa, karena semua yang dibutuhkan sudah terpasang karena kebutuhan rutin.

Yang perlu diinstall adalah ffmpeg dan imagemagick.

Di ubuntu, tinggal sudo apt install ffmpeg imagemagick

Teknik

Ada 2 langkah yang dilakukan untuk membuat video menjadi animasi gif.

1. Ekstrak Gambar

Misal kita ekstrak video.mp4 menjadi potongan-potongan gambar ke folder frames :

ffmpeg -i video.mp4  -r 5 'frames/frame-%03d.jpg'

Dimana -r 5 dipergunakan untuk nilai FPS (Frame per Second). Silakan diubah-ubah sendiri buat menyesuaikan. FYI, semakin besar nilainya maka kualitasnya semakin bagus.

Sedangkan %03d akan membuat nomor pada format nama file secara berurutan.

2. Mengubah ke GIF

Masuk ke folder frames yang merupakan hasil ekstrak gambar tadi:

cd frames

Kemudian gabungkan semua gambar di dalamnya menjadi animasi GIF:

convert -delay 20 -loop 0 *.jpg animasi.gif

Dimana -delay 20 artinya tiap frame nantinya berdurasi 0.2 detik, sesuai nilai FPS diatas.

Sebagai gambaran patokan nilai:

1 = 100 fps
2 = 50 fps
4 = 25 fps
5 = 20 fps
10 = 10 fps
20 = 5 fps
25 = 4 fps
50 = 2 fps
100 = 1 fps

Nilai di atas tidak wajib, hanya buat perkiraan secara umum saja.

Sedangkan -loop 0 artinya animasi akan bergerak terus menerus alias tidak berhenti.

Ya, hanya begitu saja sebenarnya.

Sudah selesai hehe..

Namun, aku tambahkan contoh kasus real saja biar tambah nampol setelah tips trik.

Tips dan Trik

Dua teknik di atas, akan menghasilkan efek samping yang sebenarnya tidak kita perlukan. Yakni sampah gambar-gambar. Meski ada kalanya gambar tersebut diperlukan, misalnya ingin mereview atau memilih-milih sebelum digabungkan.

Namun, aku termasuk orang yang malas. Pengennya sekali proses aja jadi.

Gabungkan saja semua baris perintah diatas menjadi 1, dan sekaligus tanpa sampah. Tambahin sekalian, compress atau mampatkan file dan ukurannya dimensinya lebih kecil, yakni 320 pixel:

ffmpeg -i video.mp4 -vf scale=320:-1 -r 5 -f image2pipe -vcodec ppm - | convert -delay 20 -loop 0 - animasi.gif

Satu baris perintah, cukup buat aku. Mari kita, lanjutkan untuk dipakai pada contoh berikut ini:

Contoh Kasus

Contoh kali ini, aku ambil secara acak video pendek di youtube. Pake keyword iklan pendek dan ketemulah berikut ini.

Sebuah iklan pendek karya anak-anak SMKN 5 Sijunjung yang berdurasi selama 30 detik.

Kualitas rekamannya bagus, itulah merupakan salah satu alasan kenapa saya ambil sebagai contoh. Namun, karena keperluan gif, nanti kita mampatkan ukuran dan kualitasnya. Tapi tetap tidak mengurangi kenyamanan buat dilihat (meski kecil hehe).

Kita simpan filenya, katakanlah namanya filenya iklanpendek.mp4

Langsung saja aku convert dengan cara pendek seperti pada trik di atas. Sekaligus aku sesuaikan angka-angkanya yang cocok dengan selera saya:

ffmpeg -i iklanpendek.mp4 -vf scale=320:-1 -r 3 -f image2pipe -vcodec ppm - | convert -delay 15 -loop 0 - iklan.gif

Dan hasilnya:

Iklan Animasi GIF

Referensi

Buat menambah ke-maknyus-an dalam convert mengkonvert, berikut ini tambahan informasi yang mungkin sekali sangat dibutuhkan:

Update

Untuk tujuan di upload ke telegram, format GIF sesungguhnya adalah MP4 (video).

Maka lebih sederhana lagi: ffmpeg -i namafile.mp4 namafile.gif.mp4

Hasilnya sudah optimal untuk diupload! :-)

Penutup

Semoga bermanfaat, jangan lupa komentarnya jika sudah membaca ini.. tinggalkan jejak agar saya mengenal kamu dan tahu pendapatmu 😘