Videoyu GIF'e Dönüştür

Video'dan GIF'e - Çevrimiçi Animasyonlu GIF Yapıcı — Bir video klibi, seçtiğiniz kare hızı, genişlik ve palet kalitesiyle döngüleyen animasyonlu bir GIF'e dönüştürün. GIF, neredeyse her cihaz ve sohbet platformunun anladığı uzun süredir var olan açık bir biçimdir. Her şey tarayıcınızda yerel olarak işlenir, dosyalar hiçbir sunucuya yüklenmez.
Desteklenen girdi: WebM, OGV (Ogg Video), MKV, AVI, GIF, WebP, APNG ve diğer yaygın video biçimleri. Her şey tarayıcınızda yerel olarak dönüştürülür; dosyalar hiçbir sunucuya yüklenmez.
İlk kullanımda geçerli tarayıcıya yaklaşık 30 MB'lık bir video işleme motoru yüklenir. Önbelleğe alınır ve sonradan yeniden kullanılır, bu yüzden sabırlı olun.
🎥
Bir video dosyası seçmek için tıklayın ya da sürükleyip bırakın
WebM, OGV, MKV, AVI, GIF ve diğer yaygın biçimleri destekler; 500 MB'ın altı önerilir
Kare hızı: yüksek = daha pürüzsüz ama daha büyük dosya
En fazla genişlik: en-boy oranını korumak için otomatik ölçeklenir
Palet renkleri: daha az renk = daha küçük dosya, hafif kalite kaybı
Animasyonlu GIF dönüşümü: seçilen kare hızında kareleri çıkarır, en fazla genişliğe ölçekler ve döngü için optimize edilmiş bir renk paleti oluşturur. Ses parçası (varsa) atılır.
GIF'ler neden bu kadar büyük? Paletler, dithering ve video işi gören 1987 biçimi

GIF (Graphics Interchange Format, 1987), küçük bir animasyon bonusu olan bir durağan görüntü biçimi olarak tasarlandı ve bu belli oluyor. Bu sayfadaki her şeyi yöneten iki özellik var: her kare, saklanan bir paletten seçilen en fazla 256 renkle sınırlıdır ve kareler, zip çağının genel amaçlı bir bayt sıkıştırıcısı olan LZW ile sıkıştırılır — bir videonun saklandığını hiç bilmez. Gerçek video kodeklerindeki gibi hareket telafisi, "bu kare çoğunlukla önceki kare" aritmetiği yoktur; her kare esasen ayrı ayrı sıkıştırılmış bir resimdir. Küçük, iyi görünen GIF'ler elde etmenin anahtarı paleti anlamaktır.

Sayfanın geri kalanını sabitlemek için beş gerçek:
• her kare bir paletten en fazla 256 renk (28) taşır; gerçek renkli video aşağı nicemlenmelidir
• dithering eksik renkleri komşu palet girdilerinin noktalarını serpiştirerek taklit eder — daha büyük dosyalar, daha pürüzsüz geçişler
• kare zamanlaması 10 ms birimlerinde saklanır: 10 fps → gecikme 10 (100 ms); pratik taban gecikme 2'dir (20 ms = 50 fps)
• kareler bağımsız olarak LZW ile sıkıştırılır — kareler arası sıkıştırmanın olmaması 1 numaralı boyut katilidir
• daha az renk, daha az kare, daha küçük boyutlar: her düğme LZW girdisini küçültür ve etki çarpılır
256 renkli palet ve bantlanma

Gerçek renkli bir video pikseli 24 bit (16,7 milyon olasılık) gerektirir; bir GIF pikseli en fazla 256 renklik bir tabloya 8 bitlik bir indekstir. Bu nedenle bir videoyu GIF'e dönüştürmek palet nicemlemesi çalıştırır: içeriği en iyi temsil eden 256 rengi seçin, sonra her pikseli en yakınına çekin. Geçişler bedelini öder — birbirinden hafifçe farklı 4.000 mavi gerektiren bir gökyüzü bunların 30'unu alır ve pürüzsüz geçiş bantlanma denen görünür çizgilere çöker. Yüksek kontrastlı düz grafikler (logolar, oyun sprite'ları, grafikler) neredeyse fark etmez; fotoğraflar ve video en çok etkilenir. Bir dönüştürücünün palet kalitesi, çıktı kalitesinin büyük bir parçasıdır.

Dithering: gürültüyü pürüzsüzlüğe karşılık vermek

Dithering, bantlanmanın klasik çözümüdür: her pikseli en yakın palet rengine çekmek yerine, küçük bir alan üzerindeki ortalamanın özgün tonla eşleşmesi için iki en yakın rengin bir karışımını serpiştirin. Geçişler çarpıcı biçimde daha pürüzsüz görünür — çizgiler, normal izleme mesafesinde göz tarafından karıştırılan ince bir gürültüye dağılır. Bedeli dosya boyutudur: gürültü yüksek frekanslı ayrıntıdır ve LZW düzenli çizgileri, serpiştirilmiş noktalardan çok daha iyi sıkıştırır. Bu sayfanın ortaya koyduğu temel GIF takasıdır: daha küçük dosyalar için dithering'i kapatın (bantlanmayla), boyut primi karşılığında pürüzsüz geçişler için açın.

Kare zamanlaması: 20 ms tabanı

GIF, kareler arasındaki gecikmeyi 1/100 saniye birimlerinde saklar. 10 fps gecikme 10 demektir (kare başına 100 ms); 20 fps gecikme 5 demektir (50 ms). En küçük kullanışlı değer 2'dir (20 ms, yani 50 fps), ve pratikte çoğu tarayıcı bunun altındaki her şeyi 100 ms'ye kıstırır — 60 fps istemek sessizce daha yavaş oynatma üretir. Tabanın ötesinde, her fps artışı kare sayısını çarpar: aynı klip için 15 fps→50 fps üç kattan fazla kare demektir ve GIF boyutu kare sayısıyla kabaca doğrusal ölçeklenir. 15 fps'de 10 saniyelik bir klip 150 karedir; 50 fps'de 500 olurdu.

GIF'ler gerçek videoya kıyasla neden şişer

Modern video kodekleri bitlerinin çoğunu kareler arasındaki değişimi tanımlamaya harcar — kilitli bir kamera, sonraki karelerin neredeyse hiç maliyeti olmadığı anlamına gelir. GIF'in LZW'si her kareyi taze bir resim olarak görür (tek kareler arası numarası, önceki kareyle aynı pikselleri atlayan bir saydamlık bayrağıdır, bu gerçek hareket telafisinden çok daha az yardımcı olur). Pratik kural: aynı klip için, aynı çözünürlükte iyi kodlanmış bir WebM'den çok kat daha büyük bir GIF bekleyin. Hedef gerçek videoyu kabul ediyorsa onu tercih edin; GIF yalnızca evrenselliğinin ve otomatik oynatma/döngü davranışının önemli olduğu yerlerde kazanır.

Yaygın yanlış anlamalar
  • "GIF sıkıştırılmıştır, bu yüzden video için verimlidir." LZW, hareket modeli olmayan 1987'den bir bayt düzeyi sıkıştırıcıdır; hareketli görüntüler için web'de yaygın olarak kullanılan en verimsiz biçimdir.
  • "Kaynağım 60 fps, bu yüzden GIF de öyle olmalı." 20 ms gecikme tabanı GIF'i 50 fps ile sınırlar ve tarayıcılar taban altındaki gecikmeleri yukarı kıstırır. Kare kare sadakat GIF'in sunabileceği bir şey değildir.
  • "Dithering kapatılması gereken bir gürültüdür." Bu kasıtlı bir kalite/boyut takasıdır: kapalıysa bantlanmalı daha küçük dosyalar, açıksa bayt maliyetli pürüzsüz geçişler verir.
  • "Daha az renk her zaman berbat görünür." Düz grafikler ve yüksek kontrastlı animasyonlar için 64 renk bile 256 ile aynı görünebilir — ve dosyayı daha da küçültür.

İlgili araçlar: gerçek sıkıştırmalı renkli animasyon için Video'dan WebP/APNG'ye, tersi yön için (paletten gerçek renge) GIF'ten Videoya, aynı klibi gerçek video olarak Video'dan WebM'e ve dönüştürmeden önce kaynağı kırpmak için Video Kesici.