Esimene osa:
Mida? Videokodek on tarkvara/riistvara osa, mis tihendab ja/vÔi lahtipakkib digitaalset videot.
Milleks? Hoolimata anumĂ”ningatest piirangutest nii ribalaiuse kui ka salvestusruumi osas, nĂ”uab turg ĂŒha kvaliteetsemat videot. Kas mĂ€letate, kuidas eelmisel postitusel arvutasime, et 30 kaadrit sekundis, 24 bitti pikseli kohta ja 480Ă240 resolutsiooniga on vajalik minimaalne 82,944 Mbit/s ilma tihendamiseta? Tihendamine on praegu ainus vĂ”imalus edastada HD/FullHD/4K televisiooni ekraanidele ja internetti. Kuidas see saavutatakse? Vaatame lĂŒhidalt peamisi meetodeid.
ja andmete salvestamise mahu osas nĂ”uab turg ĂŒha kvaliteetsemat videot. Kas mĂ€letate, kuidas me eelmine kord arvutasime vajaliku miinimumi 30 kaadrit sekundis, 24 bitti pikseli kohta, eraldusvĂ”imega 480Ă240? Saime 82,944 Mbit/s ilma pakkimata. Pakkimine on praegu ainus viis HD/FullHD/4K edastamiseks televisiooniekraanidele ja internetti. Kuidas seda saavutatakse? Vaatame nĂŒĂŒd lĂŒhidalt peamisi meetodeid.
TÔlge on tehtud EDISON Software'i toetusel.Me tegeleme , samuti .
Kodek vs konteiner
Algajate sagedane eksitus on segi ajada digitaalvideo kodek ja digitaalvideo konteiner. Kokkulepe on mingi formaat. See on anum, mis sisaldab video (ja vÔimalusel ka audio) metaandmeid. Tihendatud videot vÔib pidada konteineri kasulikuks laadimiseks.
Videofaili laiend tavaliselt nĂ€itab selle konteineri tĂŒĂŒpi. NĂ€iteks fail video.mp4 on tĂ”enĂ€oliselt konteiner. MPEG-4 Part 14, kuid fail nimega video.mkv on tĂ”enĂ€oliselt . Et olla tĂ€ielikult kindel kodeki ja konteineri formaadi osas, saab kasutada vĂ”i .
Veidi ajalugu
Enne kui lÀheme edasi Kuidas?, uurime veidi ajalugu, et mÔista paremini mÔningaid vanemaid kodekeid.
Videokodek H.261 tuli vÀlja 1990. aastal (tehniliselt 1988) ja see loodi 64 Kbit/s andmeedastuskiirusel töötamiseks. Sellega kasutati juba selliseid ideid nagu vÀrvisubdiskreetimine, makroblokid jne. 1995. aastal avaldati videokodeki standard H.263, mis arenes edasi kuni 2001. aastani.
2003. aastal lĂ”petati esimese versiooni H.264/AVC. Samal aastal kĂ€ivitas ettevĂ”te âTrueMotionâ oma tasuta lossidega videokodeki nimega VP3. 2008. aastal ostis Google selle ettevĂ”tte, kĂ€ivitades VP8 samal aastal. Detsembris 2012 vabastas Google VP9, ja seda toetab umbes Ÿ brauseriturust (sealhulgas mobiilised seadmed).
AV1 â see on uus avatud lĂ€htekoodiga videokooder, mille arendas vĂ€lja Avatud Meedia Allianss (AOMedia), kuhu kuuluvad tuntud ettevĂ”tted nagu: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel ja Cisco. Esimene kooderi versioon 0.1.0 avaldati 7. aprillil 2016.
AV1 sĂŒnd
2015. aasta alguses töötas Google VP10, Xiph (mis kuulub Mozilla'le) töötas Daala, ja Cisco lÔi oma tasuta videokooderi nimega Thor.
SeejĂ€rel MPEG LA tundis algselt muret aastaste piirangute ĂŒle HEVC (H.265) ja tasu, mis oli 8 korda kĂ”rgem kui H.264, kuid hiljem muutsid nad reegleid taas:
ilma aastaste piiranguteta,
tasu sisu eest (0,5% tulust) ja
tasu tooteĂŒhiku kohta, mis oli umbes 10 korda kĂ”rgem kui H.264.
Avatud Meedia Allianss loodi erinevate valdkondade ettevÔtete poolt: riistvara tootjad (Intel, AMD, ARM, Nvidia, Cisco), sisuteenuse pakkujad (Google, Netflix, Amazon), brauserite arendajad (Google, Mozilla) ja teised.
EttevĂ”tetel oli ĂŒhine eesmĂ€rk â litsentsitasudeta videokooder. SeejĂ€rel ilmus AV1 kaugelt lihtsama patendilitsentsiga. Timothy B. Terriberry tegi vapustava esitluse, mis on aluseks praegusele AV1 kontseptsioonile ja selle litsentsimudelile.
Teid ĂŒllatab, et AV1 koodekit saab analĂŒĂŒsida brauseri kaudu (huvilised vĂ”ivad kĂŒlastada).

Universaalne koodek
Vaatame ĂŒle universaalse videotöötluskoodeki pĂ”himehhanismid. Enamik neist kontseptsioonidest on kasulikud ja neid kasutatakse kaasaegsetes koodekites, nagu VP9, AV1 ja HEVC. Hoian kĂ€es, et paljusid selgitatud asju lihtsustatakse. mĂ”nikord kasutatakse reaalseid nĂ€iteid (nagu H.264 puhul) tehnoloogiate demonstreerimiseks.
1. samm â pildi jagamine
Esimene samm on kaadri jagamine mitmeks osaks, alamosas ja edasi.

Miks? On palju pÔhjuseid. Kui me jagame pildi, saame tÀpsemalt ennustada liikumisvektorit, kasutades vÀikeseid osi vÀikeste liikuvate elementide jaoks. Samas saab staatilise tausta puhul piirduda ka suuremate osadega.
Tavaliselt korraldavad koodekid need osad sektsioonidesse (vĂ”i fragmentidesse), makrobloeckidesse (vĂ”i koodipuude plokkidesse) ja mitmesse alamsektsiooni. Nende osade maksimaalne suurus varieerub; HEVC seab piiriks 64Ă64, samas kui AVC kasutab 16Ă16, ning alamsektsioonid vĂ”ivad olla kuni 4Ă4.
Kas mÀletate kaadreid eelmisest artiklist?! Seda saab rakendada ka plokkidele, seega vÔivad meil olla I-fragment, B-plokk, P-makrobloeck jne.
Neile, kes soovivad harjutada â vaadake, kuidas pilt jaguneb osadeks ja alamseksioonideks. Selleks saab kasutada juba eelnevalt mainitud tööriista (see, mis on tasuline, kuid millel on tasuta prooviversioon, millel on piirang esimesed 10 kaadrit). Siin analĂŒĂŒsitakse sektsioone. VP9:

2. samm â prognoosimine
Kui meil on osad olemas, saame nende pÔhjal koostada astroloogilisi prognoose. Selleks INTER-prognoosimise korral on vaja edastada liikumise vektorid ja jÀÀk, samas kui INTRA-prognoosimise puhul edastatakse prognoosi suund ja jÀÀk.
3. samm â teisendamine
PĂ€rast seda, kui oleme saanud jÀÀkploki (ennetatud osa â tegelik osa), on vĂ”imalik seda muuta nii, et teame, millised pikslid saab kĂ”rvale jĂ€tta, sĂ€ilitades samas ĂŒldise kvaliteedi. On olemas teatud teisendusi, mis tagavad tĂ€pse kĂ€itumise.
Kuigi on ka teisi meetodeid, vaatame neid lĂ€hemalt. diskreetne kosinusmuundumine (DCT â lĂŒhend diskreetne kosinusmuundumine). DCT peamised omadused:
- Muudab piksliplokid ĂŒhesuurusteks sageduskoefitsiendi plokkideks.
- Kondenseerib energiat, aidates kaotada ruumilist ĂŒlemÀÀrasust.
- Tagab pööratavuse.
2. veebruaril 2017 avaldasid Cintra R.J. ja Bayer F.M. artikli DCT-sarnaste muundumiste kohta piltide kokkusurutamiseks, mis vajavad vaid 14 lisandit.
Ărge muretsege, kui te ei mĂ”istnud iga punkti eeliseid. Praegu veendume, et need on tĂ”eliselt vÀÀrtuslikud, konkreetsete nĂ€idete kaudu.
VĂ”tame nĂ€iteks sellise 8Ă8 piksliploki:

See plokk renderdatakse jÀrgmiseks 8 x 8 piksliseks pildiks:

Kohaldame DCT-d sellele piksliplokile ja saame 8Ă8 koefitsiendi ploki:

Ja kui renderdame selle koefitsientide ploki, saame sellise pildi:

Kuidas nÀeme, see ei sarnane algsele pildile. Saame mÀrgata, et esimene koefitsient erineb tugevalt kÔigist teistest. See esimene koefitsient on tuntud kui DC-koefitsient, mis esindab kÔiki valimisi sisendis, midagi sarnast keskmisele vÀÀrtusele.
Sellel koefitsientide plokil on huvitav omadus: see eraldab kÔrgsageduskomponendid madalsageduskomponentidest.

Pildis on enamik vÔimsusest koondunud madalamatele sagedustele, seetÔttu, kui teisendame pildi selle sageduskomponentideks ja kÔrvaldame kÔrgeima sageduse koefitsiendid, saame vÀhendada pildi kirjeldamiseks vajalike andmete hulka, ohverdamata liiga palju kvaliteeti.
Sagedus tÀhendab, kui kiiresti signaal muutub.
Katsume rakendada teadlikkust, mida omandatud testnÀites, muutes algse pildi selle sageduseks (koefitsientide plokk), kasutades DCT-d, ja seejÀrel kÔrvaldame vÀhem olulised koefitsiendid.
Esmalt konverteerime selle sagedusvaldkonda.

Edasi viskame osa (67%) koefitsientidest, peamiselt alumise parempoolsest osast.

LÔpuks taastame pildi sellest visatud koefitsiendiblokist (pidage meeles, et see peab olema pööratav) ja vÔrdleme originaaliga.

NÀeme, et see sarnaneb algse pildiga, kuid originaalist on palju erinevusi. Oleme eemaldanud 67,1875% ja saadud midagi, mis meenutab esialgset allikat. Koefitsiendite viskamine oleks vÔinud olla lÀbimÔeldum, et saada veel parema kvaliteediga pilt, kuid see on juba jÀrgmine teema.
Iga koefitsient moodustatakse kasutades kÔiki pikslite
Oluline: iga koefitsient ei kuva otse ĂŒhte pikslit, vaid esindab kĂ”igi pikslite kaalutud summat. See imeline joonis nĂ€itab, kuidas arvutatakse esimene ja teine koefitsient, kasutades iga indeksi jaoks ainulaadseid kaalusid.
Saate proovida visualiseerida DCT-t, vaadates lihtsalt pildi loomist selle pĂ”hjal. NĂ€iteks on siin sĂŒmbol A, mis on loodud iga koefitsiendi kaalu abil:
4. samm â kvantimine
PÀrast seda, kui eelmisel sammul teatud koefitsiendid vÀlja visatakse, teeme viimases etapis (muundamine) spetsiaalset vormi kvantimist. Sel etapil on informatsiooni kaotamine lubatud. Lihtsamalt öeldes kvantime koefitsiente, et saavutada kompressioon.
Kuidas kvantida koefitsientide plokki? Ăks lihtsamaid meetodeid on ĂŒhtlane kvantimine, kus vĂ”tame ploki, jagame selle ĂŒhe vÀÀrtusega (nĂ€iteks 10) ja ĂŒmardame saadud tulemuse.

Kas suudame seda koefitsientide plokki tagasi pöörata? Jah, saame, korrutades selle sama vÀÀrtusega, millega jagasime.

See lĂ€henemine ei ole parim, kuna see ei arvesta iga koefitsiendi tĂ€htsust. VĂ”iksime kasutada kvantimismaatriksit, mitte ĂŒhte vÀÀrtust, ja see maatriks vĂ”ib kasutada DCT omadust, kvantides enamik alumisi paremaid ja vĂ€hemuses ĂŒlemisi vasakuid.
5. samm â entroopia kodeerimine
PĂ€rast andmete kvantimist (pildi plokid, fragmendid, kaadrid) saame neid endiselt kaotusteta kokkusurutuna. Andmete kokkusurumiseks on palju algoritmilisi meetodeid. Tutvume lĂŒhidalt mĂ”nega, sĂŒgavamaks mĂ”istmiseks vĂ”ite lugeda raamatut âKokkulepete mĂ”istmine: andmete kokkusurumine kaasaegsetele arendajateleâ (»).
Videokodeerimine VLC abil
Oletame, et meil on sĂŒmbolite voog: a, e, r ja t. Tabelis on esitatud tĂ”enĂ€osus (vahemikus 0 kuni 1) iga sĂŒmboli esinemiseks voos.
| a | e | r | t | |
|---|---|---|---|---|
| TÔenÀosus | 0,3 | 0,3 | 0,2 | 0,2 |
Saame omistada unikaalsed binaarkoodid (eelistatavalt vÀikesed) kÔige tÔenÀolisematele ja suuremad koodid vÀhem tÔenÀolistele.
| a | e | r | t | |
|---|---|---|---|---|
| TÔenÀosus | 0,3 | 0,3 | 0,2 | 0,2 |
| Binaarkood | 0 | 10 | 110 | 1110 |
Surume voogu kokku, eeldades, et kulutame iga sĂŒmboli kohta 8 bitti. Ilma kokkusurumiseta kuluks iga sĂŒmboli kohta 24 bitti. Kui asendada iga sĂŒmbol tema koodiga, siis see toob kaasa kokkuhoidu!
Esimene samm on sĂŒmboli kodeerimine e, mis on 10, ja teine sĂŒmbol on a, mis lisatakse (mitte matemaatiliselt): [10] [0], ja lĂ”puks kolmas sĂŒmbol t, mis muudab meie lĂ”pliku surutud bittvoo vĂ”rdseks [10] [0] [1110] vĂ”i 1001110, mille jaoks on vaja vaid 7 bitti (3,4 korda vĂ€hem ruumi kui originaalis).
Pange tÀhele, et iga kood peab olema ainulaadne kood eelmÀÀratud prefiksiga. aitab leida neid numbreid. Kuigi see meetod ei ole ilma puudusteta, on olemas videokodeerijad, mis pakuvad endiselt seda algoritmilist meetodit kompressiooniks.
N nii kodeerijal kui dekodeerijal peab olema juurdepÀÀs sĂŒmbolite tabelile koos nende binaarkoodidega. Seega on vajalik edastada sisendandmetele ka tabel.
Aritmeetiline kodeerimine
Oletame, et meil on sĂŒmbolite voog: a, e, r, s ja t, ja nende tĂ”enĂ€osus on esitatud selles tabelis.
| a | e | r | s | t | |
|---|---|---|---|---|---|
| TÔenÀosus | 0,3 | 0,3 | 0,15 | 0,05 | 0,2 |
Koostame selle tabeli alusel vahemikud, mis sisaldavad kĂ”iki vĂ”imalikke sĂŒmboleid, sorteeritud maksimaalse arvu jĂ€rgi.

NĂŒĂŒd kodeerime kolme sĂŒmboli voo: eat.
Esialgu valime esimese sĂŒmboli e, mis asub vahemikus 0,3 kuni 0,6 (ilma nende hulgast). VĂ”tame selle vahemiku ja jagame selle uuesti samades proportsioonides, kuid juba selle uue vahemiku jaoks.

JĂ€tkame meie voolu kodeerimist eat. NĂŒĂŒd vĂ”tame teise sĂŒmboli a, mis asub uues alamvahemikus 0,3 kuni 0,39, ja seejĂ€rel vĂ”tame meie viimase sĂŒmboli t ja kordame sama protsessi, et saada viimane alamvahemik 0,354 kuni 0,372.

Peame lihtsalt valima numbri viimases alamvahemikus 0,354 kuni 0,372. Valime 0,36 (aga vÔime valida ka mis tahes muu numbri selles alamvahemikus). Ainult sellega saame taastada meie algse voolu. See on nagu joonistamine joonena vahemike sees meie voolu kodeerimiseks.

Tagasioperatsioon (ehk siis dekodeerimine) on samuti lihtne: meie numbri 0,36 ja meie algse vahemikuga saame kĂ€ivitada sama protsessi. Kuid nĂŒĂŒd, kasutades seda numbrit, tuvastame voolu, mis on kodeeritud selle numbri abil.
Esimese vahemikuga mĂ€rkame, et meie number vastab lĂ”ikele, seega on see meie esimene sĂŒmbol. NĂŒĂŒd jagame jĂ€lle selle alamvahemiku, tehes sama protsessi nagu varem. Siin vĂ”ib nĂ€ha, et 0,36 vastab sĂŒmbolile a, ja protsessi kordamise jĂ€rel oleme jĂ”udnud viimase sĂŒmbolini t (formeerides meie algse kodeeritud voolu eat).
Nii kodeerijale kui dekooderile peab olema olemas sĂŒmbolite tĂ”enĂ€osuste tabel, seega tuleb sisenemisandmetes edastada ka see.
Ăsna elegantne, eks? Keegi, kes selle lahenduse vĂ€lja mĂ”tles, oli ĂŒlimalt tark. MĂ”ned videokooderid kasutavad seda tehnikat (vĂ”i, igal juhul, pakuvad seda kui valikuvĂ”imalust).
KĂ€itumine seisneb kvantitud bitivoo kaotusteta kokkusurumises. Kindlasti puuduvad selles artiklis tohutult detaile, pĂ”hjuseid, kompromisse jne. Kuid kui olete arendaja, peaksite teadma rohkem. Uued kodeerijad pĂŒĂŒavad rakendada erinevaid entropiaga kodeerimise algoritme, nagu ANS.
6. samm â bitivoogude formaat
PĂ€rast kĂ”igi nende toimingute tegemist tuleb dekompressida kokkusurutud kaadrid, arvestades tehtud samme. Dekooder peab olema selgelt informeeritud kodeerija tehtud otsustest. Dekooderile tuleb anda kogu vajalik teave: bitisĂŒgavus, vĂ€rviruumi, eraldusvĂ”ime, prognooside teave (liikumisvektorid, suunatud INTER-prognoosimine), profiil, tase, kaadrisagedus, kaadritĂŒĂŒp, kaadri number ja palju muud.
Tutvustame pinnapealselt bitivoogu H.264. Meie esimene samm on luua minimaalne H.264 bitivoog (FFmpeg lisab vaikimisi kĂ”ik kodeerimise parameetrid, nĂ€iteks SEI NAL â Ă”pime hiljem, mis see on). Saame seda teha, kasutades meie enda hoidlat ja FFmpeg'i.
./s/ffmpeg -i /files/i/minimal.png -pix_fmt yuv420p /files/v/minimal_yuv420.h264
See kĂ€sk genereerib toore bitivoogu H.264 ĂŒhe kaadriga, resolutsiooniga 64Ă64, vĂ€rviruumiga YUV420. Kasutatakse jĂ€rgmine pilt kaadrina.

H.264 bitivoog
Standart AVC (H.264) mÀÀrab, et teave saadetakse makrokadrites (vĂ”rgu mĂ”ttes), mida nimetatakse NAL (see on vĂ”rgu abstraktsioonitaseme mĂ”isted). NAL-i peamine eesmĂ€rk on pakkuda âvĂ”rgusĂ”bralikkuâ video esitust. See standard peaks töötama televisioonides (voogude pĂ”hjal), Internetis (pakettide pĂ”hjal).
![]()
On sĂŒnkroonimismĂ€rker, mis mÀÀrab NAL-elementide piirid. Igal sĂŒnkroonimismĂ€rkeril on vÀÀrtus 0x00 0x00 0x01, , vĂ€lja arvatud esimesel, mille vÀÀrtus on 0x00 0x00 0x00 0x01. Kui kĂ€ivitame hexdump H.264 bitivooge genereerimiseks tuvastame vĂ€hemalt kolm NAL mustrit faili alguses.

Nagu mainitud, peab dekooder teadma mitte ainult pildidatal, vaid ka video, kaadrid, vĂ€rvid, kasutatavad parameetrid ja palju muud. Iga NAL-i esimene bait mÀÀrab selle kategooria ja tĂŒĂŒbi.
| NAL tĂŒĂŒbi identifikaator | Kirjeldus |
|---|---|
| 0 | Tundmatu tĂŒĂŒp |
| 1 | Kooditud pildifragmendi IDR ilma IDR |
| 2 | Kooditud lÔikeandmete fragment A |
| 3 | Kooditud lÔikeandmete fragment B |
| 4 | Kooditud lÔikeandmete fragment C |
| 5 | Kooditud IDR fragment IDR-pildist |
| 6 | TĂ€iendav teave SEI laiendamise kohta |
| 7 | SPS-seeria parameetrite kogum |
| 8 | PPS-pildi parameetrite kogum |
| 9 | Sisenemise eraldaja |
| 10 | JÀrjendi lÔpp |
| 11 | Voogude lÔpp |
| ⊠| ⊠|
Tavaliselt on esimene NAL bitivoog SPS. See NAL tĂŒĂŒp vastutab kodeerimise ĂŒldiste muutujaid, nagu profiil, tase, resolutsioon jne, teavitamise eest.
Kui sĂŒntaksivÀÀrisat prve markerit vahele jĂ€tta, saame dekodeerida esimese baidi, et teada, mis tĂŒĂŒpi NAL on esimene.
NĂ€iteks, esimene bait sĂŒntaksivÀÀristamise mĂ€rgise jĂ€rel on 01100111, kus esimene bitt (0) asub vĂ€ljadel forbidden_zero_bit. JĂ€rgmised 2 bitti (11) informeerivad meid vĂ€ljast nal_ref_idc, mis nĂ€itab, kas see NAL on viidatud vĂ€ljana vĂ”i mitte. Ja ĂŒlejÀÀnud 5 bitti (00111) informeerivad meid vĂ€ljast nal_unit_type, antud juhul on see SPS plokk (7) NAL.
Teine bait (binary=01100100, hex=0x64, dec=100) SPS NAL-is on see vÀli profile_idc, mis nÀitab profiili, mida kodeerija kasutas. Antud juhul kasutati piiratud kÔrget profiili (st kÔrge profiil ilma kahepoolse B-segmendi toeta).

Kui tutvuda bitivoo spetsifikatsiooniga H.264 SPS NAL-i jaoks, siis leiame palju vÀÀrtusi parameetri nime, kategooria ja kirjelduse jaoks. NÀiteks vaatame parameetreid pic_width_in_mbs_minus_1 ja pic_height_in_map_units_minus_1.
| Parameetri nimi | Kategooria | Kirjeldus |
|---|---|---|
| pic_width_in_mbs_minus_1 | 0 | ue(v) |
| pic_height_in_map_units_minus_1 | 0 | ue(v) |
Kui teeme nendest vÀli vÀÀrtustest teatud matemaatilisi toiminguid, saame resolutsiooni. VÔime esitada 1920 x 1080, kasutades pic_width_in_mbs_minus_1 vÀÀrtust 119 ((119 + 1) * macroblock_size = 120 * 16 = 1920). Taas, ruumi sÀÀstmiseks, kodeerimise asemel 1920 tegime seda 119-ga.
Kui jÀtkame meie loodud video kontrolleeringut binaarselt (nt: xxd -b -c 11 v/minimal_yuv420.h264), siis saame liikuda viimase NAL-i juurde, mis on kaader ise.

Siin nĂ€eme selle esimesi 6 baitide vÀÀrtusi: 01100101 10001000 10000100 00000000 00100001 11111111. Kuna on teada, et esimene bait nĂ€itab NAL tĂŒĂŒp, siis on antud juhul (00101) tegemist IDR fragmendiga (5), ja seega saab seda veelgi uurida:

Kasuta spetsifikatsiooni teavet, et dekodeerida fragmendi tĂŒĂŒp (slice_type) ja kaadrinumber (frame_num) teiste oluliste vĂ€ljade seas.
MÔnede vÀljade vÀÀrtuste saamiseks (ue(v), me(v), se(v) vÔi te(v)), peame dekodeerima frakmendi spetsiaalse dekooderiga, mis pÔhineb . See meetod on vÀga efektiivne muutuva vÀÀrtuse kodeerimisel, eriti kui on palju vaikevÀÀrtusi.
VÀÀrtused slice_type ja frame_num Selle video vÀÀrtused on 7 (I-fragment) ja 0 (esimene kaader).
Biti voogu vÔib kÀsitleda kui protokolli. Kui soovite rohkem teada, uurige spetsifikatsiooni ITU H.264. Siin on makroskeem, mis nÀitab, kus asuvad pildiparameetrid (YUV komprimeeritult).

VĂ”ib uurida ka teisi bitivooge, nagu VP9, H.265 (HEVC) vĂ”i isegi meie uusimat parimat bitivoogu AV1. Kas need on kĂ”ik sarnased? Ei, kuid kui mĂ”istate vĂ€hemalt ĂŒhte â on oluliselt lihtsam mĂ”ista teisi.
Soovite harjutada? Uurige H.264 bitivoogu
Saate genereerida ĂŒhekaadrilisi videoid ja kasutada MediaInfo, et uurida bitivoolu H.264. Tegelikult ei takista miski ka lĂ€htekoodi vaatamast, mis analĂŒĂŒsib bitivoolu H.264 (AVC).
Praktikaks vÔite kasutada Intel Video Pro Analyzerit (olen juba aru saanud, et programm on tasuline, kuid seal on tasuta prooviversioon, millel on 10 kaadri piirang?).
Ălevaade
Tuleb mĂ€rkida, et paljusid kaasaegseid koodekeid kasutatakse sama mudeli jĂ€rgi, mille just Ă”ppisime. Vaatame nĂŒĂŒd videokodeki vooskeemi Thor. See sisaldab kĂ”iki samme, mida oleme lĂ€binud. Selle mĂ€rkuse pĂ”hisisu on, et teil oleks vĂ€hemalt parem arusaam uuendustest ja dokumentatsioonist sellel alal.

Varem arvutasime, et ĂŒhe tunni pikkuse 720p ja 30 fps video faili hoidmiseks lĂ€heb vaja 139 GB ketta ruumi. Kui kasutada selles artiklis kĂ€sitletud meetodeid (vahekaadri ja sisemised prognoosid, transformatsioon, kvantimine, entropiikodeerimine jne), on vĂ”imalik saavutada (arvestades, et kulutame 0,031 bitti pikseli kohta) tĂ€iesti rahuldava kvaliteediga video, mille suurus on vaid 367,82 MB, mitte 139 GB.
Kuidas H.265 saavutab paremat kokkusurumisastet kui H.264?
NĂŒĂŒd, kui me teame rohkem, kuidas kodeerijad töötavad, on lihtsam mĂ”ista, kuidas uued kodeerijad suudavad pakkuda kĂ”rgemat eraldusvĂ”imet vĂ€iksema andmemahtude kasutamisega.
Kui vÔrrelda AVC ja HEVC, tuleb meeles pidada, et see on peaaegu alati valik suurema CPU koormuse ja kokkusurumise astme vahel.
HEVC omab rohkem sektsioonide (ja alamsektsioonide) variante kui AVC, rohkem suundi sisemise prognoosimise jaoks, tÀiustatud entropiakodeerimine ja palju muud. KÔik need tÀiustused on teinud H.265 vÔimeliseks suruma 50% rohkem kui H.264.

Esimene osa:
Allikas: habr.com




