Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Rhan gyntaf: Hanfodion gweithio gyda fideo a delweddau

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Beth? Darn o feddalwedd/caledwedd sy'n cywasgu a/neu ddatgywasgu fideo digidol yw codec fideo.

Am beth? Er gwaethaf rhai cyfyngiadau o ran lled band a
ac o ran gofod storio data, mae'r farchnad yn mynnu fideo o ansawdd cynyddol uwch. Ydych chi'n cofio sut yn y post diwethaf y gwnaethom gyfrifo'r isafswm gofynnol ar gyfer 30 ffrâm yr eiliad, 24 did y picsel, gyda chydraniad o 480x240? Cawsom 82,944 Mbit yr eiliad heb gywasgu. Ar hyn o bryd, cywasgu yw'r unig ffordd i drosglwyddo HD/FullHD/4K yn gyffredinol i sgriniau teledu a'r Rhyngrwyd. Sut y cyflawnir hyn? Nawr, gadewch i ni edrych yn fyr ar y prif ddulliau.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Gwnaethpwyd y cyfieithiad gyda chefnogaeth Meddalwedd EDISON.

Rydym yn ymgysylltu integreiddio systemau gwyliadwriaeth fideoAc rydym yn datblygu microtograff.

Codec vs Cynhwysydd

Camgymeriad cyffredin y mae newbies yn ei wneud yw codec fideo digidol dryslyd a chynhwysydd fideo digidol. Mae cynhwysydd yn fformat penodol. Deunydd lapio sy'n cynnwys metadata fideo (ac o bosibl sain). Gellir meddwl am y fideo cywasgedig fel llwyth tâl cynhwysydd.

Yn nodweddiadol, mae estyniad ffeil fideo yn nodi ei fath o gynhwysydd. Er enghraifft, mae'n debyg mai cynhwysydd yw'r ffeil video.mp4 MPEG-4 Rhan 14, a ffeil o'r enw video.mkv sydd fwyaf tebygol matryoshka. I fod yn gwbl sicr o'r fformat codec a chynhwysydd, gallwch ei ddefnyddio FFmpeg neu MediaInfo.

Tipyn o hanes

Cyn i ni gyrraedd Как?, gadewch i ni gymryd ychydig o blymio i mewn i hanes i ddeall rhai codecau hŷn ychydig yn well.

Codec fideo H.261 ymddangos yn 1990 (yn dechnegol - yn 1988) ac fe'i crëwyd i weithredu ar gyfradd trosglwyddo data o 64 Kbps. Roedd eisoes yn defnyddio syniadau fel is-samplu lliw, macroblocks, ac ati. Cyhoeddwyd y safon codec fideo ym 1995 H.263, a ddatblygodd tan 2001.

Cwblhawyd y fersiwn gyntaf yn 2003 H.264 / AVC. Yr un flwyddyn, rhyddhaodd TrueMotion ei codec fideo lossy rhad ac am ddim o'r enw VP3. Prynodd Google y cwmni yn 2008, gan ryddhau VP8 yr un flwyddyn. Ym mis Rhagfyr 2012, rhyddhaodd Google VP9, ac fe'i cefnogir mewn tua ¾ o'r farchnad porwr (gan gynnwys dyfeisiau symudol).

AV1 yn godec fideo ffynhonnell agored newydd am ddim a ddatblygwyd gan Cynghrair ar gyfer Cyfryngau Agored (AOMmedia), sy'n cynnwys y cwmnïau mwyaf enwog, megis: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel a Cisco. Cyhoeddwyd fersiwn gyntaf y codec, 0.1.0, ar Ebrill 7, 2016.

Genedigaeth AV1

Yn gynnar yn 2015, roedd Google yn gweithio arno VP10Roedd Xiph (sy'n eiddo i Mozilla) yn gweithio arno Daala, a gwnaeth Cisco ei codec fideo rhad ac am ddim ei hun o'r enw Thor.

Yna ALl MPEG terfynau blynyddol a gyhoeddwyd gyntaf ar gyfer HEVC (H.265) a ffi 8 gwaith yn uwch nag ar gyfer H.264, ond buan iawn y gwnaethant newid y rheolau eto:

dim terfyn blynyddol,
ffi cynnwys (0,5% o refeniw) a
mae'r ffi uned tua 10 gwaith yn uwch na H.264.

Cynghrair ar gyfer Cyfryngau Agored ei greu gan gwmnïau o wahanol feysydd: gweithgynhyrchwyr offer (Intel, AMD, ARM, Nvidia, Cisco), darparwyr cynnwys (Google, Netflix, Amazon), crewyr porwr (Google, Mozilla) ac eraill.

Roedd gan y cwmnïau nod cyffredin - codec fideo heb freindal. Yna yn ymddangos AV1 gyda thrwydded patent llawer symlach. Rhoddodd Timothy B. Terryberry gyflwyniad syfrdanol a ddaeth yn darddiad y cysyniad AV1 presennol a'i fodel trwyddedu.

Byddwch yn synnu o wybod y gallwch ddadansoddi'r codec AV1 trwy borwr (gall y rhai sydd â diddordeb fynd i aomanalyzer.org).

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Codec cyffredinol

Gadewch i ni edrych ar y prif fecanweithiau sy'n sail i'r codec fideo cyffredinol. Mae'r rhan fwyaf o'r cysyniadau hyn yn ddefnyddiol ac fe'u defnyddir mewn codecau modern megis VP9, AV1 и HEVC. Yr wyf yn eich rhybuddio y bydd llawer o'r pethau a eglurir yn cael eu symleiddio. Weithiau bydd enghreifftiau byd go iawn (fel gyda H.264) yn cael eu defnyddio i arddangos y dechnoleg.

Cam 1af - hollti'r ddelwedd

Y cam cyntaf yw rhannu'r ffrâm yn sawl adran, is-adran a thu hwnt.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Am beth? Mae yna lawer o resymau. Pan fyddwn yn rhannu delwedd, gallwn ragweld y fector mudiant yn fwy cywir trwy ddefnyddio adrannau bach ar gyfer rhannau symudol bach. Tra ar gyfer cefndir statig gallwch gyfyngu eich hun i adrannau mwy.

Mae codecs fel arfer yn trefnu'r adrannau hyn yn adrannau (neu dalpiau), macroblocks (neu blociau coed codio), ac is-adrannau lluosog. Mae maint mwyaf y rhaniadau hyn yn amrywio, mae HEVC yn ei osod i 64x64 tra bod CGY yn defnyddio 16x16, a gellir rhannu is-raniadau hyd at feintiau 4x4.

Ydych chi'n cofio'r mathau o fframiau o'r erthygl ddiwethaf?! Gellir cymhwyso'r un peth i flociau, felly gallwn gael darn I, bloc B, macroblock P, ac ati.

I'r rhai sydd eisiau ymarfer, gwyliwch sut mae'r ddelwedd wedi'i rhannu'n adrannau ac is-adrannau. I wneud hyn, gallwch ddefnyddio'r un a grybwyllwyd eisoes yn yr erthygl flaenorol. Dadansoddwr Fideo Intel Pro (yr un sy'n cael ei dalu, ond gyda fersiwn prawf am ddim sy'n gyfyngedig i'r 10 ffrâm gyntaf). Adrannau wedi'u dadansoddi yma VP9:

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

2il gam - rhagweld

Unwaith y bydd gennym adrannau, gallwn wneud rhagolygon astrolegol ar eu cyfer. Canys Rhagolygon INTER rhaid ei drosglwyddo fectorau mudiant a'r gweddill, ac ar gyfer rhagolygon INTRA mae'n cael ei drosglwyddo cyfeiriad rhagolwg a'r gweddill.

3ydd cam - trawsnewid

Unwaith y bydd gennym bloc gweddilliol (adran a ragwelir → adran go iawn), mae'n bosibl ei drawsnewid yn y fath fodd fel ein bod yn gwybod pa bicseli y gellir eu taflu tra'n cynnal ansawdd cyffredinol. Mae rhai trawsnewidiadau sy'n darparu'r union ymddygiad.

Er bod yna ddulliau eraill, gadewch i ni edrych arnynt yn fwy manwl. trawsnewid cosin arwahanol (DCT - o trawsnewid cosin arwahanol). Prif swyddogaethau DCT:

  • Yn trosi blociau o bicseli yn flociau cyfartal o ran cyfernodau amledd.
  • Yn cyddwyso pŵer i helpu i ddileu diswyddiadau gofodol.
  • Yn darparu cildroadwyedd.

Chwefror 2, 2017 Sintra R.J. (Cintra, R.J.) a Bayer F.M. Cyhoeddodd (Bayer FM) erthygl am drawsnewidiad tebyg i DCT ar gyfer cywasgu delweddau sydd angen dim ond 14 o ychwanegiadau.

Peidiwch â phoeni os nad ydych chi'n deall manteision pob pwynt. Nawr, gadewch i ni ddefnyddio enghreifftiau penodol i weld eu gwir werth.

Gadewch i ni gymryd y bloc 8x8 hwn o bicseli:

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Mae'r bloc hwn wedi'i rendro i'r ddelwedd 8 wrth 8 picsel canlynol:

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Cymhwyswch DCT i'r bloc hwn o bicseli a chael bloc 8x8 o gyfernodau:

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Ac os byddwn yn gwneud y bloc hwn o gyfernodau, byddwn yn cael y ddelwedd ganlynol:

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Fel y gwelwch, nid yw'n edrych fel y ddelwedd wreiddiol. Gallwch weld bod y cyfernod cyntaf yn wahanol iawn i'r lleill i gyd. Gelwir y cyfernod cyntaf hwn yn gyfernod DC, sy'n cynrychioli'r holl samplau yn yr arae mewnbwn, rhywbeth fel cyfartaledd.

Mae gan y bloc cyfernodau hwn briodweddau diddorol: mae'n gwahanu cydrannau amledd uchel oddi wrth rai amledd isel.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Mewn delwedd, mae'r rhan fwyaf o'r pŵer wedi'i ganoli ar amleddau is, felly os ydych chi'n trosi'r ddelwedd yn ei gydrannau amlder a thaflu'r cyfernodau amledd uwch, gallwch leihau faint o ddata sydd ei angen i ddisgrifio'r ddelwedd heb aberthu gormod o ansawdd llun.

Mae amlder yn cyfeirio at ba mor gyflym y mae'r signal yn newid.

Gadewch i ni geisio cymhwyso'r wybodaeth a gafwyd yn yr achos prawf trwy drosi'r ddelwedd wreiddiol i'w hamlder (bloc o gyfernodau) gan ddefnyddio DCT ac yna taflu rhan o'r cyfernodau lleiaf pwysig.

Yn gyntaf rydym yn ei drosi i'r parth amlder.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Nesaf, rydym yn taflu rhan (67%) o'r cyfernodau, yn bennaf y rhan dde isaf.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Yn olaf, rydym yn ail-greu'r ddelwedd o'r bloc hwn o gyfernodau a daflwyd (cofiwch, mae'n rhaid iddo fod yn anwrthdroadwy) a'i gymharu â'r gwreiddiol.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Gwelwn ei fod yn debyg i'r ddelwedd wreiddiol, ond mae llawer o wahaniaethau i'r gwreiddiol. Fe wnaethon ni daflu 67,1875% allan a dal i gael rhywbeth tebyg i'r gwreiddiol. Roedd yn bosibl cael gwared yn fwy meddylgar ar y cyfernodau i gael delwedd o ansawdd gwell fyth, ond pwnc nesaf yw hwnnw.

Mae pob cyfernod yn cael ei gynhyrchu gan ddefnyddio pob picsel

Pwysig: nid yw pob cyfernod wedi'i fapio'n uniongyrchol i un picsel, ond mae'n swm pwysol o'r holl bicseli. Mae'r graff anhygoel hwn yn dangos sut mae'r cyfernodau cyntaf ac ail yn cael eu cyfrifo gan ddefnyddio pwysau sy'n unigryw i bob mynegai.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Gallwch hefyd geisio delweddu'r DCT trwy edrych ar ffurfiad delwedd syml yn seiliedig arno. Er enghraifft, dyma'r symbol A a gynhyrchir gan ddefnyddio pob pwysau cyfernod:

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

4ydd cam - meintioli

Ar ôl i ni daflu rhai cyfernodau yn y cam blaenorol, ar y cam olaf (trawsnewid) rydym yn perfformio math arbennig o feintioli. Ar hyn o bryd mae'n dderbyniol colli gwybodaeth. Neu, yn symlach, byddwn yn meintioli'r cyfernodau i gyflawni cywasgu.

Sut allwch chi feintioli bloc o gyfernodau? Un o'r dulliau symlaf yw meintioli unffurf, pan fyddwn yn cymryd bloc, rhannwch ef ag un gwerth (gan 10) a thagrynnwch y canlyniad.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

A allwn wrthdroi'r bloc hwn o gyfernodau? Gallwn, gallwn, gan luosi â'r un gwerth ag y rhannwyd gennym.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Nid y dull hwn yw'r gorau oherwydd nid yw'n ystyried pwysigrwydd pob cyfernod. Gellid defnyddio matrics o feintyddion yn lle un gwerth, a gallai'r matrics hwn fanteisio ar yr eiddo DCT trwy feintioli'r mwyafrif o'r rhan dde isaf a lleiafrif y chwith uchaf.

Cam 5 - codio entropi

Unwaith y byddwn wedi meintioli'r data (blociau delwedd, darnau, fframiau), gallwn barhau i'w gywasgu'n ddi-golled. Mae yna lawer o ffyrdd algorithmig o gywasgu data. Rydyn ni'n mynd i edrych yn gyflym ar rai ohonyn nhw, i gael dealltwriaeth ddyfnach gallwch chi ddarllen y llyfr Deall Cywasgiad: Cywasgiad Data ar gyfer Datblygwyr Modern ("Deall Cywasgu: Cywasgu Data ar gyfer Datblygwyr Modern").

Amgodio fideo gan ddefnyddio VLC

Gadewch i ni ddweud bod gennym ni ffrwd o gymeriadau: a, e, r и t. Mae’r tebygolrwydd (yn amrywio o 0 i 1) o ba mor aml mae pob nod yn ymddangos mewn ffrwd yn cael ei gyflwyno yn y tabl hwn.

a e r t
Tebygolrwydd 0,3 0,3 0,2 0,2

Gallwn aseinio codau deuaidd unigryw (yn ddelfrydol rhai bach) i'r rhai mwyaf tebygol, a chodau mwy i'r rhai llai tebygol.

a e r t
Tebygolrwydd 0,3 0,3 0,2 0,2
Cod deuaidd 0 10 110 1110

Rydyn ni'n cywasgu'r ffrwd, gan dybio y byddwn ni'n gwario 8 did ar gyfer pob cymeriad yn y pen draw. Heb gywasgu, byddai angen 24 did fesul nod. Os byddwch yn disodli pob cymeriad gyda'i god, byddwch yn cael arbedion!

Y cam cyntaf yw amgodio'r cymeriad e, sy'n hafal i 10, a'r ail gymeriad yw a, sy'n cael ei ychwanegu (ddim mewn ffordd fathemategol): [10][0], ac yn olaf y trydydd nod t, sy'n gwneud ein llif didau cywasgedig terfynol yn hafal i [10][0][1110] neu 1001110, sydd angen dim ond 7 did (3,4 gwaith yn llai o le na'r gwreiddiol).

Sylwch fod yn rhaid i bob cod fod yn god unigryw gyda rhagddodiad. algorithm Huffman yn eich helpu i ddod o hyd i'r rhifau hyn. Er nad yw'r dull hwn heb ei ddiffygion, mae yna godecs fideo sy'n dal i gynnig y dull algorithmig hwn ar gyfer cywasgu.

Rhaid i'r amgodiwr a'r datgodiwr gael mynediad at dabl symbolau gyda'u codau deuaidd. Felly, mae hefyd yn angenrheidiol i anfon tabl fel mewnbwn.

Codio rhifyddol

Gadewch i ni ddweud bod gennym ni ffrwd o gymeriadau: a, e, r, s и t, a chyflwynir eu tebygolrwydd yn y tabl hwn.

a e r s t
Tebygolrwydd 0,3 0,3 0,15 0,05 0,2

Gan ddefnyddio'r tabl hwn, byddwn yn adeiladu ystodau sy'n cynnwys yr holl nodau posibl, wedi'u didoli yn ôl y nifer mwyaf.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Nawr gadewch i ni amgodio ffrwd o dri nod: bwyta.

Yn gyntaf dewiswch y cymeriad cyntaf e, sydd yn yr is-ystod o 0,3 i 0,6 (heb gynnwys). Cymerwn yr is-amrediad hwn a'i rannu eto yn yr un cyfrannau ag o'r blaen, ond ar gyfer yr ystod newydd hon.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Gadewch i ni barhau i godio ein ffrwd bwyta. Nawr cymerwch yr ail gymeriad a, sydd yn yr is-amrediad newydd o 0,3 i 0,39, ac yna cymerwch ein cymeriad olaf t ac ailadrodd yr un broses eto, rydym yn cael yr is-ystod terfynol o 0,354 i 0,372.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Mae angen i ni ddewis rhif yn yr is-amrediad olaf o 0,354 i 0,372. Gadewch i ni ddewis 0,36 (ond gallwch ddewis unrhyw rif arall yn yr is-range hwn). Dim ond gyda'r rhif hwn y byddwn yn gallu adfer ein ffrwd wreiddiol. Mae fel pe baem yn tynnu llinell o fewn yr ystodau i amgodio ein ffrwd.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Y gweithrediad gwrthdro (hynny yw, dadgodio) yr un mor syml: gyda'n rhif 0,36 a'n hystod gychwynnol, gallwn redeg yr un broses. Ond nawr, gan ddefnyddio'r rhif hwn, rydyn ni'n nodi'r ffrwd sydd wedi'i hamgodio gan ddefnyddio'r rhif hwn.

Gyda'r ystod gyntaf, rydym yn sylwi bod ein rhif yn cyfateb i'r dafell, felly dyma ein cymeriad cyntaf. Nawr rydym yn rhannu'r is-ystod hon eto trwy ddilyn yr un broses ag o'r blaen. Yma gallwch weld bod 0,36 yn cyfateb i'r symbol a, ac ar ôl ailadrodd y broses fe gyrhaeddon ni'r cymeriad olaf t (gan ffurfio ein ffrwd wreiddiol wedi'i hamgodio bwyta).

Rhaid bod gan yr amgodiwr a'r datgodiwr dabl o debygolrwydd symbolau, felly mae angen ei anfon yn y data mewnbwn hefyd.

Eithaf cain, ynte? Roedd pwy bynnag a ddaeth i fyny gyda'r ateb hwn yn ddall smart. Mae rhai codecau fideo yn defnyddio'r dechneg hon (neu o leiaf yn ei gynnig fel opsiwn).

Y syniad yw cywasgu llif didau meintiol yn ddi-golled. Siawns nad yw'r erthygl hon yn colli tunnell o fanylion, rhesymau, cyfaddawdau, ac ati. Ond os ydych chi'n ddatblygwr, dylech chi wybod mwy. Mae codecau newydd yn ceisio defnyddio gwahanol algorithmau amgodio entropi megis ANS.

Cam 6 - fformat bitstream

Ar ôl gwneud hyn i gyd, y cyfan sydd ar ôl yw dadbacio'r fframiau cywasgedig yng nghyd-destun y camau a gyflawnir. Rhaid hysbysu'r datgodiwr yn benodol am y penderfyniadau a wneir gan yr amgodiwr. Rhaid darparu'r holl wybodaeth angenrheidiol i'r datgodiwr: dyfnder did, gofod lliw, cydraniad, gwybodaeth ragfynegi (fectorau cynnig, rhagfynegiad INTER cyfeiriadol), proffil, lefel, cyfradd ffrâm, math o ffrâm, rhif ffrâm a llawer mwy.

Byddwn yn edrych yn gyflym ar y llif didau H.264. Ein cam cyntaf yw creu llif did H.264 lleiaf (mae FFmpeg yn ddiofyn yn ychwanegu'r holl opsiynau amgodio megis SEI NAL - byddwn yn darganfod beth ydyw ychydig ymhellach). Gallwn wneud hyn gan ddefnyddio ein cadwrfa ein hunain a FFmpeg.

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

Bydd y gorchymyn hwn yn cynhyrchu llif did amrwd H.264 gydag un ffrâm, cydraniad 64 × 64, gyda gofod lliw YUV420. Yn yr achos hwn, defnyddir y ddelwedd ganlynol fel ffrâm.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

H.264 ffrwd did

Safon AVC (H.264) yn penderfynu y bydd gwybodaeth yn cael ei hanfon mewn macroframes (yn yr ystyr rhwydwaith), o'r enw nal (lefel echdynnu rhwydwaith yw hon). Prif nod NAL yw darparu cyflwyniad fideo "cyfeillgar i'r we". Dylai'r safon hon weithio ar setiau teledu (seiliedig ar ffrwd), y Rhyngrwyd (ar sail pecynnau).

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Mae marciwr cydamseru i ddiffinio ffiniau elfennau NAL. Mae pob tocyn cysoni yn cynnwys gwerth 0x00 0x00 0x01, oddieithr yr un gyntaf oll, sydd gyfartal i 0x00 0x00 0x00 0x01. Os byddwn yn lansio hecsdump ar gyfer y llif didau H.264 a gynhyrchir, rydym yn nodi o leiaf dri phatrwm NAL ar ddechrau'r ffeil.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Fel y nodwyd, rhaid i'r datgodiwr wybod nid yn unig y data delwedd, ond hefyd fanylion y fideo, ffrâm, lliwiau, paramedrau a ddefnyddir, a llawer mwy. Mae beit cyntaf pob NAL yn diffinio ei gategori a'i fath.

Dynodwr math NAL Disgrifiad
0 Math anhysbys
1 Darn o ddelwedd wedi'i amgodio heb IDR
2 Adran data sleis wedi'i chodio A
3 Adran data sleis wedi'i chodio B
4 Adran data sleis wedi'i chodio C
5 Darn IDR wedi'i amgodio o ddelwedd IDR
6 Mwy o wybodaeth am yr estyniad SEI
7 Set Paramedr Dilyniant SPS
8 Set o baramedrau delwedd PPS
9 Gwahanydd mynediad
10 Diwedd y dilyniant
11 Diwedd yr edefyn
... ...

Yn nodweddiadol NAL cyntaf ffrwd did yw SPS. Mae'r math hwn o NAL yn gyfrifol am hysbysu am newidynnau amgodio cyffredin megis proffil, lefel, datrysiad, ac ati.

Os byddwn yn hepgor y marciwr cysoni cyntaf, gallwn ddadgodio'r beit cyntaf i ddarganfod pa fath NAL sydd gyntaf.

Er enghraifft, y beit cyntaf ar ôl y tocyn cysoni yw 01100111, lle mae'r rhan gyntaf (0) sydd ym maes forbidden_zero_bit. 2 did nesaf (11) yn dweud wrthym y maes nal_ref_idc, sy'n nodi a yw'r NAL hwn yn faes cyfeirio ai peidio. A'r 5 did sy'n weddill (00111) yn dweud wrthym y maes nal_uned_math, yn yr achos hwn y bloc SPS ydyw (7) NAL.

Ail beit (deuaidd=01100100, hecs=0x64, Rhagfyr=100) yn SPS NAL yw'r maes proffil_idc, sy'n dangos y proffil a ddefnyddiodd yr amgodiwr. Yn yr achos hwn, defnyddiwyd proffil uchel cyfyngedig (hy, proffil uchel heb gefnogaeth dwy-gyfeiriadol B-segment).

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Os edrychwch ar y fanyleb bitstream H.264 ar gyfer SPS NAL, byddwn yn dod o hyd i lawer o werthoedd ar gyfer enw paramedr, categori a disgrifiad. Er enghraifft, gadewch i ni edrych ar y meysydd pic_lled_in_mbs_minws_1 и pic_height_in_map_units_minus_1.

Enw paramedr categori Disgrifiad
pic_lled_in_mbs_minws_1 0 ue(v)
pic_height_in_map_units_minus_1 0 ue(v)

Os byddwn yn perfformio rhai gweithrediadau mathemategol gyda gwerthoedd y meysydd hyn, byddwn yn cael datrysiad. Gall un gynrychioli 1920 x 1080 gan ddefnyddio pic_lled_in_mbs_minws_1 gyda gwerth o 119 ((119 + 1) * macroblock_size = 120 * 16 = 1920). Unwaith eto, er mwyn arbed lle, yn lle amgodio 1920, fe wnaethom hynny gyda 119.

Os byddwn yn parhau i wirio ein fideo a grëwyd ar ffurf ddeuaidd (er enghraifft: xxd -b -c 11 v/minimal_yuv420.h264), yna gallwch chi fynd i'r NAL olaf, sef y ffrâm ei hun.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Yma gwelwn ei 6 gwerth beit cyntaf: 01100101 10001000 10000100 00000000 00100001 11111111. Gan ei bod yn hysbys bod y beit cyntaf yn nodi'r math NAL, yn yr achos hwn (00101) yn ddarn IDR (5), ac yna gallwch ei archwilio ymhellach:

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Gan ddefnyddio gwybodaeth y fanyleb, bydd yn bosibl dadgodio'r math darn (math_sleisen) a rhif ffrâm (ffrâm_num) ymhlith meysydd pwysig eraill.

I gael gwerthoedd rhai meysydd (ue(v), me(v), se(v) neu te(v)), mae angen inni ddadgodio'r darn gan ddefnyddio datgodiwr arbennig yn seiliedig ar cod Golomb esbonyddol. Mae'r dull hwn yn effeithlon iawn ar gyfer amgodio gwerthoedd newidiol, yn enwedig pan fo llawer o werthoedd rhagosodedig.

Y gwerthoedd math_sleisen и ffrâm_num o'r fideo hwn yw 7 (I-darn) a 0 (ffrâm gyntaf).

Gellir meddwl am ychydig o ffrwd fel protocol. Os ydych chi eisiau gwybod mwy am y llif didau, dylech gyfeirio at y fanyleb ITU H.264. Dyma ddiagram macro yn dangos ble mae'r data delwedd (YUV mewn ffurf gywasgedig).

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Gellir archwilio ffrydiau didau eraill, megis VP9, H.265 (HEVC) neu hyd yn oed ein llif didau gorau newydd AV1. Ydyn nhw i gyd yn debyg? Na, ond ar ôl i chi ddeall o leiaf un, mae'n llawer haws deall y gweddill.

Eisiau ymarfer? Archwiliwch ffrwd didau H.264

Gallwch gynhyrchu fideo un ffrâm a defnyddio MediaInfo i archwilio'r llif didau H.264. Mewn gwirionedd, nid oes dim yn eich atal rhag hyd yn oed edrych ar y cod ffynhonnell sy'n dadansoddi'r ffrwd didau H.264 (AVC).

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Yn ymarferol, gallwch ddefnyddio Intel Video Analyzer (a ddywedais eisoes fod y rhaglen yn cael ei thalu, ond mae fersiwn prawf am ddim gyda chyfyngiad o 10 ffrâm?).

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Adolygu

Sylwch fod llawer o godecs modern yn defnyddio'r un model yr ydym newydd ei astudio. Yma, gadewch i ni edrych ar y diagram bloc o'r codec fideo Thor. Mae'n cynnwys yr holl gamau yr ydym wedi mynd drwyddynt. Holl bwrpas y swydd hon yw o leiaf rhoi gwell dealltwriaeth i chi o'r arloesiadau a'r dogfennau yn y maes hwn.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Yn flaenorol, cyfrifwyd y byddai angen 139 GB o ofod disg i storio ffeil fideo yn para awr ar ansawdd 720p a 30 fps. Os ydych chi'n defnyddio'r dulliau a drafodir yn yr erthygl hon (rhyng-ffrâm a rhagfynegiadau mewnol, trawsnewid, meintioli, codio entropi, ac ati), yna gallwch chi gyflawni (yn seiliedig ar y ffaith ein bod yn gwario 0,031 did y picsel), fideo o eithaf ansawdd boddhaol, yn meddiannu dim ond 367,82 MB, nid 139 GB o gof.

Sut mae H.265 yn cyflawni cymhareb cywasgu well na H.264?

Nawr ein bod ni'n gwybod mwy am sut mae codecau'n gweithio, mae'n haws deall sut y gall codecau mwy newydd ddarparu datrysiadau uwch gyda llai o ddarnau.

Os ydym yn cymharu AVC и HEVC, mae'n werth cofio bod hyn bron bob amser yn ddewis rhwng llwyth CPU mwy a chymhareb cywasgu.

HEVC mwy o opsiynau adran (ac is-adran) na AVC, mwy o gyfarwyddiadau rhagfynegi mewnol, codio entropi gwell, a mwy. Mae'r holl welliannau hyn wedi'u gwneud H.265 gallu cywasgu 50% yn fwy na H.264.

Sut mae codec fideo yn gweithio? Rhan 2. Beth, pam, sut

Rhan gyntaf: Hanfodion gweithio gyda fideo a delweddau

Ffynhonnell: hab.com

Ychwanegu sylw