Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Esimene osa: Video ja piltidega töötamise põhitõed

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Mis? Videokodek on tarkvara/riistvara, mis tihendab ja/või lahti pakkib digitaalset videot.

Mille eest? Vaatamata teatud piirangutele nii ribalaiuse kui ka
ja andmesalvestusruumi osas nõuab turg järjest kõrgema kvaliteediga videot. Kas mäletate, kuidas me viimases postituses arvutasime vajaliku miinimumi 30 kaadrit sekundis, 24 bitti piksli kohta, eraldusvõimega 480x240? Saime ilma tihendamiseta 82,944 Mbit/s. Tihendus on praegu ainus viis üldiselt HD/FullHD/4K edastamiseks teleriekraanidele ja Internetti. Kuidas see saavutatakse? Vaatame nüüd lühidalt peamisi meetodeid.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Tõlge on tehtud EDISON Software toel.

Oleme kihlatud videovalvesüsteemide integreerimine ning töötame välja mikrotomograafi.

Kodek vs konteiner

Algajate tavaline viga on digitaalse videokoodeki ja digitaalse video konteineri segamine. Konteiner on teatud vormingus. Ümbris, mis sisaldab video (ja võib-olla ka heli) metaandmeid. Tihendatud videot võib pidada konteineri kasulikuks koormuseks.

Tavaliselt näitab videofaili laiend selle konteineri tüüpi. Näiteks fail video.mp4 on tõenäoliselt konteiner MPEG-4 osa 14, ja faili nimega video.mkv on kõige tõenäolisem matrjoška. Kodeki ja konteineri vormingus täiesti veendumiseks võite kasutada FFmpeg või MediaInfo.

Veidi ajalugu

Enne kui jõuame Kuidas?, sukeldume veidi ajalukku, et mõnda vanemat kodekit pisut paremini mõista.

Videokodek H.261 ilmus 1990. aastal (tehniliselt - 1988. aastal) ja loodi töötama andmeedastuskiirusel 64 Kbps. See kasutas juba selliseid ideid nagu värvide alamproovimine, makroplokid jne. Videokodeki standard avaldati 1995. aastal H.263, mis arenes kuni 2001. aastani.

Esimene versioon valmis 2003. aastal H.264 / AVC. Samal aastal andis TrueMotion välja tasuta kadudega videokoodeki nimega VP3. Google ostis ettevõtte 2008. aastal, vabastades VP8 samal aastal. 2012. aasta detsembris andis Google välja VP9ja seda toetab umbes ¾ brauseriturust (kaasa arvatud mobiilseadmed).

AV1 on uus tasuta ja avatud lähtekoodiga videokoodek, mille on välja töötanud Alliance for Open Media (AOMedia), mis hõlmab kuulsamaid ettevõtteid, nagu: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel ja Cisco. Kodeki esimene versioon 0.1.0 avaldati 7. aprillil 2016.

AV1 sünd

2015. aasta alguses töötas Google selle kallal VP10Xiph (mis kuulub Mozillale) töötas Daalaja Cisco tegi oma tasuta videokodeki nimega THOR.

siis MPEG LA esmakordselt välja kuulutatud aastalimiidid HEVC (H.265) ja tasu 8 korda kõrgem kui H.264 puhul, kuid peagi muutsid nad reegleid uuesti:

aastapiiranguta,
sisutasu (0,5% tulust) ja
ühikutasu on umbes 10 korda kõrgem kui H.264.

Alliance for Open Media lõid erinevate valdkondade ettevõtted: seadmete tootjad (Intel, AMD, ARM, Nvidia, Cisco), sisupakkujad (Google, Netflix, Amazon), brauseri loojad (Google, Mozilla) jt.

Ettevõtetel oli ühine eesmärk – tasuta videokodek. Siis ilmub AV1 palju lihtsama patendilitsentsiga. Timothy B. Terryberry pidas vapustava ettekande, millest sai alguse praegune AV1 kontseptsioon ja selle litsentsimismudel.

Teid üllatab teadmine, et saate AV1 kodekit brauseri kaudu analüüsida (huvilised võivad minna aadressile aomanalyzer.org).

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Universaalne koodek

Vaatame universaalse videokoodeki aluseks olevaid peamisi mehhanisme. Enamik neist mõistetest on kasulikud ja neid kasutatakse tänapäevastes koodekites, näiteks VP9, AV1 и HEVC. Hoiatan, et paljusid selgitatud asju lihtsustatakse. Mõnikord kasutatakse tehnoloogia demonstreerimiseks pärismaailma näiteid (nagu H.264 puhul).

1. samm – pildi poolitamine

Esimene samm on kaadri jagamine mitmeks osaks, alajaotuseks ja kaugemale.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Milleks? Põhjuseid on palju. Pildi jagamisel saame liikumisvektorit täpsemalt ennustada, kasutades väikeste liikuvate osade jaoks väikeseid lõike. Staatilise tausta puhul saate piirduda suuremate osadega.

Koodekid korraldavad need jaotised tavaliselt osadeks (või tükkideks), makroplokkideks (või kodeerimispuuplokkideks) ja mitmeks alamjaotuseks. Nende partitsioonide maksimaalne suurus varieerub, HEVC määrab selle suuruseks 64x64, AVC aga 16x16 ja alamsektsioone saab jagada kuni 4x4 suuruseks.

Kas mäletate raamide tüüpe viimasest artiklist?! Sama saab rakendada ka plokkidele, nii et meil võib olla I-fragment, B-plokk, P-makroplokk jne.

Need, kes soovivad harjutada, vaadake, kuidas pilt on jagatud osadeks ja alajaotusteks. Selleks võite kasutada eelmises artiklis juba mainitud. Intel Video Pro analüsaator (see, mis on tasuline, kuid tasuta prooviversiooniga, mis on piiratud esimese 10 kaadriga). Siin analüüsitud lõigud VP9:

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

2. samm - prognoosimine

Kui meil on jaotised, saame teha nende jaoks astroloogilisi prognoose. Sest INTER prognoosid tuleb üle kanda liikumisvektorid ja ülejäänud osa ning INTRA prognoosimiseks edastatakse see prognoosi suund ja ülejäänud.

3. samm – ümberkujundamine

Kui meil on jääkplokk (ennustatud sektsioon → tegelik sektsioon), on võimalik seda teisendada nii, et teame, millised pikslid saab ära visata, säilitades samal ajal üldise kvaliteedi. On mõned teisendused, mis tagavad täpse käitumise.

Kuigi on ka teisi meetodeid, vaatame neid üksikasjalikumalt. diskreetne koosinusteisendus (DCT - alates diskreetne koosinuse teisendus). DCT peamised funktsioonid:

  • Teisendab pikslite plokid võrdse suurusega sageduskoefitsientide plokkideks.
  • Kondenseerib võimsust, et aidata kõrvaldada ruumiline liiasus.
  • Pakub pöörduvust.

2. veebruar 2017 Sintra R.J. (Cintra, RJ) ja Bayer F.M. (Bayer FM) avaldas artikli DCT-laadse kujutise tihendamise teisenduse kohta, mis nõuab vaid 14 lisamist.

Ärge muretsege, kui te ei mõista iga üksuse eeliseid. Nüüd kasutame konkreetseid näiteid, et näha nende tegelikku väärtust.

Võtame selle 8x8 pikslite ploki:

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

See plokk renderdatakse järgmiseks 8 x 8 piksliliseks kujutiseks:

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Rakendage sellele pikslite plokile DCT ja hankige koefitsientide plokk 8x8:

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Ja kui renderdame selle koefitsientide ploki, saame järgmise pildi:

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Nagu näete, ei näe see välja nagu originaalpilt. Näete, et esimene koefitsient on kõigist teistest väga erinev. Seda esimest koefitsienti tuntakse alalisvoolu koefitsiendina, mis esindab kõiki sisendmassiivi valimeid, umbes nagu keskmine.

Sellel koefitsientide plokil on huvitav omadus: see eraldab kõrgsageduslikud komponendid madalsageduslikest.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Pildil on suurem osa võimsusest koondunud madalamatele sagedustele, nii et kui muudate kujutise selle sageduskomponentideks ja loobute kõrgematest sageduskoefitsientidest, saate vähendada pildi kirjeldamiseks vajalikku andmemahtu ilma liigset pildikvaliteeti ohverdamata.

Sagedus viitab sellele, kui kiiresti signaal muutub.

Proovime testjuhtumis saadud teadmisi rakendada, teisendades DCT abil algse kujutise selle sagedusele (koefitsientide plokk) ja seejärel loobudes osa kõige vähem olulistest koefitsientidest.

Esmalt teisendame selle sageduspiirkonnaks.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Järgmisena jätame kõrvale osa (67%) koefitsientidest, peamiselt alumise parempoolse osa.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Lõpuks rekonstrueerime pildi sellest äravisatud koefitsientide plokist (pidage meeles, et see peab olema ümberpööratav) ja võrdleme seda originaaliga.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Näeme, et see sarnaneb originaalpildiga, kuid originaalist on palju erinevusi. Viskasime välja 67,1875% ja saime ikka midagi originaali meenutavat. Koefitsiente oli võimalik läbimõeldumalt kõrvale heita, et saada veelgi kvaliteetsem pilt, kuid see on järgmine teema.

Iga koefitsient genereeritakse kõigi pikslite abil

Tähtis: iga koefitsienti ei seostata otseselt ühe piksliga, vaid see on kõigi pikslite kaalutud summa. See hämmastav graafik näitab, kuidas esimene ja teine ​​koefitsient arvutatakse iga indeksi jaoks ainulaadsete kaalude abil.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Võite proovida ka DCT-d visualiseerida, vaadates sellel põhinevat lihtsat kujutise moodustamist. Näiteks siin on sümbol A, mis on loodud iga koefitsiendi kaalu abil:

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

4. samm – kvantimine

Pärast seda, kui oleme eelmises etapis mõned koefitsiendid välja visanud, teostame viimases etapis (teisenduses) spetsiaalse kvantiseerimisvormi. Selles etapis on teabe kaotamine vastuvõetav. Või lihtsamalt öeldes kvantifitseerime tihendamise saavutamiseks koefitsiendid.

Kuidas saate koefitsientide plokki kvantifitseerida? Üks lihtsamaid meetodeid on ühtlane kvantimine, kui võtame ploki, jagame selle ühe väärtusega (10-ga) ja ümardame tulemuse.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Kas me saame seda koefitsientide plokki ümber pöörata? Jah, saame, korrutades sama väärtusega, millega jagasime.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

See lähenemine ei ole parim, sest see ei võta arvesse iga koefitsiendi tähtsust. Ühe väärtuse asemel võiks kasutada kvantisaatorite maatriksit ja see maatriks saaks ära kasutada DCT omadust, kvantiseerides suurema osa paremast alumisest osast ja vähemuse vasakpoolsest ülaosast.

5. samm – entroopia kodeerimine

Kui oleme andmed (pildiplokid, fragmendid, kaadrid) kvantiseerinud, saame need ikkagi kadudeta tihendada. Andmete tihendamiseks on palju algoritmilisi viise. Heidame mõnele neist kiire ülevaate. Sügavamaks mõistmiseks võite lugeda raamatut Understanding Compression: Data Compression for Modern Developers ("Tihendamise mõistmine: andmete tihendamine kaasaegsetele arendajatele").

Video kodeerimine VLC abil

Oletame, et meil on tegelaste voog: a, e, r и t. Selles tabelis on esitatud iga tähemärgi voos esinemise tõenäosus (vahemikus 0 kuni 1).

a e r t
Tõenäosus 0,3 0,3 0,2 0,2

Kõige tõenäolisematele saame määrata unikaalsed binaarkoodid (eelistatavalt väikesed) ja vähemtõenäolistele suuremad koodid.

a e r t
Tõenäosus 0,3 0,3 0,2 0,2
Binaarne kood 0 10 110 1110

Tihendame voo, eeldades, et lõpuks kulutame iga tegelase jaoks 8 bitti. Ilma tihendamiseta oleks ühe märgi kohta vaja 24 bitti. Kui asendate iga tähemärgi selle koodiga, säästate!

Esimene samm on märgi kodeerimine e, mis võrdub 10-ga, ja teine ​​märk on a, mis lisatakse (mitte matemaatiliselt): [10][0] ja lõpuks kolmas märk t, mis muudab meie lõpliku tihendatud bitivoo väärtuseks [10][0][1110] või 1001110, mis nõuab ainult 7 bitti (3,4 korda vähem ruumi kui originaal).

Pange tähele, et iga kood peab olema kordumatu eesliitega. Huffmani algoritm aitab teil neid numbreid leida. Kuigi sellel meetodil pole puudusi, on videokoodekid, mis pakuvad siiski seda algoritmilist tihendusmeetodit.

Nii kodeerijal kui ka dekooderil peab olema juurdepääs sümbolitabelile koos kahendkoodidega. Seetõttu on vaja sisendiks saata ka tabel.

Aritmeetiline kodeerimine

Oletame, et meil on tegelaste voog: a, e, r, s и 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 tabeli abil koostame vahemikud, mis sisaldavad kõiki võimalikke märke, mis on järjestatud suurima arvu järgi.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Nüüd kodeerime kolmest märgist koosneva voo: sööma.

Esmalt valige esimene märk e, mis on alamvahemikus 0,3–0,6 (ei kaasa arvatud). Me võtame selle alamvahemiku ja jagame selle uuesti samades proportsioonides nagu varem, kuid selle uue vahemiku jaoks.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Jätkame oma voo kodeerimist sööma. Nüüd võtke teine ​​märk a, mis on uues alamvahemikus 0,3–0,39, ja seejärel võtke meie viimane märk t ja korrates sama protsessi uuesti, saame lõpliku alamvahemiku 0,354 kuni 0,372.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Peame lihtsalt valima numbri viimasest alamvahemikust 0,354 kuni 0,372. Valime 0,36 (aga selles alamvahemikus saate valida mis tahes muu arvu). Ainult selle numbriga saame taastada oma algse voo. Tundub, nagu tõmbaksime oma voo kodeerimiseks vahemikku joont.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Pöördoperatsioon (st dekodeerimine) on sama lihtne: meie numbriga 0,36 ja algvahemikuga saame sama protsessi käivitada. Kuid nüüd, kasutades seda numbrit, tuvastame selle numbriga kodeeritud voo.

Esimese vahemikuga märkame, et meie number vastab lõigule, seega on see meie esimene märk. Nüüd jagame selle alamvahemiku uuesti, järgides sama protsessi nagu varem. Siin on näha, et 0,36 vastab sümbolile a, ja pärast protsessi kordamist jõudsime viimase tähemärgini t (moodustades meie algse kodeeritud voo sööma).

Nii kodeerijal kui ka dekooderil peab olema sümbolite tõenäosuste tabel, seega on vaja see ka sisendandmetes saata.

Päris elegantne, kas pole? Kes selle lahenduse välja mõtles, oli paganama tark. Mõned videokoodekid kasutavad seda tehnikat (või vähemalt pakuvad seda valikuna).

Idee on kvantiseeritud bitivoo kadudeta tihendamine. Kindlasti on sellest artiklist puudu palju üksikasju, põhjuseid, kompromisse jne. Aga kui olete arendaja, peaksite rohkem teadma. Uued koodekid püüavad kasutada erinevaid entroopia kodeerimise algoritme nagu Aastat.

6. samm – bitivoo vorming

Pärast kõike seda ei jää muud üle, kui kokkusurutud kaadrid teostatud sammude kontekstis lahti pakkida. Dekoodrit tuleb kodeerija tehtud otsustest selgesõnaliselt teavitada. Dekooder peab olema varustatud kogu vajaliku teabega: bitisügavus, värviruum, eraldusvõime, ennustusteave (liikumisvektorid, suunaline INTER ennustus), profiil, tase, kaadrisagedus, kaadri tüüp, kaadri number ja palju muud.

Vaatame kiirelt bitivoogu H.264. Meie esimene samm on luua minimaalne H.264 bitivoo (FFmpeg lisab vaikimisi kõik kodeerimisvalikud, näiteks SEI NAL - saame teada, mis see on veidi kaugemal). Saame seda teha oma hoidla ja FFmpegi abil.

./s/ffmpeg -i /files/i/minimal.png -pix_fmt yuv420p /files/v/minimal_yuv420.h264

See käsk genereerib töötlemata bitivoo H.264 ühe kaadriga, 64×64 resolutsiooniga, värviruumiga YUV420. Sel juhul kasutatakse raamina järgmist pilti.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

H.264 bitivoog

Standard AVC (H.264) määrab, et teave saadetakse makrokaadrites (võrgu mõistes), mida nimetatakse nal (see on võrgu abstraktsioonitase). NAL-i põhieesmärk on pakkuda "veebisõbralikku" videoesitlust. See standard peaks töötama telerites (voopõhine), Internetis (paketipõhine).

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

NAL-i elementide piiride määratlemiseks on olemas sünkroniseerimismarker. Iga sünkroonimisluba sisaldab väärtust 0x00 0x00 0x01, välja arvatud kõige esimene, mis on võrdne 0x00 0x00 0x00 0x01. Kui käivitame hexdump loodud H.264 bitivoo jaoks tuvastame faili alguses vähemalt kolm NAL-mustrit.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Nagu öeldud, peab dekooder teadma mitte ainult pildiandmeid, vaid ka video üksikasju, kaadrit, värve, kasutatavaid parameetreid ja palju muud. Iga NAL-i esimene bait määrab selle kategooria ja tüübi.

NAL-i tüübi identifikaator Kirjeldus
0 Tundmatu tüüp
1 Kodeeritud pildifragment ilma IDR-ita
2 Kodeeritud viiluandmete jaotis A
3 Kodeeritud viiluandmete jaotis B
4 Kodeeritud viiluandmete jaotis C
5 IDR-kujutise kodeeritud IDR-fragment
6 Lisateave SEI laienduse kohta
7 SPS-i järjestuse parameetrite komplekt
8 PPS-pildi parameetrite komplekt
9 Juurdepääsu eraldaja
10 Jada lõpp
11 Lõnga lõpp
... ...

Tavaliselt on bitivoo esimene NAL PLC. Seda tüüpi NAL vastutab levinumate kodeerimismuutujate, nagu profiil, tase, eraldusvõime jne, teavitamise eest.

Kui jätame esimese sünkroonimismarkeri vahele, saame esimese baidi dekodeerida, et teada saada, milline NAL-tüüp on esimene.

Näiteks esimene bait pärast sünkroonimisluba on 01100111, kus esimene bitt (0) on väljal forbidden_zero_bit. Järgmised 2 bitti (11) räägib meile valdkonnast nal_ref_idc, mis näitab, kas see NAL on võrdlusväli või mitte. Ja ülejäänud 5 bitti (00111) räägib meile valdkonnast nal_unit_type, sel juhul on see SPS-plokk (7) NAL.

Teine bait (binaarne=01100100, hex=0x64, detsember=100) SPS-is NAL on väli profile_idc, mis näitab kodeerija kasutatud profiili. Sel juhul kasutati piiratud kõrget profiili (st kõrget profiili ilma kahesuunalise B-segmendi toeta).

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Kui vaadata bitivoo spetsifikatsiooni H.264 SPS NAL-i jaoks leiame parameetri nime, kategooria ja kirjelduse jaoks palju väärtusi. Näiteks vaatame põlde pic_width_in_mbs_minus_1 и 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 nende väljade väärtustega matemaatilisi tehteid, saame eraldusvõime. Kasutades võib kujutada 1920 x 1080 pic_width_in_mbs_minus_1 väärtusega 119 ((119 + 1) * makroploki_suurus = 120 * 16 = 1920). Jällegi, ruumi säästmiseks tegime 1920 kodeerimise asemel 119-ga.

Kui jätkame oma loodud video kontrollimist binaarses vormis (näiteks: xxd -b -c 11 v/minimal_yuv420.h264), siis võite minna viimase NAL-i juurde, mis on kaader ise.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Siin näeme selle esimesed 6 baidi väärtused: 01100101 10001000 10000100 00000000 00100001 11111111. Kuna teadaolevalt näitab esimene bait NAL tüüpi, siis antud juhul (00101) on IDR-i fragment (5) ja seejärel saate seda edasi uurida.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Spetsifikatsiooniteavet kasutades on võimalik dekodeerida fragmendi tüüp (viilu_tüüp) ja kaadri number (kaadri_arv) muude oluliste valdkondade hulgas.

Mõne välja väärtuste saamiseks (ue(v), me(v), se(v) või te(v)), peame fragmendi dekodeerima spetsiaalse dekooderi abil, mis põhineb sellel eksponentsiaalne Golombi kood. See meetod on muutujate väärtuste kodeerimiseks väga tõhus, eriti kui vaikeväärtusi on palju.

Väärtused viilu_tüüp и kaadri_arv sellest videost on 7 (I-fragment) ja 0 (esimene kaader).

Bitivoogu võib pidada protokolliks. Kui soovite bitivoo kohta rohkem teada saada, peaksite tutvuma spetsifikatsiooniga ITU H.264. Siin on makroskeem, mis näitab pildiandmete asukohta (YUV kokkusurutud kujul).

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Uurida saab ka teisi bitivooge, nt VP9, H.265 (HEVC) või isegi meie uut parimat bitivoogu AV1. Kas nad on kõik sarnased? Ei, aga kui olete vähemalt ühest aru saanud, on ülejäänutest palju lihtsam mõista.

Tahad harjutada? Avastage H.264 bitivoogu

Saate luua ühe kaadri video ja kasutada MediaInfot bitivoo uurimiseks H.264. Tegelikult ei takista miski teil isegi bitivoogu analüüsivat lähtekoodi vaatamast H.264 (AVC).

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Harjutamiseks võib kasutada Intel Video Pro Analyzerit (kas ma juba ütlesin, et programm on tasuline, aga 10 kaadri limiidiga on tasuta prooviversioon?).

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Vaadata

Pange tähele, et paljud kaasaegsed koodekid kasutavad sama mudelit, mida just uurisime. Siin vaatame videokodeki plokkskeemi THOR. See sisaldab kõiki samme, mille oleme läbinud. Selle postituse kogu mõte on anda teile vähemalt parem arusaam selle valdkonna uuendustest ja dokumentatsioonist.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Varem arvutati, et 139p kvaliteediga ja 720 kaadrit sekundis ühe tunni kestva videofaili salvestamiseks kulub 30 GB kettaruumi. Kui kasutate käesolevas artiklis käsitletud meetodeid (kaadritevahelised ja sisemised prognoosid, teisendus, kvantimine, entroopia kodeerimine jne), saate (tuginedes asjaolule, et kulutame piksli kohta 0,031 bitti) video rahuldava kvaliteediga, hõivates ainult 367,82 MB, mitte 139 GB mälu.

Kuidas saavutab H.265 parema tihendusastme kui H.264?

Nüüd, kui teame rohkem koodekite tööpõhimõttest, on lihtsam mõista, kuidas uuemad koodekid suudavad pakkuda suuremat eraldusvõimet väiksemate bittide arvuga.

Kui võrrelda AVC и HEVC, tasub meeles pidada, et see on peaaegu alati valik suurema protsessori koormuse ja tihendusastme vahel.

HEVC on rohkem jaotise (ja alajaotuse) valikuid kui AVC, rohkem sisemisi ennustussuundi, täiustatud entroopia kodeerimine ja palju muud. Kõik need parandused on tehtud H.265 suudab kokku suruda 50% rohkem kui H.264.

Kuidas videokoodek töötab? 2. osa. Mida, miks, kuidas

Esimene osa: Video ja piltidega töötamise põhitõed

Allikas: www.habr.com

Lisa kommentaar