On aeg asendada GIF AV1 videoga.

On aeg asendada GIF AV1 videoga.

Praegu on 2019. aasta ja on aeg otsustada GIF'ide ĂŒle (ei, see ei ole see otsus! Siin me kunagi ei lepita kokku! — siin on jutt hÀÀldamisest inglise keeles, mis ei puuduta meid — mĂ€rk. tĂ”lk.). GIF'id vĂ”tavad tohutult ruumi (tavaliselt mitmeid megabaite!), mis, kui oled veebiarendaja, on tĂ€ielik vastand sellele, mida soovid! Veebiarendajana tahad vĂ€hendada seda, mida kasutajad peavad allalaadima, et veebisait kiirelt laadida. Sama pĂ”hjuse tĂ”ttu optimeerid JavaScript'i, vĂ€hendad PNG-sid, JPEG'e ja vahel ka konverteerid JPEG'i WebP-ks. Kuid mis teha vanameister GIF'iga?

Kohas, kuhu me suundume, ei ole GIF'e vaja!

Kui sinu eesmĂ€rk on parandada veebisaidi laadimiskiirust, siis tuleb GIF'idest vabaneda! Kuid kuidas siis teha animeeritud pilte? Vastus — video. Ja enamikul juhtudel saad parema kvaliteedi ja ruumi kokkuhoiu 50-90%! Enamik asju elus toob endaga kaasa plussid ja miinused. Kui asendad GIF'i videoga, pole miinuseid tĂ”enĂ€oliselt lihtne leida.

Maha kÔik GIF'id!

Õnneks on GIF'i asendamine videoga juba aastaid tavapĂ€rane asjaolu, seega on kĂ”ik vajalikud tööriistad juba kĂ€igus. Selles postituses ma ei hakka jalgratast leiutama, vaid tĂ€iendan olemasolevaid lahendusi. Niisiis, siin on see, mida tuleb teha:

  1. VÔta GIF ja konverteeri see videoks
  2. Kodeeri video H.264 vÔi VP9 abil, st kompressi see ja pakka MP4 vÔi WebM konteinerisse
  3. Asenda <img> animeeritud GIF'iga videosĂŒnkrooni
  4. KĂ€ivita, ilma helita, ja tsĂŒklite, et saavutada GIF'i effekt

Google'il on hea dokumentatsioon, mis kirjeldab protsessi.

Praegu on 2019. aasta

Praegu on 2019. aasta. Edusammud liiguvad edasi ja me ei tohiks maha jÀÀda. Siiani on meil olnud kaks koodeki varianti, mis on laialdaselt toetatud kÔigis brauserites ja video kodeerimise tööriistades:

  1. H.264 — 2003. aastal esmakordselt ilmavalgust nĂ€inud ja tĂ€naseks laialdaselt kasutatav
  2. VP9 — 2013. aastal esmakordselt ilmavalgust nĂ€inud ja saavutanud peaaegu 50% paremast kompressioonist vĂ”rreldes H.264-ga, kuigi nagu siin öeldakse ei ole kĂ”ik ja alati nii roosilised

MĂ€rkus: kuigi H.265 standard on H.264 jĂ€rgmine versioon ja suudab konkureerida VP9-ga, ei vĂ”ta ma seda arvesse nĂ”rga brauseritootmise tĂ”ttu, mida tĂ”estab leht https://caniuse.com/#feat=hevc. Litsentsitasud on peamine pĂ”hjus, miks H.265 ei ole sama ulatuslik kui H.264 ning miks avatud meedia allianss töötab tasudeta koodeki — AV1 kallal.

Pea meeles, et meie eesmĂ€rk on vĂ€hendada tohutuid GIF'e kĂ”ige vĂ€iksema vĂ”imaliku suuruseni, et kiirendada laadimist. See oleks kummaline 2019. aasta, kui meil ei oleks oma arsenalis uut standardit videote kompressimiseks. Aga see on olemas ja seda nimetatakse AV1. AV1 vĂ”imaldab aidata saavutada umbes 30% paremat kompressiooni vĂ”rreldes VP9-ga. Ilus! 🙂

AV1 on saadaval alates 2019. aastast!

Töölauas

Hiljuti lisati AV1 video dekodeerimise toetus töölaua versioonidesse Google Chrome 70 ja Mozilla Firefox 65. Praegu on Firefox'is toetus tĂ”rkeid ja vĂ”ib pĂ”hjustada krahhe, kuid asjad peaksid paranema koos dav1d dekooderiga juba Firefox 67-s (on juba ilmunud, ja toetus on tekkinud — kt. tĂ”lge). Uue versiooni kohta lisateabe saamiseks vaadake — dav1d 0.3.0 vĂ€ljaanne: veel kiirem!

Nutitelefonides

Nutitelefonides puudub praegu riistvara toetus, kuna sobivaid dekoodereid pole. Saad teha tarkvaralise dekodeerimise, kuid see suurendab akut. Esimesed mobiilsed SOC-id, mis toetavad AV1 riistvara dekodeerimist, ilmuvad 2020. aastal.

Ja siin on artikli lugejad sellised: «Kui mobiilid ei toeta korralikult, miks siis kasutada AV1?»

AV1 on ĂŒsna uus koodek ja me oleme alles selle kohandamise alguses. MĂ”tle sellele artiklile kui etapp, kus «kui sa valmistad, siis inimesed liituvad». Tugi töölaual kiirendab juba saidid osa publikast. Ja vanu koodekeid saab kasutada tagasilangemise stsenaariumi, kui sihtseadmest AV1 ei toetata. Kuid kui kasutajad liiguvad seadmete poole, mis toetavad AV1, on kĂ”ik juba valmis. Selleks peame looma video sildi, nagu allpool nĂ€idatud, et lubada brauseril valida eelistatud vorming — AV1 ->> VP9 ->> H.264. Ja kui kasutajal on ÀÀrmiselt vana seade vĂ”i brauser, mis ei toeta ĂŒldse videoid (mis on ĂŒlimalt ebatĂ”enĂ€oline H264 puhul), siis nĂ€eb ta lihtsalt GIF'i

<video style="display:block; margin: 0 auto;" autoplay loop muted playsinline poster="RollingCredits.jpg">
  <source src="media/RollingCredits.av1.mp4" type="video/mp4">
  <source src="media/RollingCredits.vp9.webm" type="video/webm">
  <source src="media/RollingCredits.x264.mp4" type="video/mp4">
  <img src="media/RollingCredits.gif">
</video>

AV1 loomine

AV1-s video loomine ei ole keeruline. Laadi alla viimased ffmpeg'i ehitused oma sĂŒsteemi jaoks siit ja kasuta allolevaid kĂ€ske. Me kasutame sihtbitrate saavutamiseks kahte lĂ€bimist. Selleks kĂ€ivitame ffmpeg'i kaks korda. Esmakordselt salvestame tulemuse mitteolemasolevasse faili. See loob logi, mida vajatakse teise ffmpeg'i kĂ€ivitamiseks.

# Linux or Mac
## ĐŸŃ€ĐŸŃ…ĐŸĐŽ 1
ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 200k -filter:v scale=720:-1 -strict experimental -cpu-used 1 -tile-columns 2 -row-mt 1 -threads 8 -pass 1 -f mp4 /dev/null && 
## ĐŸŃ€ĐŸŃ…ĐŸĐŽ 2
ffmpeg -i input.mp4 -pix_fmt yuv420p -movflags faststart -c:v libaom-av1 -b:v 200k -filter:v scale=720:-1 -strict experimental -cpu-used 1 -tile-columns 2 -row-mt 1 -threads 8 -pass 2 output.mp4

# Windows
## ĐŸŃ€ĐŸŃ…ĐŸĐŽ 1
ffmpeg.exe -i input.mp4 -c:v libaom-av1 -b:v 200k -filter:v scale=720:-1 -strict experimental -cpu-used 1 -tile-columns 2 -row-mt 1 -threads 8 -pass 1 -f mp4 NUL && ^
## ĐŸŃ€ĐŸŃ…ĐŸĐŽ 2
ffmpeg.exe -i input.mp4 -pix_fmt yuv420p -movflags faststart -c:v libaom-av1 -b:v 200k -filter:v scale=720:-1 -strict experimental -cpu-used 1 -tile-columns 2 -row-mt 1 -threads 8 -pass 2 output.mp4

Siin on parameetrite selgitus:

-i - Sissekanne.

-pix_fmt - Kasutame 4:2:0 formaati video värvinformatsiooni valimiseks. On palju teisi võimalikke formaate, kuid 4:2:0 on kõige ühilduvam.

-c:v - Millist koodekit kasutada, meie puhul - AV1.<br />
-b:v – Keskmine bitikiirus, mida soovime saavutada.

-filter:v scale - ffmpeg'i suurendamisfilter, mida kasutatakse video eraldusvõime vähendamiseks. Seame X:-1, mis ütleb ffmpeg'ile, et vähendada laiust X, säilitades kuvasuhte.

-strict experimental - Tuleb määrata, kuna AV1 on piisavalt uus koodek.

-cpu-used - Kohutavalt nimetatud parameeter, mida tegelikult kasutatakse video kvaliteeditaseme valimiseks. Võimalikud väärtused 0-4. Mida väiksem väärtus, seda parem kvaliteet ja vastavalt sellele kauem aega, mis kulub kodeerimiseks.

-tile-columns - Kogub mitmeid lõime. Ütleb AV1-le, et jagada video eraldi veergudeks, mis võivad sõltumatult kodeeritud olla, et paremini ära kasutada protsessorit.

-row-mt – Sama, mis eelmine parameeter, kuid jagab ka read veergude sees.

-threads - Lõimede arv.

-pass - Milline läbimine toimub hetkel.

-f - Kasutatakse ainult esimesel läbimisel. Määrab väljundfaili formaadi, st MP4 meie puhul.

-movflags faststart - Lülitame sisse video kiire alguse, nihutades osa andmeid faili algusesse. See võimaldab mängimist alustada enne faili täielikku laadimist.

GIFi loomine

GIFi loomiseks kasutasin allpool olevat kÀsku. GIFi suuruse vÀhendamiseks skaleerisin selle laiusel 720px ja 12 fps asemel algse video 24 fps.

./ffmpeg -i /mnt/c/Users/kasing/Desktop/ToS.mov -ss 00:08:08 -t 12
-filter_complex "[0:v] fps=12,scale=720:-1" -y scene2.gif

Testide tulemused

Üks kord on parem kui sada korda lugeda, eks? Veendume, et AV1 on meie eesmĂ€rkide jaoks Ă”ige valik. Kasutasin tasuta videot Tears Of Steel, mis on saadaval siin https://mango.blender.org/, ja muutsin selle, kasutades AV1, VP9 ja H.264 koodekite jaoks umbkaudu sama bitikiirus. Tulemused on allpool, et saaksite neid ise vĂ”rrelda.

MÀrkus 1: Kui allolev fail ei laadi, vÔib olla aeg oma brauserit uuendada. Soovitan Chromiumi pÔhist brauserit, nagu Chrome, Vivaldi, Brave vÔi Opera. Siin on viimane teave AV1 toe kohta https://caniuse.com/#feat=av1

MĂ€rkus 2: Firefox 66 puhul Linuxis peate seadistama lipu media.av1.enabled vÀÀrtuse true ĂŒhes about:config

MÀrkus 3: Otsustasin mitte lisada tavalisi GIF-e allpool nende suure suuruse ja andmemahtude tÔttu, mis vÔiksid selle lehe laadimiseks vajalikud olla! (Mis oleks iroonia, sest see leht kÀsitleb andmemahtude vÀhendamist :)). Kuid vÔite vaadata lÔplikke GIF-e siin https://github.com/singhkays/its-time-replace-gifs-with-av1-video/blob/master/GIFs

TĂ”lkija mĂ€rkus: Habr ei luba autolaadimist ega faili tsĂŒklit, seega on kvaliteedi hindamine ainus vĂ”imalik. Elavas vormis saab "animeeritud pilte" nĂ€ha originaalses artiklis.

Stseen 1 @ 200 Kbps

Siin on palju liikumist, mis on madalatel bitikiirusel eriti tundlik. On kohe nÀha, kui halb H.264 selle bitikiirusel on, ruudud on kohe nÀhtavad. VP9 parandab olukorda veidi, kuid ruudud on endiselt nÀhtavad. AV1 on selgelt parem, pakkudes ilmselgelt paremat pilti.

H.264

VP9

AV1

Stseen 2 @ 200 Kbps

Siin on palju poollĂ€bipaistvat CGI sisu. Tulemused ei erine enam nii palju kui eelmisel korral, kuid ĂŒldiselt nĂ€eb AV1 parem vĂ€lja.

H.264

VP9

AV1

Stseen 3 @ 100 Kbps

Selles stseenis vĂ€hendame bitikiirust 100 Kbps-ni ja tulemused vastavad sellele. AV1 pĂŒsib madalatel bitikiirusel endiselt parim!

H.264

VP9

AV1

Tordi kirsike

LĂ”petamaks artiklit, tunne, kui palju liiklust on kokku hoitud vĂ”rreldes GIF-iga - kĂ”igi ĂŒlaltoodud videotega kokkuvĂ”tlik suurus
 1.62 MB!! Just nii. Need on kuradi 1,708,032 baiti! VĂ”rdluseks, siin on GIF ja AV1 suurused iga stseeni jaoks

GIF
AV1

Stseen 1
11.7 MB
0.33 MB

Stseen 2
7.27 MB
0.18 MB

Stseen 3
5.62 MB
0.088 MB

Lihtsalt hÀmmastav! Kas pole?

MÀrkus: VP9 ja H264 failide suurust ei ole esitatud, kuna need ei erine AV1-st praktiliselt nende sama bitikiiruse tÔttu. Oleks liialdus lisada veel kaks samasugust veergu, et rÔhutada, et need koodekid pakuvad palju paremat kvaliteeti kui GIF palju vÀiksemate failisuurustega.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster