Video do GIF

Video do GIFu — online tvůrce animovaných GIFů — proměňte videoklip na smyčkovaný animovaný GIF s vybranou snímkovou frekvencí, šířkou a kvalitou palety. GIF je dlouhodobý otevřený formát, kterému rozumí téměř každé zařízení a chatovací platforma. Vše se zpracovává lokálně ve vašem prohlížeči, soubory se nikdy nenahrávají na server.
Podporovaný vstup: WebM, OGV (Ogg Video), MKV, AVI, GIF, WebP, APNG a další běžné video formáty. Vše se převádí lokálně ve vašem prohlížeči; soubory se nikdy nenahrávají na server.
První použití načte do aktuálního prohlížeče zpracovatelský engine videa o velikosti ~30 MB. Poté se uloží do mezipaměti a znovu použije, proto prosím vydržte.
🎥
Klikněte pro výběr nebo přetáhněte video soubor
Podporuje WebM, OGV, MKV, AVI, GIF a další běžné formáty; doporučeno do 500 MB
Snímková frekvence: vyšší = plynulejší, ale větší soubor
Maximální šířka: automaticky přepočítáno tak, aby se zachoval poměr stran
Barvy palety: méně barev = menší soubor, mírná ztráta kvality
Převod na animovaný GIF: vybere snímky při zvolené snímkové frekvenci, změní měřítko na maximální šířku a sestaví optimalizovanou barevnou paletu pro smyčku. Zvuková stopa (pokud je) se zahodí.
Proč jsou GIFy tak velké? Palety, dithering a formát z roku 1987, který dělá práci videa

GIF (Graphics Interchange Format, 1987) vznikl jako formát pro statické obrázky s malým bonusem v podobě animace, a je to znát. Dvě vlastnosti řídí vše na této stránce: každý snímek je omezen na 256 barev vybraných z uložené palety a snímky se komprimují pomocí LZW — obecného kompresoru bajtů z dob zipu — který nemá tušení, že se ukládá video. Chybí kompenzace pohybu, žádná aritmetika typu „tento snímek je z větší části předchozí snímek“, jaké používají skutečné video kodeky; každý snímek je v podstatě samostatně komprimovaný obrázek. Pochopení palety je klíčem k malým a dobře vypadajícím GIFům.

Pět faktů, o které se opírá zbytek této stránky:
• každý snímek nese nejvýše 256 barev (28) z palety; barevné video se musí kvantovat na menší sadu
• dithering simuluje chybějící barvy rozptýlením teček sousedních položek palety — větší soubory, plynulejší přechody
• časování snímků se ukládá v jednotkách 10 ms: 10 fps → zpoždění 10 (100 ms); praktická spodní hranice je zpoždění 2 (20 ms = 50 fps)
• snímky se komprimují LZW nezávisle — nejčastější příčinou velikosti je absence komprese mezi snímky
• méně barev, méně snímků, menší rozměry: každý z těchto parametrů zmenšuje vstup LZW a účinky se násobí
Paleta 256 barev a pruhování

Pixel barevného videa potřebuje 24 bitů (16,7 milionu možností); pixel GIFu je 8bitový index do tabulky nejvýše 256 barev. Převod videa na GIF proto probíhá přes kvantizaci palety: vyberte 256 barev, které nejlépe reprezentují obsah, a každý pixel přichytněte k nejbližší z nich. Přechody platí cenu — obloha, která potřebuje 4 000 mírně odlišných modrých, dostane 30 z nich a plynulý přechod se zhroutí do viditelných pruhů zvaných pruhování. Grafika s vysokým kontrastem (loga, herní sprajty, grafy) to téměř nepozná; fotografie a video jsou zasaženy nejvíce. Kvalita palety převodníku je velkou částí kvality výstupu.

Dithering: výměna šumu za plynulost

Dithering je klasická náprava pruhování: místo přichycení každého pixelu k nejbližší barvě palety se rozptýlí směs dvou nejbližších barev, takže průměr přes malou oblast odpovídá původnímu tónu. Přechody vypadají dramaticky plynuleji — pruhy se rozpustí do jemného šumu, který oko při běžné vzdálenosti sledování slije. Cenou je velikost souboru: šum je vysokofrekvenční detail a LZW komprimuje pravidelné pruhy mnohem lépe než rozptýlené tečky. To je základní kompromis GIFu, který tato stránka odhaluje: vypnutí ditheringu dá menší soubory s pruhováním, zapnutí plynulé přechody za prémii v podobě velikosti.

Časování snímků: 20ms spodní hranice

GIF ukládá prodlevu mezi snímky v jednotkách 1/100 sekundy. 10 fps znamená zpoždění 10 (100 ms na snímek); 20 fps znamená zpoždění 5 (50 ms). Nejmenší užitečná hodnota je 2 (20 ms, tedy 50 fps) a v praxi většina prohlížečů zvedne cokoli pod to na 100 ms — požadavek 60 fps tiše vytvoří pomalejší přehrávání. Nad spodní hranicí každé zvýšení fps násobí počet snímků: 15 fps → 50 fps pro tentýž klip znamená více než třikrát více snímků a velikost GIFu roste zhruba lineárně s počtem snímků. Desetisekundový klip při 15 fps má 150 snímků; při 50 fps by jich bylo 500.

Proč GIFy nabobtnají ve srovnání se skutečným videem

Moderní video kodeky utrácejí většinu bitů za popis změny mezi snímky — zafixovaná kamera znamená, že pozdější snímky stojí téměř nic. LZW GIFu vidí každý snímek jako čerstvý obrázek (jeho jediný trik mezi snímky je příznak průhlednosti, který přeskočí pixely shodné s předchozím snímkem, a pomáhá mnohem méně než skutečná kompenzace pohybu). Praktické pravidlo: u stejného klipu očekávejte, že GIF bude mnohonásobně větší než dobře zakódovaný WebM při stejném rozlišení. Pokud cílová platforma přijímá skutečné video, dejte přednost jemu; GIF vyhrává jen tam, kde záleží na jeho všudypřítomnosti a chování automatického přehrávání a smyčky.

Časté omyly
  • „GIF je komprimovaný, takže je pro video efektivní.“ LZW je kompresor na úrovni bajtů z roku 1987 bez modelu pohybu; u pohybujících se záběrů je to nejméně účinný široce používaný formát na webu.
  • „Můj zdroj má 60 fps, takže GIF by je měl mít také.“ Spodní hranice zpoždění 20 ms omezuje GIF na 50 fps a prohlížeče zpoždění pod touto hranicí zvedají nahoru. Věrnost snímek po snímku GIF nezajistí.
  • „Dithering je jen šum, který by se měl vypnout.“ Je to záměrný kompromis kvality a velikosti: vypnutý dává menší soubory s pruhováním, zapnutý plynulé přechody, které stojí bajty.
  • „Méně barev vždy vypadá hrozně.“ U plochých grafik a animací s vysokým kontrastem mohou vypadat 64 barev stejně jako 256 — a soubor ještě zmenší.

Související nástroje: Video do WebP/APNG pro animaci v reálných barvách se skutečnou kompresí, GIF na video pro opačný směr (paleta na reálné barvy), Video na WebM pro tentýž klip jako skutečné video a Střih videa pro oříznutí zdroje před převodem.