Video în GIF

Video în GIF — creator online de GIF-uri animate — Transformă un clip video într-un GIF animat în buclă, cu rata de cadre, lățimea și calitatea paletei alese. GIF este un format deschis de mult timp, înțeles de practic orice dispozitiv și platformă de chat. Totul se prelucrează local, în browser, fișierele nefiind niciodată încărcate pe un server.
Intrare suportată: WebM, OGV (Ogg Video), MKV, AVI, GIF, WebP, APNG și alte formate video comune. Totul se convertește local, în browser; fișierele nu se încarcă niciodată pe un server.
Prima utilizare încarcă în browserul curent un motor de procesare video de aproximativ 30 MB. Acesta este memorat în cache și reutilizat după aceea, așa că este nevoie de răbdare.
🎥
Se face clic pentru a selecta sau se trage și se lasă un fișier video
Acceptă WebM, OGV, MKV, AVI, GIF și alte formate comune; se recomandă sub 500 MB
Rată de cadre: mai mare = mai neted, dar fișier mai mare
Lățime maximă: scalat automat pentru a păstra proporțiile
Culori în paletă: mai puține culori = fișier mai mic, ușoară pierdere de calitate
Conversie în GIF animat: extrage cadrele la rata de cadre aleasă, scalează la lățimea maximă și construiește o paletă de culori optimizată pentru buclă. Pista audio (dacă există) este eliminată.
De ce sunt GIF-urile atât de mari? Palete, tramare și formatul din 1987 care face treabă de video

GIF (Graphics Interchange Format, 1987) a fost conceput ca format de imagine statică cu un mic bonus de animație, și se vede. Două proprietăți determină tot ce este pe această pagină: fiecare cadru este limitat la 256 de culori alese dintr-o paletă stocată, iar cadrele sunt comprimate cu LZW — un compresor general de octeți din epoca zip-ului — care nu știe că se stochează un videoclip. Nu există compensare a mișcării, nicio aritmetică de tipul „acest cadru este în mare parte cadrul anterior”, ca în codecurile video reale; fiecare cadru este practic o imagine comprimată individual. Înțelegerea paletei este cheia pentru GIF-uri mici și arătoase.

Cinci fapte care ancorează restul paginii:
• fiecare cadru conține cel mult 256 de culori (28) dintr-o paletă; videoclipul în culori reale trebuie cuantizat la acest număr
• tramarea simulează culorile lipsă prin împrăștierea de puncte din intrările vecine ale paletei — fișiere mai mari, gradienți mai netezi
• cadența cadrelor se stochează în unități de 10 ms: 10 fps → întârziere 10 (100 ms); limita practică este întârzierea 2 (20 ms = 50 fps)
• cadrele sunt comprimate LZW independent — lipsa compresiei între cadre este cauza nr. 1 a dimensiunii mari
• mai puține culori, mai puține cadre, dimensiuni mai mici: fiecare reglaj micșorează intrarea LZW, iar efectul se multiplică
Paleta de 256 de culori și benzile

Un pixel video în culori reale are nevoie de 24 de biți (16,7 milioane de posibilități); un pixel GIF este un index de 8 biți într-un tabel de cel mult 256 de culori. Conversia unui videoclip în GIF rulează deci cuantizarea paletei: se aleg cele 256 de culori care reprezintă cel mai bine conținutul, apoi fiecare pixel este mutat la cea mai apropiată. Gradienții plătesc prețul — un cer care are nevoie de 4.000 de albastruri ușor diferite primește 30 din ele, iar rampa netedă se prăbușește în dungi vizibile numite benzi. Grafica plată cu contrast mare (logo-uri, sprite-uri de joc, grafice) abia le observă; fotografiile și videoclipurile sunt cel mai afectate. Calitatea paletei unui convertor reprezintă o parte mare din calitatea ieșirii.

Tramarea: schimbul de zgomot pe netezime

Tramarea este remedia clasică pentru benzi: în loc să mute fiecare pixel la cea mai apropiată culoare din paletă, împrăștie un amestec din cele două culori cele mai apropiate, astfel încât media pe o zonă mică să corespundă tonului original. Gradienții arată dramatic mai netezi — dungile se dizolvă într-un zgomot fin, pe care ochiul îl îmbină la distanța obișnuită de vizionare. Costul este dimensiunea fișierului: zgomotul este detaliu de frecvență înaltă, iar LZW comprimă dungile regulate mult mai bine decât punctele împrăștiate. Acesta este compromisul fundamental al GIF-ului pe care îl expune această pagină: se dezactivează tramarea pentru fișiere mai mici cu benzi, se activează pentru gradienți netezi cu un surplus de dimensiune.

Cadența cadrelor: limita de 20 ms

GIF stochează întârzierea dintre cadre în unități de 1/100 de secundă. 10 fps înseamnă întârziere 10 (100 ms per cadru); 20 fps înseamnă întârziere 5 (50 ms). Cea mai mică valoare utilă este 2 (20 ms, adică 50 fps), iar în practică majoritatea browserelor aduc orice sub această limită la 100 ms — cererea de 60 fps produce în tăcere o redare mai lentă. Peste limită, fiecare creștere de fps înmulțește numărul de cadre: de la 15 fps la 50 fps pentru același clip înseamnă de peste trei ori mai multe cadre, iar dimensiunea GIF-ului crește aproximativ liniar cu numărul de cadre. Un clip de 10 secunde la 15 fps are 150 de cadre; la 50 fps ar avea 500.

De ce GIF-urile cresc mult față de un videoclip real

Codecurile video moderne cheltuiesc majoritatea biților descriind schimbarea dintre cadre — o cameră fixă face cadrele ulterioare să coste aproape nimic. LZW-ul GIF-ului vede fiecare cadru ca pe o imagine nouă (singurul său truc între cadre este un indicator de transparență care sare peste pixelii identici cu cadrul precedent, ajutând mult mai puțin decât compensarea reală a mișcării). Regula generală: pentru același clip, un GIF se așteaptă să fie de multe ori mai mare decât un WebM bine codificat la aceeași rezoluție. Dacă destinația acceptă videoclip real, se preferă acesta; GIF-ul câștigă doar acolo unde contează universalitatea lui și comportamentul de redare automată și în buclă.

Concepții greșite frecvente
  • „GIF este comprimat, deci este eficient pentru video.” LZW este un compresor la nivel de octet din 1987, fără model de mișcare; pentru imagini în mișcare este cel mai puțin eficient format larg folosit pe web.
  • „Sursa are 60 fps, deci GIF-ul ar trebui să aibă la fel.” Limita de 20 ms a întârzierii plafonează GIF-ul la 50 fps, iar browserele aduc în sus întârzierile sub limită. Fidelitatea cadru cu cadru nu este ceva ce poate livra GIF-ul.
  • „Tramarea este doar zgomot care ar trebui oprit.” Este un compromis deliberat calitate/dimensiune: dezactivată dă fișiere mai mici cu benzi, activată dă gradienți netezi care costă octeți.
  • „Mai puține culori arată mereu îngrozitor.” Pentru grafică plată și animație cu contrast mare, chiar 64 de culori pot arăta identic cu 256 — și micșorează și mai mult fișierul.

Instrumente înrudite: Video în WebP/APNG pentru animație în culori reale cu compresie reală, GIF în video pentru direcția inversă (paletă în culori reale), Video în WebM pentru același clip ca videoclip real și Tăietorul video pentru a tăia sursa înainte de conversie.