Atėjo laikas pakeisti GIF į AV1 vaizdo įrašą

Atėjo laikas pakeisti GIF į AV1 vaizdo įrašą

Atėjo 2019 m. ir pats laikas nuspręsti dėl GIF (ne, mes nekalbame apie šį sprendimą! Mes čia niekada nesutiksime! - čia mes kalbame apie tarimą anglų kalba, mums tai nėra aktualu - apytiksliai. vertimas). GIF failai užima labai daug vietos (dažniausiai kelis megabaitus!), o tai, jei esate interneto kūrėjas, visiškai prieštarauja jūsų norams! Kaip žiniatinklio kūrėjas norite kuo mažiau dalykų, kuriuos naudotojai turi atsisiųsti, kad svetainė būtų greitai įkelta. Dėl tos pačios priežasties sumažinate „JavaScript“, optimizuojate PNG, JPEG ir kartais konvertuojate JPEG į WebP. Bet ką daryti su senu GIF?

Mums nereikės GIF, kur vykstame!

Jei jūsų tikslas yra pagerinti svetainės įkėlimo greitį, tuomet turite atsikratyti GIF! Bet kaip tada kurti animacines nuotraukas? Atsakymas yra vaizdo įrašas. Ir daugeliu atvejų jūs gausite geresnę kokybę ir sutaupysite 50-90% vietos! Gyvenime dauguma dalykų turi savo pliusų ir minusų. Kai pakeisite GIF vaizdo įrašu, dažniausiai nerasite jokių trūkumų.

Su visais GIF!

Laimei, pastaraisiais metais GIF pakeitimas vaizdo įrašais buvo įprastas dalykas, todėl visi reikalingi įrankiai jau naudojami. Šiame įraše dviračio neišradinėju iš naujo, o tik šiek tiek patobulinsiu esamus sprendimus. Taigi čia yra esmė:

  1. Paimkite GIF ir konvertuokite jį į vaizdo įrašą
  2. Koduokite vaizdo įrašą naudodami H.264 arba VP9, ​​t.y. suspauskite jį ir supakuokite į MP4 arba WebM konteinerį
  3. Pakeiskite <img> su įjungtu animuotu GIF <video> su voleliu
  4. Įjunkite automatinį paleidimą be garso ir kartokite GIF efektą

„Google“ turi gerą dokumentaciją, aprašančią procesą.

Tai 2019 m

Dabar 2019 m. Pažanga juda į priekį, ir mes turime su ja neatsilikti. Iki šiol turėjome dvi kodeko parinktis, kurios yra plačiai palaikomos visose naršyklėse ir vaizdo įrašų kodavimo įrankiuose:

  1. H.264 - pristatytas 2003 m. ir plačiausiai naudojamas šiandien
  2. VP9 – pasirodė 2013 m. ir pasiekė beveik 50 % suspaudimo patobulinimų, palyginti su H.264, nors kaip jie čia rašo ne visada viskas taip rožiškai

Pastaba: Nors H.265 yra kita H.264 versija ir gali konkuruoti su VP9, ​​nemanau, kad tai dėl prasto naršyklės palaikymo, kaip parodyta puslapyje https://caniuse.com/#feat=hevc. Licencijavimo kaštai yra pagrindinė priežastis, kodėl H.265 nebuvo taip plačiai paplitęs kaip H.264 ir kodėl „Alliance of Open Media“ konsorciumas dirba su nemokamu kodeku AV1.

Atminkite, kad mūsų tikslas yra sumažinti didžiulius GIF failus iki mažiausio įmanomo dydžio, kad būtų pagreitintas įkėlimo laikas. Būtų keista 2019 m., jei savo arsenale neturėtume naujo vaizdo įrašų suspaudimo standarto. Bet jis egzistuoja ir vadinamas AV1. Su AV1 galite pasiekti maždaug 30 % geresnio suspaudimo, palyginti su VP9. Lepota! 🙂

AV1 jūsų paslaugoms nuo 2019 m.!

Staliniuose kompiuteriuose

Neseniai AV1 vaizdo dekodavimo palaikymas buvo įtrauktas į darbalaukio versijas "Google Chrome" 70 и "Mozilla Firefox" 65. Šiuo metu „Firefox“ palaikymas yra klaidingas ir gali sukelti strigčių, tačiau viskas turėtų pagerėti pridėjus dav1d dekoderis jau yra „Firefox 67“. (jau išleistas, bet atsirado parama - apytiksliai vertimas.). Norėdami gauti daugiau informacijos apie naują versiją, skaitykite - dav1d 0.3.0 leidimas: dar greičiau!

Išmaniuosiuose telefonuose

Šiuo metu nėra aparatinės įrangos palaikymo išmaniesiems telefonams, nes trūksta atitinkamų dekoderių. Galite atlikti programinės įrangos dekodavimą, nors tai padidins akumuliatoriaus suvartojimą. Pirmieji mobilieji SOC, palaikantys AV1 aparatinės įrangos dekodavimą, pasirodys 2020 m.

Ir tada straipsnio skaitytojai klausia: „Taigi, jei mobilieji telefonai to dar tinkamai nepalaiko, kam naudoti AV1?

AV1 yra gana naujas kodekas, ir mes esame pačioje jo pritaikymo pradžioje. Pagalvokite apie šį straipsnį kaip apie „kol gaminsi, minia seks“ etapą. Pats stalinių kompiuterių palaikymas paspartins kai kurios auditorijos svetaines. O seni kodekai gali būti naudojami kaip atsarginis scenarijus, kai AV1 nepalaikomas tiksliniame įrenginyje. Tačiau vartotojams pereinant prie įrenginių su AV1 palaikymu, viskas bus paruošta. Norėdami tai pasiekti, turime sukurti vaizdo įrašo žymą, kaip parodyta toliau, kuri leis naršyklei pasirinkti pageidaujamą formatą − AV1 - >> VP9 - >> H.264. Na, jei vartotojas turi labai seną įrenginį ar navigatorių, kuris visiškai nepalaiko vaizdo įrašo (tai labai mažai tikėtina naudojant H264), tada jis tiesiog matys GIF

<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 sukūrimas

Kurti vaizdo įrašus naudojant AV1 paprasta. Atsisiųskite naujausią ffmpeg versiją savo sistemai iš čia ir naudokite toliau pateiktas komandas. Naudojame 2 leidimus, kad pasiektume tikslinį pralaidumą. Norėdami tai padaryti, du kartus paleisime ffmpeg. Pirmą kartą įrašome rezultatą į neegzistuojantį failą. Taip bus sukurtas žurnalas, kurio prireiks antram ffmpeg paleidimui.

# 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

Čia yra parametrų suskirstymas:

-i - Входной файл.

-pix_fmt - Используем формат 4:2:0 для выбора информации о цветности в видео. Существует много других возможных форматов, но 4:2:0 наиболее совместимый.

-c:v - Какой кодек использовать, в нашем случае - AV1.<br />
-b:v – Средний битрейт, которого мы хотим добиться.

-filter:v scale - Фильтр масштаба ffmpeg используется для уменьшения разрешения видео. Мы устанавливаем X:-1 что говорит ffmpeg уменьшить ширину до X, сохранив соотношение сторон.

-strict experimental - Надо указать, т.к. AV1 достаточно новый кодек.

-cpu-used - Ужасно названный параметр, который на самом деле используется для выбора уровня качества видео. Возможные значения 0-4. Чем меньше значение, тем лучше качество и, соответственно, больше время, которое займёт кодировка.

-tile-columns - Для использования нескольких тредов. Говорит AV1 разбить видео на отдельные колонки, которые могут быть перекодированы независимо для лучшей утилизации ЦПУ.

-row-mt – Тоже, что и предыдущий параметр, но разбивает так же на строки внутри колонок.

-threads - Количество тредов.

-pass - Какой проход сейчас выполняется.

-f - Используется только при первом проходе. Указывает формат выходного файла, т.е. MP4 в нашем случае.

-movflags faststart - Включаем быстрый старт видео, перемещая часть данных в начало файла. Это позволит начать воспроизведение ещё до полной загрузка файла.

GIF kūrimas

Norėdami sukurti GIF, naudojau žemiau esančią komandą. Kad sumažinčiau dydį, GIF padidinau iki 720 pikselių pločio ir 12 kadrų per sekundę, o ne pradinį 24 kadrų per sekundę vaizdo įrašą.

./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

Bandymų rezultatai

Geriau vieną kartą pamatyti, nei šimtą kartų perskaityti, tiesa? Įsitikinkite, kad AV1 yra tinkamas pasirinkimas mūsų tikslams. Padariau nemokamą vaizdo įrašą „Ters Of Steel“, kurį galite rasti čia https://mango.blender.org/, ir konvertavo jį naudodami maždaug tą patį bitų spartą AV1, VP9, ​​H.264 kodekams. Rezultatai pateikiami žemiau, kad galėtumėte juos palyginti patys.

1 pastaba: Jei toliau pateiktas failas neįkeliamas, gali būti, kad laikas atnaujinti naršyklę. Aš rekomenduočiau „Chromium“ pagrįstą naršyklę, pvz., „Chrome“, „Vivaldi“, „Brave“ ar „Opera“. Štai naujausia informacija apie AV1 palaikymą https://caniuse.com/#feat=av1

2 pastaba: „Firefox 66“ sistemoje „Linux“ turėsite nustatyti vėliavėlę media.av1.enabled į prasmę true в about:config

3 pastaba: Nusprendžiau toliau neįtraukti įprastų GIF failų dėl didelio jų dydžio ir duomenų kiekio, reikalingo šiam puslapiui įkelti! (Tai būtų ironiška, nes šis puslapis yra skirtas sumažinti duomenų kiekį puslapyje :)). Bet čia galite pamatyti galutinius GIF https://github.com/singhkays/its-time-replace-gifs-with-av1-video/blob/master/GIFs

Vertėjo pastaba: Habr neleidžia įjungti automatinio paleidimo ir failo ciklo, todėl galite įvertinti tik kokybę. Kaip atrodys „animuoti paveikslėliai“, galite pamatyti gyvai originalus straipsnis.

1 scena @ 200 Kbps

Čia yra daug judėjimo, o tai ypač jautru esant mažam bitų greičiui. Galite iš karto pamatyti, koks blogas H.264 šiuo bitų dažniu; iš karto matomi kvadratai. VP9 šiek tiek pagerina situaciją, bet kvadratai vis tiek matosi. AV1 aiškiai laimi ir sukuria akivaizdžiai geresnį vaizdą.

H.264

VP9

AV1

2 scena @ 200 Kbps

Čia yra daug permatomo CGI turinio. Rezultatai nesiskiria nuo praėjusio karto, bet apskritai AV1 atrodo geriau.

H.264

VP9

AV1

3 scena @ 100 Kbps

Šioje scenoje sumažiname bitų spartą iki 100 Kbps ir rezultatai yra nuoseklūs. AV1 išlaiko savo lyderystę net esant mažam bitų greičiui!

H.264

VP9

AV1

Vyšnia ant torto

Norėdami užbaigti šį straipsnį, pajutę sutaupytą pralaidumą, palyginti su GIF, bendras visų vaizdo įrašų dydis yra didesnis... 1.62 MB!! Teisingai. Šiek tiek sušiktų 1,708,032 1 XNUMX baitų! Palyginimui, čia yra kiekvienos scenos GIF ir AVXNUMX vaizdo įrašų dydžiai

Pagal GIF
AV1

1 scena
11.7 MB
0.33 MB

2 scena
7.27 MB
0.18 MB

3 scena
5.62 MB
0.088 MB

Tiesiog stulbinančiai! Ar ne taip?

Pastaba: VP9 ir H264 failų dydžiai nenurodomi, nes jie praktiškai nesiskiria nuo AV1 dėl to paties bitų perdavimo spartos. Būtų nereikalinga pridėti dar du vienodo dydžio stulpelius, kad būtų pabrėžta, kad šie kodekai sukuria daug geresnę kokybę nei GIF, kai failai yra daug mažesni.

Šaltinis: www.habr.com

Добавить комментарий