Esimene osa:
Mis? Videokodek on osa tarkvarast/riistvarast, mis surub kokku ja/vÔi avab digitaalset videot.
Milleks? Hoolimata teatud piirangutest nii ribalaiuse kui ka andmete salvestusruumi osas, nĂ”uab turg jĂ€rjest kvaliteetsemat videot. Kas mĂ€letate, kuidas eelnevas postituses arvutasime minimaalset vajalikkust 30 kaadrit sekundis, 24 bitti pikseli kohta, eraldusvĂ”imega 480Ă240? Saime 82,944 Mbit/s surveta. Surumine on senini ainus viis HD/FulHD/4K edastamiseks teleriekraanidele ja internetti. Kuidas see saavutatakse? Praegu vaatame kokkuvĂ”tlikult peamisi meetodeid.
TÔlge on tehtud EDISON Software'i toetusel.
Tegelemevideovalve sĂŒsteemide integratsiooniga , samuti .
Levinud algajate viga on segi ajada digitaalse video kodek ja digitaalse video konteiner. Konteiner on mingisugune formaat, mis sisaldab video (ja vÔib-olla ka heli) metaandmeid. Kompressitud videot vÔib kÀsitleda konteineri kasulikku koormana.
Tavaliselt nĂ€itab video faili laiend, milline on selle konteineri tĂŒĂŒp. NĂ€iteks fail video.mp4 on tĂ”enĂ€oliselt konteiner
MPEG-4 Part 14 , samas kui faili nimega video.mkv puhul on see tÔenÀoliseltmatrioƥka FFmpeg vÔi .
Enne kui liigume edasi
, uurime natuke ajalugu, et paremini mÔista mÔningaid vanemaid kodekeid. Kuidas?Videokodek
H.261 ilmus 1990. aastal (tehniliselt 1988) ja loodi andmeedastuskiirusel 64 Kbit/s töötamiseks. Selles kasutati juba selliseid ideid nagu vÀrvisubdiske, makroblokid jne. 1995. aastal avaldati videokodeki standard H.263 , mis arenes edasi kuni 2001. aastani.2003. aastal lÔpetati esimene versioon
H.264/AVC . Samal aastal viis ettevĂ”te âTrueMotionâ turule tasuta videokodeki, mis komprimeeris videot kaotava meetodiga nimegaVP3 . 2008. aastal ostis Google selle ettevĂ”tte ja vĂ€lja andisVP8 samal aastal. 2012. aasta detsembris avaldas Google VP9 , mis on toetatud umbes Ÿ browsereid (sealhulgas mobiilseadmeid)., ja see toetatakse umbes Ÿ brauserituru osast (sealhulgas mobiilseadmed).
AV1 on uus tasuta avatud lÀhtekoodiga videokoodek, mille on vÀlja töötanud Avatud meedia alianss (AOMedia), kuhu kuuluvad tuntud ettevÔtted nagu: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel ja Cisco. Koodeki esialgne versioon 0.1.0 avaldati 7. aprillil 2016.
AV1 sĂŒnd
2015. aasta alguses töötas Google VP10, Xiph (mille omanik on Mozilla) töötas Daala, ja Cisco valmistas oma tasuta videokoodeki nimega Thor.
SeejÀrel MPEG LA kÔigepealt kuulutas aastased piirangud HEVC (H.265) ja tasu, mis on 8 korda kÔrgem kui H.264, kuid peagi muutsid nad reegleid taas:
ilma aastase piiranguta,
tasud sisu eest (0,5% tuludest) ja
tooteĂŒhiku tasu, mis on umbes 10 korda kĂ”rgem kui H.264.
Avatud meedia alianss loodi erinevate valdkondade ettevÔtete poolt: seadmete tootjad (Intel, AMD, ARM, Nvidia, Cisco), sisu tarnijad (Google, Netflix, Amazon), brauserid (Google, Mozilla) ja teised.
EttevĂ”tetel oli ĂŒhine eesmĂ€rk â vĂ€lja töötada videokoodek, mis ei nĂ”ua litsentsitasusid. Siis ilmub AV1 hoopis lihtsama patendilitsentsiga. Timothy B. Terriberry tegi hĂ€mmastava esituse, mis sai praeguse AV1 kontseptsiooni ja litsentsimudelina.
Teid ĂŒllatab, et AV1 koodekit saab analĂŒĂŒsida brauseri kaudu (huvilised saavad kĂŒlastada).

Universaalne koodek
Vaatame pĂ”himehhanismid, mis on universaalse videokoodeki aluseks. Enamik neist kontseptsioonidest on kasulikud ja neid kasutatakse tĂ€napĂ€eva koodekites, nagu , mis on toetatud umbes Ÿ browsereid (sealhulgas mobiilseadmeid)., AV1 ja HEVC. Hoian teid kursis, et paljusid selgitatavaid asju lihtsustatakse. MĂ”nikord kasutatakse reaalseid nĂ€iteid (nĂ€iteks H.264-i korral) tehnoloogia demonstreerimiseks.
1. samm â pildi jaotamine
Esimene samm on kaadri jagamine mitmeks osaks, jaotusteks ja edasi.

Miks? On palju pÔhjuseid. Kui jagada pilt, on vÔimalik tÀpsemalt ennustada liikumise suunda, kasutades vÀikeseid osi vÀikeste liikuvate osade jaoks. Samas, staatilise tausta jaoks vÔib piirduda ka suuremate osadega.
Tavaliselt korraldavad koodekid need jaotised jaotistes (vĂ”i fragmendid), makrobotloodes (vĂ”i kodeerimise puu plokid) ja arvukates alamjaotistes. Nende jaotiste maksimaalne suurus varieerub, HEVC seadistab 64Ă64, samas kui AVC kasutab 16Ă16, ning alamjaotised vĂ”ivad jaguneda kuni 4Ă4 suurustesse.
Kas mÀletate raamistikud eelmisest artiklist?! Seda saab rakendada ka plokkidele, seega vÔivad meil olla I-fragment, B-plokk, P-makrobotlo jne.
Neile, kes soovivad harjutada â vaadake, kuidas pilt jaguneb jaotisteks ja alamjaotisteks. Selleks saab kasutada eelnevalt mainitud tööriista. (see on tasuline, kuid tasuta prooviversiooniga, millel on piirang esimestele 10 kaadrile). Siin on analĂŒĂŒsitud jaotised. , mis on toetatud umbes Ÿ browsereid (sealhulgas mobiilseadmeid).:

2. samm â ennustamine
Kui meil on jaotised olemas, saame nende pÔhjal koostada ennustusi. Selleks INTER-ennustamine on vajalik edastada liikumisvektorid ja jÀÀk, ning INTRA-ennustamise puhul edastatakse ennustamise suund ja jÀÀk.
3. samm â teisendamine
PĂ€rast jÀÀkploki (ennustatud jaotus â tegelik jaotus) saamist on vĂ”imalik seda teisendada viisil, mis nĂ€itab, milliseid pikseleid saab kĂ”rvaldada, samal ajal sĂ€ilitades ĂŒldise kvaliteedi. On olemas teatud teisendusi, mis tagavad tĂ€pse kĂ€itumise.
Kuigi on ka teisi meetodeid, vaatleme ĂŒksikasjalikumalt diskreetset kosinusmuundamist (DCT â lĂŒhend diskreetne kosinusmuundamine). DCT pĂ”hiĂŒlesanded:
- Muudab piksliplokid ĂŒhetasandilisteks sageduskoefitsientide plokkideks.
- Kompaktib energiat, aidates kĂ”rvaldada ruumilise ĂŒlemÀÀrasuse.
- Tagab pööratavuse.
2. veebruaril 2017 avaldasid Cintra R.J. (Cintra, R.J.) ja Bayer F.M. (Bayer F.M.) artikli DCT-sarnaste muundamiste kohta piltide tihendamiseks, milleks on vajalik vaid 14 liitmist.
Ărge muretsege, kui te ei mĂ”istnud iga punkti eeliseid. NĂŒĂŒd vaatame konkreetsete nĂ€idete abil nende tĂ”elist vÀÀrtust.
VĂ”tame nĂ€iteks sellise 8Ă8 piksliploki:

See plokk renderdatakse jĂ€rgmise 8Ă8 pikseliga:

Rakendame DCT sellele piksliplokile ja saame 8Ă8 suuruse koefitsientide ploki:

Ja kui me renderdame selle koefitsientide ploki, saame sellise pildi:

Nagu nÀeme, ei sarnane see algse pildiga. On mÀrgata, et esimene koefitsient erineb tugevalt kÔigist teistest. Seda esimest koefitsienti tuntakse kui DC-koefitsienti, mis esindab kÔiki valimeid sisendmassiivis, midagi sarnast keskmisele.
Selle koefitsientide ploki puhul on huvitav omadus: see eraldab kÔrgsageduslikud komponendid madalsageduslikest.

Pildis on suurem osa vÔimsusest koondunud madalamatele sagedustele, seega, kui me muundame pildi selle sageduskomponentideks ja viskame kÔrgsageduslikud koefitsiendid Àra, saame vÀhendada andmete hulka, mis on vajalik pildi kirjeldamiseks, ega ohverda seejuures liiga palju kvaliteeti.
Sagedus tÀhendab, kui kiiresti signaal muutub.
Proovime rakendada teadmisi, mida saime testnÀites, muundades algset pilti selle sagedusesse (koefitsientide ploki), kasutades DCT-d, ja visates seejÀrel Àra osa vÀhem olulistest koefitsientidest.
Esiteks konverteerime selle sagedusruumi.

SeejÀrel viskame Àra osa (67%) koefitsientidest, peamiselt alumise parempoolse osa.

LÔpuks taastame pildi sellest visatud koefitsientide plokist (peame meeles pidama, et see peaks olema pööratav) ja vÔrdleme originaaliga.

NÀeme, et see meenutab algset pilti, kuid originaalist on palju erinevusi. Oleme visanud Àra 67,1875% ja saime siiski midagi, mis meenutab esialgset. Koefitsientide vÀljaviskamisega oleks vÔinud olla mÔistlikum, et saada veel paremat kvaliteeti, kuid see on juba jÀrgmine teema.
Iga koefitsient kujuneb kÔigi pikslite pÔhjal.
Oluline: iga koefitsient ei kajastu otseselt ĂŒhes pikslis, vaid esindab kaalutud summat kĂ”igist pikslitest. See muljetavaldav joonis nĂ€itab, kuidas arvutatakse esimest ja teist koefitsienti, kasutades igale indeksile unikaalseid kaalu.
Samuti vÔite proovida DCT-d visualiseerida, vaadates lihtsat kujundamist selle pÔhjal. NÀiteks siin on tÀht A, mis on vormitud iga koefitsendi kaalu abil:
4. samm â kvantiseerimine
PÀrast seda, kui eemaldame mÔned koefitsiendid eelneval sammul, viime viimases etapis (muundamine) lÀbi erilise kvantimisvormi. Sel etapil on teabe kaotamine lubatud. TeisisÔnu, kvantime koefitsiendid, et saavutada kokkusurumine.
Kuidas saab kvantida koefitsientide plokki? Ăks lihtsamaid meetodeid on ĂŒhtlane kvantimine, kus vĂ”tame ploki, jagame selle ĂŒhe vÀÀrtusega (10) ja ĂŒmardame saadud tulemuse.

Kas saame selle koefitsiendi ploki tagasi pöörata? Jah, saame, korrutades sama vÀÀrtusega, millega jagasime.

See lĂ€henemine ei ole parim, kuna see ei arvesta iga koefitsiendi tĂ€htsust. Saaksime kasutada kvantimismatriisi ĂŒhe vÀÀrtuse asemel, ning see matt aitab DCT omadust, kvantides enamiku alumistes paremates ja vĂ€hemuse ĂŒlemistes vasakutes koefitsientides.
5. samm â entropiakodeerimine
PĂ€rast seda, kui oleme andmed (pildiplokid, fragmendid, kaadrid) kvantinud, saame neid endiselt kaotusteta kokku suruda. Andmete kokkusurumiseks on palju algoritmilisi viise. Kavatseme tutvuda mĂ”nega neist, sĂŒgavamate teadmiste saamiseks vĂ”ite lugeda raamatut âKokku surumise mĂ”istmine: andmete kokkusurumine kaasaegsetele arendajateleâ (»).
Videote kodeerimine kasutades VLC-d
Oletame, et meil on sĂŒmbolite voog: a, e, r ja t. Iga sĂŒmboli esinemise tĂ”enĂ€osus (vahemikus 0 kuni 1) on esitatud selles tabelis.
| a | e | r | t | |
|---|---|---|---|---|
| TÔenÀosus | 0,3 | 0,3 | 0,2 | 0,2 |
Saame anda ainulaadsed binaarkoodid (soovitavalt vĂ€ikesed) kĂ”ige tĂ”enĂ€olisematele sĂŒmbolitele, samal ajal kui suuremad koodid on 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 |
Kokku surume voogu, arvestades, et kulutame lĂ”puks 8 bitti iga sĂŒmboli kohta. Ilma kokkusurumiseta oleks iga sĂŒmboli jaoks vaja 24 bitti. Kui iga sĂŒmbol asendada tema koodiga, siis saavutame kokkuhoidu!
Esimene samm on sĂŒmboli kodeerimine e, mis on 10, ja teine sĂŒmbol â see a, mis lisatakse (mitte matemaatiliselt): [10] [0], ja lĂ”puks, kolmas sĂŒmbol t, mis muudab meie lĂ”pliku kokkusurutud bitivoo [10] [0] [1110] vĂ”i 1001110, mille jaoks on vajalik vaid 7 bitti (3,4 korda vĂ€hem ruumi kui originaalis).
Pange tÀhele, et iga kood peab olema ainulaadne prefiksikood. aitab, kuidas neid numbreid leida. Kuigi see meetod pole veatu, on olemas videokodeerijad, mis pakuvad endiselt seda algoritmilist meetodit kokkusurumiseks.
N nii kodeerijal kui ka dekooderil peab olema juurdepÀÀs tÀhestikule koos nende binaarkoodidega. SeetÔttu tuleb ka andmetes edastada tÀhestik.
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 |
Selle tabeliga ehitame vahemikud, mis sisaldavad kĂ”iki vĂ”imalikke sĂŒmboleid, sorteeritud suurima tĂ”enĂ€osuse jĂ€rgi.

NĂŒĂŒd kodeerime kolme sĂŒmboli voogu: eat.
Esiteks valime esimese sĂŒmboli e, mis on vahemikus 0,3 kuni 0,6 (ilma selleta). VĂ”tame selle vahemiku ja jagame selle uuesti samade proportsioonide jĂ€rgi, kuid nĂŒĂŒd selle uue vahemiku jaoks.

JĂ€tkame meie voo kodeerimist eat. NĂŒĂŒd vĂ”tame teise sĂŒmboli a, mis asub uues vahemikus 0,3 kuni 0,39, ja siis vĂ”tame meie viimase sĂŒmboli t ja, korrates sama protsessi uuesti, saame viimase vahemiku 0,354 kuni 0,372.

Me peame lihtsalt valima arvu viimases vahemikus 0,354 kuni 0,372. Valime 0,36 (aga vÔib valida ka mÔne muu arvu selles vahemikus). Ainult selle numbriga saame taastada meie originaalse voo. See on nagu tahaksime joonistada joont vahemike sees, et kodeerida meie voogu.

Tagurpidi operatsioon (st dekodeerimine) on sama lihtne: meie numbriga 0,36 ja meie algse vahemikuga saame alustada sama protsessi. Kuid nĂŒĂŒd, kasutades seda numbrit, tuvastame voo, mis on selle numbri abil kodeeritud.
Esimese vahemiku puhul mĂ€rkame, et meie number vastab lĂ”ikepunktile, seega on see meie esimene sĂŒmbol. Jagame nĂŒĂŒd selle vahemiku uuesti, jĂ€rgides sama protsessi nagu varem. Siin vĂ”ib mĂ€rgata, et 0,36 vastab sĂŒmbolile a, ja pĂ€rast protsessi kordamist jĂ”uame viimase sĂŒmbolini t (moodustades meie algse kodeeritud voo. eat).
N nii kodeerijal kui ka dekooderil peab olema olemas tÔenÀosuste tabel, seega on vajalik edastada ka selle sisu.
Ăsna elegantne, eks? Keegi, kes selle lahenduse vĂ€lja mĂ”tles, oli tĂ”eliselt nutikas. MĂ”ned videokodeerijad kasutavad seda tehnikat (vĂ”i pakuvad seda igatahes valikuna).
Idee on kaotusteta kvantitud bitivoo kokkusurumine. TĂ”enĂ€oliselt puuduvad selles artiklis tosin detaili, pĂ”hjuseid, kompromisse jne. Kuid kui olete arendaja, peaksite teadma rohkem. Uued koodekid pĂŒĂŒavad kasutada erinevaid entropiakkodeerimise algoritme, nagu ANS.
6. samm â bitivoo formaat
Kui kĂ”ik need sammud on tehtud, jÀÀb vaid dekompressida kokku pakitud kaadrid vastavalt tehtud sammudele. Dekooder tuleb selgelt teavitada kooderist tehtud otsustest. Dekooderile peab olema antud kogu vajalik teave: bitisĂŒgavus, vĂ€rviruum, eraldusvĂ”ime, prognooside teave (liikumisvektorid, suunatud INTER-prognoosimine), profiil, tase, kaadrisagedus, kaadri tĂŒĂŒp, kaadri number ja palju muud.
Tutvume pinnapealselt bitivooga H.264. Meie esimene samm on luua minimaalne H.264 bitivoo (FFmpeg lisab vaikimisi kĂ”ik kodeerimise parameetrid, nagu SEI NAL â saame sellest veidi hiljem rohkem teada). Saame seda teha, kasutades oma reposi ja FFmpeg'i.
.\/s\/ffmpeg -i \/files\/i\/minimal.png -pix_fmt yuv420p \/files\/v\/minimal_yuv420.h264
See kĂ€sk genereerib töötlemata bitivoo H.264 koos ĂŒhe kaadriga, eraldusvĂ”imega 64Ă64, vĂ€rviruumiga YUV420. Kasutame kaadrina jĂ€rgmist pilti.

H.264 bitivoo
Standard AVC (H.264) mÀÀrab, et teave saadetakse makrogaotustes (vÔrgu mÔistes), mida nimetatakse NAL (see on vÔrgu abstraktsioonitase). NAL peamine eesmÀrk on pakkuda videole "vÔrgusÔbralikku" esitusviisi. See standard peab töötama televiisorites (voogude pÔhjal) ja Internetis (pakettide pÔhjal).
![]()
Nal on sĂŒnkroniseerimis marker, mis mÀÀrab NAL-elementide piirid. Iga sĂŒnkroniseerimis marker sisaldab vÀÀrtust 0x00 0x00 0x01, vĂ€lja arvatud esimene, mis on vĂ”rdne 0x00 0x00 0x00 0x01. Kui kĂ€ivitame hexdump genereeritud H.264 bitivoo kohta, suudame tuvastada vĂ€hemalt kolm NAL mustrit faili alguses.

Nagu mainitud, peab dekooder teadma mitte ainult pilditeavet, vaid ka video, kaadri, vĂ€rvi, kasutatud parameetrite ja muu ĂŒksikasju. Iga NAL esimene bait mÀÀrab selle kategooria ja tĂŒĂŒbi.
| NAL tĂŒĂŒbi identifikaator | Kirjeldus |
|---|---|
| 0 | Tundmatu tĂŒĂŒp |
| 1 | Pildifragm kooditud ilma IDR-ita |
| 2 | Kooditud lÔikeandmete fragment A |
| 3 | Kooditud lÔikeandmete fragment B |
| 4 | Kooditud lÔikeandmete fragment C |
| 5 | Kooditud IDR-fragmendi IDR-pilt |
| 6 | SEI laienduse kohta lisainformatsioon |
| 7 | SPS-seeria parameetrite komplekt |
| 8 | PPS-pildi parameetrite komplekt |
| 9 | JuurdepÀÀsudelemendid |
| 10 | Jada lÔpp |
| 11 | Voogude lÔpp |
| ⊠| ⊠|
Tavaliselt on esimene NAL bitivoog SPS. See NAL-i tĂŒĂŒp vastutab kodeerimise ĂŒldiste muutujaid, nagu profiil, tase, eraldusvĂ”ime jms, teavitamise eest.
Kui jĂ€tta vahele esimene sĂŒnkroonimismĂ€rker, saame dekodeerida esimese baidi, et teada saada, milline NAL tĂŒĂŒp on esimene.
NĂ€iteks, esimene bait pĂ€rast sĂŒnkroonimismĂ€rkerit on 01100111, kus esimene bitt (0) asub f vĂ€ljasorbidden_zero_bit. JĂ€rgmised 2 bitti (11) annavad meile vĂ€lja nal_ref_idc, mis nĂ€itab, kas see NAL on referentsvĂ€li vĂ”i mitte. Ja ĂŒlejÀÀnud 5 bitti (00111) annavad meile vĂ€lja nal_unit_type, sel juhul on see SPS blokina (7) NAL.
Teine bait (binaarne=01100100, heks=0x64, dec=100) SPS NAL-is on vÀli profile_idc, mis nÀitab profiili, mida kasutaja kasutas. Sel juhul kasutati piiratud kÔrge profiili (st kÔrge profiil ilma kahepoolsete B-segmentide toeta).

Kui tutvuda bitivoogude spetsifikatsiooniga H.264 SPS NAL-i jaoks, saame palju vÀÀrtusi parameetrite nime, kategooria ja kirjelduse jaoks. NÀiteks vaatame vÀlju 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 mÔningaid matemaatilisi operatsioone nende vÀljade vÀÀrtustega, saame eraldusvÔime. 1920 x 1080 saab esitada pic_width_in_mbs_minus_1 vÀÀrtusega 119 ((119 + 1) * macroblock_size = 120 * 16 = 1920). JÀllegi, ruumi kokkuhoidmiseks, tehti see 119 asemel 1920.
Kui jÀtkata meie loodud video kontrollimist binaarselt (nt: xxd -b -c 11 v/minimal_yuv420.h264), vÔime liikuda viimase NAL-i juurde, mis on kaader ise.

Siin nĂ€eme selle esimesi 6 baidi vÀÀrtusi: 01100101 10001000 10000100 00000000 00100001 11111111. Kuna on teada, et esimene bait nĂ€itab NAL tĂŒĂŒpi, siis antud juhul (00101) on see IDR fragment (5), seega saame edasi uurida:

Kasutades spetsifikatsiooni teavet, suudame dekodeerida fragmendi tĂŒĂŒbi (slice_type) ja kaadri numbri (frame_num) koos teiste oluliste vĂ€ljadega.
Teatud vÀli vÀÀrtuste saamiseks (ue(v), me(v), se(v) vÔi %KuupÀev(v)), peame dekodeerima fragmendi, kasutades spetsiaalset dekoodrit, mis pÔhineb . See meetod on vÀga efektiivne muutujate vÀÀrtuste kodeerimisel, eriti kui on palju vaikevÀÀrtusi.
VÀÀrtused slice_type ja frame_num selle video jaoks on vastavalt 7 (I-fragment) ja 0 (esimene kaader).
BitsĂŒkkel vĂ”ib olla protokollina. Kui soovite rohkem teada bitsĂŒkli kohta, tasub vaadata spetsifikatsiooni ITU H.264. Siin on makroskeem, mis nĂ€itab, kus asuvad pildandmed (YUV kokkusurutud kujul).

Saate uurida ka teisi bitsĂŒkleid, nagu , mis on toetatud umbes Ÿ browsereid (sealhulgas mobiilseadmeid)., H.265 (HEVC) vĂ”i isegi meie uut parimat bitsĂŒklit AV1. Kas kĂ”ik need on sarnased? Ei, kuid kui teate vĂ€hemalt ĂŒhte â on palju lihtsam mĂ”ista teisi.
Kas soovite praktiseerida? Uurige H.264 bitsĂŒklit
Saate genereerida ĂŒhekaadrilise video ja kasutada MediaInfo bitsĂŒkli uurimiseks H.264. Tegelikult ei takista miski ka vaadata allika koodi, mis analĂŒĂŒsib bitsĂŒklit H.264 (AVC).
Praktikaks vÔib kasutada Intel Video Pro Analyzerit (ma juba mainisin, et programm on tasuline, kuid on tasuta prooviversioon, millel on 10 kaadri piirang?).
Ălevaade
Oluline on mÀrkida, et paljud tÀnapÀeva koodekid kasutavad sama mudelit, mida just Ôppisime. Vaatame koodeki vooskeemi Thor. See sisaldab kÔiki samme, mida me oleme lÀbinud. Selle mÀrkuse mÔte on, et te oleksite vÀhemalt paremini teadlikud uuendustest ja dokumentatsioonist selles valdkonnas.

Varasemalt arvutasime, et ĂŒhe tunni kestva video faili hoidmiseks kvaliteedis 720p ja 30 kaadrit sekundis on vajalik 139 GB kettaruumi. Kui kasutada artiklis kĂ€sitletud meetodeid (vahekaadri ja siseprognoosid, muundamine, kvantimine, entropiakodeerimine jne), siis on vĂ”imalik saavutada (eeldades, et kasutame 0,031 bitti pikseli kohta) tĂ€iesti rahuldava kvaliteediga video, mis vĂ”tab vaid 367,82 MB, mitte 139 GB mĂ€lu.
Kuidas H.265 saavutab parema kokkusurumise mÀÀra kui H.264?
NĂŒĂŒd, kui on teada rohkem koodekite tööpĂ”himĂ”tetest, on lihtsam mĂ”ista, kuidas uued koodekid suudavad pakkuda kĂ”rgemat resolutsiooni vĂ€hemate bittidega.
Kui vÔrrelda AVC ja HEVC, tasub meeles pidada, et see on peaaegu alati valik suurema koormuse ja kokkusurumise mÀÀra vahel.
HEVC omab rohkem jaotisi (ja alajaotisi) kui AVC, rohkem sisemise prognoosimise suundi, tÀiustatud entropiakodeerimine ja palju muud. KÔik need tÀiustused on teinud H.265 suuteline tihendama 50% rohkem kui H.264.

Esimene osa:
Allikas: habr.com




