Video ke GIF - Pembuat GIF Animasi Online — Ubah klip video menjadi GIF animasi yang berulang dengan frame rate, lebar, dan kualitas palet pilihan Anda. GIF adalah format terbuka yang telah lama ada dan dipahami hampir setiap perangkat dan platform obrolan. Semua pemrosesan dilakukan secara lokal di browser, dan berkas tidak pernah diunggah ke server.
Input yang didukung: WebM, OGV (Ogg Video), MKV, AVI, GIF, WebP, APNG, dan format video umum lainnya. Semua dikonversi secara lokal di browser; berkas tidak pernah diunggah ke server.
Penggunaan pertama memuat mesin pemrosesan video sekitar 30MB ke browser saat ini. Mesin itu di-cache dan digunakan kembali setelahnya, jadi mohon bersabar.
🎥
Klik untuk memilih atau seret dan lepas berkas video
Mendukung WebM, OGV, MKV, AVI, GIF, dan format video umum lainnya; disarankan di bawah 500MB
Frame rate:lebih tinggi = lebih halus tetapi berkas lebih besar
Lebar maksimum:diskalakan otomatis untuk mempertahankan rasio aspek
Warna palet:warna lebih sedikit = berkas lebih kecil, sedikit penurunan kualitas
Konversi GIF animasi: mengekstrak frame pada frame rate yang dipilih, menskalakan ke lebar maksimum, dan membangun palet warna yang dioptimalkan untuk pengulangan. Trek audio (jika ada) dibuang.
Mengapa GIF begitu besar? Palet, dithering, dan format 1987 yang ikut berperan sebagai video
GIF (Graphics Interchange Format, 1987) dirancang sebagai format gambar diam dengan bonus animasi kecil, dan itu terlihat. Dua sifat menentukan segalanya di halaman ini: setiap frame dibatasi pada 256 warna yang dipilih dari palet yang tersimpan, dan frame dikompresi dengan LZW — pemadat byte serba guna dari era zip — yang tidak tahu bahwa sebuah video sedang disimpan. Tidak ada kompensasi gerak, tidak ada aritmetika "frame ini sebagian besar sama dengan frame sebelumnya" seperti codec video sungguhan; setiap frame pada dasarnya adalah gambar yang dikompresi secara individual. Memahami palet adalah kunci untuk mendapatkan GIF yang kecil dan tampak bagus.
Lima fakta sebagai jangkar untuk sisa halaman ini:
• setiap frame memuat paling banyak 256 warna (28) dari sebuah palet; video warna sebenarnya harus dikuantisasi turun
• dithering memalsukan warna yang hilang dengan menyebarkan titik dari entri palet tetangga — berkas lebih besar, gradien lebih halus
• waktu frame disimpan dalam satuan 10 ms: 10 fps → delay 10 (100 ms); batas praktis adalah delay 2 (20 ms = 50 fps)
• frame dikompresi LZW secara independen — tidak adanya kompresi antarframe adalah pembunuh ukuran nomor 1
• warna lebih sedikit, frame lebih sedikit, dimensi lebih kecil: setiap pengaturan memperkecil masukan LZW, dan efeknya berlipat
Palet 256 warna dan banding
Piksel video warna sebenarnya membutuhkan 24 bit (16,7 juta kemungkinan); piksel GIF adalah indeks 8-bit ke dalam tabel berisi paling banyak 256 warna. Maka konversi video ke GIF menjalankan kuantisasi palet: pilih 256 warna yang paling mewakili konten, lalu tempelkan setiap piksel ke warna terdekat. Gradien membayar harganya — langit yang membutuhkan 4.000 biru yang sedikit berbeda hanya mendapat 30 di antaranya, dan gradasi halus itu runtuh menjadi garis-garis yang terlihat yang disebut banding. Grafis datar berkontras tinggi (logo, sprite game, bagan) hampir tidak terpengaruh; foto dan video paling parah terdampak. Kualitas palet sebuah konverter merupakan bagian besar dari kualitas keluarannya.
Dithering: menukar noise dengan kehalusan
Dithering adalah perbaikan klasik untuk banding: alih-alih menempelkan setiap piksel ke warna palet terdekat, sebarkan campuran dari dua warna terdekat sehingga rata-rata pada area kecil cocok dengan nada asli. Gradien tampak jauh lebih halus — garis-garis larut menjadi noise halus yang dibaur mata pada jarak pandang normal. Harganya adalah ukuran berkas: noise adalah detail frekuensi tinggi, dan LZW jauh lebih baik mengompresi garis-garis teratur daripada titik-titik tersebar. Itulah pertukaran dasar GIF yang diperlihatkan halaman ini: matikan dithering untuk berkas lebih kecil dengan banding, nyalakan untuk gradien halus dengan premi ukuran.
Waktu frame: batas bawah 20 ms
GIF menyimpan jeda antarframe dalam satuan 1/100 detik. 10 fps berarti delay 10 (100 ms per frame); 20 fps berarti delay 5 (50 ms). Nilai berguna terkecil adalah 2 (20 ms, yaitu 50 fps), dan dalam praktiknya sebagian besar peramban membatasi apa pun di bawah itu menjadi 100 ms — meminta 60 fps diam-diam menghasilkan pemutaran yang lebih lambat. Di atas batas itu, setiap kenaikan fps melipatgandakan jumlah frame: 15 fps → 50 fps untuk klip yang sama berarti lebih dari tiga kali lipat frame, dan ukuran GIF kira-kira berbanding lurus dengan jumlah frame. Klip 10 detik pada 15 fps berjumlah 150 frame; pada 50 fps akan menjadi 500.
Mengapa GIF membengkak dibandingkan video sungguhan
Codec video modern menghabiskan sebagian besar bitnya untuk mendeskripsikan perubahan antarframe — kamera yang terkunci membuat frame berikutnya hampir tanpa biaya. LZW pada GIF memandang setiap frame sebagai gambar baru (satu-satunya trik antarframe-nya adalah bendera transparansi yang melewati piksel yang identik dengan frame sebelumnya, yang jauh kurang membantu dibandingkan kompensasi gerak sungguhan). Aturan praktisnya: untuk klip yang sama, perkirakan GIF akan berkali-kali lebih besar daripada WebM yang dienkode dengan baik pada resolusi yang sama. Jika tujuan menerima video sungguhan, utamakan itu; GIF unggul hanya saat universalitas dan perilaku putar-otomatis/ulang-nya penting.
Kesalahpahaman umum
"GIF dikompresi, jadi efisien untuk video." LZW adalah pemadat tingkat byte dari 1987 tanpa model gerakan; untuk rekaman yang bergerak, ini adalah format yang paling tidak efisien di antara format yang luas dipakai di web.
"Sumber 60 fps, jadi GIF juga seharusnya demikian." Batas bawah delay 20 ms membatasi GIF hingga 50 fps, dan peramban menaikkan delay yang lebih rendah dari batas itu. Kesetiaan frame demi frame bukanlah sesuatu yang dapat diberikan GIF.
"Dithering hanyalah noise yang sebaiknya dimatikan." Ini adalah pertukaran kualitas/ukuran yang disengaja: mati menghasilkan berkas lebih kecil dengan banding, nyala menghasilkan gradien halus yang memakan byte.
"Warna yang lebih sedikit selalu tampak buruk." Untuk grafis datar dan animasi kontras tinggi, bahkan 64 warna dapat tampak sama dengan 256 — dan memperkecil berkas lebih jauh.
Alat terkait: Video ke WebP/APNG untuk animasi warna sebenarnya dengan kompresi sungguhan, GIF ke Video untuk arah sebaliknya (palet ke warna sebenarnya), Video ke WebM untuk klip yang sama sebagai video sungguhan, dan Pemotong Video untuk memangkas sumber sebelum dikonversi.