Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

A ’chiad phàirt: Bun-bheachdan a bhith ag obair le bhidio agus ìomhaighean

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Dè? Is e pìos bathar-bog / bathar-cruaidh a th’ ann an codec bhidio a bhios a ’teannachadh agus / no a’ dì-dhùmhlachadh bhidio didseatach.

Airson dè? A dh'aindeoin cuid de chuingealachaidhean an dà chuid a thaobh leud-bann agus
agus a thaobh àite stòraidh dàta, tha a’ mhargaidh ag iarraidh bhidio de chàileachd a tha a’ sìor fhàs nas àirde. A bheil cuimhne agad mar anns a’ phost mu dheireadh a rinn sinn cunntas air an ìre as lugha a dh’ fheumar airson 30 frèamaichean san diog, 24 pìosan gach piogsail, le rùn de 480x240? Fhuair sinn 82,944 Mbit/s às aonais teannachadh. Is e teannachadh an-dràsta an aon dòigh air sgaoileadh HD / FullHD / 4K gu scrionaichean telebhisean agus an eadar-lìn. Ciamar a tha seo air a choileanadh? A-nis leig dhuinn sùil ghoirid a thoirt air na prìomh dhòighean.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Chaidh an eadar-theangachadh a dhèanamh le taic bho EDISON Software.

Tha sinn an sàs amalachadh de shiostaman sgrùdaidh bhidio, a bharrachd air tha sinn a’ leasachadh microtomograph.

Codec vs Container

Is e mearachd cumanta a bhios daoine ùra a ’dèanamh a’ dèanamh mearachd le codec bhidio didseatach agus inneal bhidio didseatach. Is e cruth sònraichte a th’ ann an container. Còmhdach anns a bheil meata-dàta bhidio (agus is dòcha claisneachd). Faodar smaoineachadh air a’ bhidio teannaichte mar uallach pàighidh container.

Mar as trice, tha leudachadh faidhle bhidio a’ nochdadh an seòrsa container aige. Mar eisimpleir, am faidhle video.mp4 'S dòcha container MPEG-4 Pàirt 14, agus tha faidhle air a bheil video.mkv nas coltaiche matryoshka. Gus a bhith gu tur cinnteach mun chruth codec is container, faodaidh tu a chleachdadh FFmpeg no MediaInfo.

Pàirt de dh'eachdraidh

Mus ruig sinn Ciamar?, bheir sinn beagan dàibheadh ​​​​a-steach don eachdraidh gus cuid de chòdaichean nas sine a thuigsinn beagan nas fheàrr.

Codec airson bhidio H.261 nochdadh ann an 1990 (gu teicnigeach - ann an 1988) agus chaidh a chruthachadh gus obrachadh aig ìre gluasad dàta de 64 Kbps. Chleachd e mu thràth beachdan leithid subsampling dath, macroblocks, msaa. Chaidh an inbhe codec bhidio fhoillseachadh ann an 1995 H.263, a thàinig air adhart gu 2001.

Chaidh a’ chiad dreach a chrìochnachadh ann an 2003 H.264 / AVC. An aon bhliadhna sin, leig TrueMotion a-mach an codec bhidio cally an-asgaidh ris an canar VP3. Cheannaich Google a’ chompanaidh ann an 2008, ga leigeil ma sgaoil VP8 an aon bhliadhna. San Dùbhlachd 2012, leig Google a-mach VP9, agus tha e a’ faighinn taic ann an timcheall air ¾ de mhargaidh a’ bhrobhsair (a’ toirt a-steach innealan gluasadach).

AV1 na codec bhidio ùr an-asgaidh agus stòr fosgailte air a leasachadh le Caidreachas airson nam meadhanan fosgailte (AOMmedia), anns a bheil na companaidhean as ainmeil, leithid: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel agus Cisco. Chaidh a’ chiad dreach den codec, 0.1.0, fhoillseachadh air 7 Giblean, 2016.

Rugadh AV1

Tràth ann an 2015, bha Google ag obair air VP10Bha Xiph (a tha le Mozilla) ag obair air Daala, agus rinn Cisco an codec bhidio an-asgaidh aige fhèin ris an canar Thor.

an uair sin LA MPEG crìochan bliadhnail a chaidh ainmeachadh an toiseach airson HEVC (H.265) agus cìs 8 tursan nas àirde na airson H.264, ach cha b’ fhada gus an do dh’atharraich iad na riaghailtean a-rithist:

gun chrìoch bliadhnail,
cìs susbaint (0,5% de theachd a-steach) agus
tha cìs an aonaid mu 10 tursan nas àirde na H.264.

Caidreachas airson nam meadhanan fosgailte air a chruthachadh le companaidhean bho dhiofar raointean: luchd-saothrachaidh uidheamachd (Intel, AMD, ARM, Nvidia, Cisco), solaraichean susbaint (Google, Netflix, Amazon), luchd-cruthachaidh brabhsair (Google, Mozilla) agus feadhainn eile.

Bha amas coitcheann aig na companaidhean - codec bhidio gun rìoghalachd. An uairsin a 'nochdadh AV1 le cead patent mòran nas sìmplidh. Thug Timothy B. Terryberry seachad taisbeanadh iongantach a thàinig gu bhith na thùs den bhun-bheachd AV1 gnàthach agus a mhodail ceadachd.

Bidh iongnadh ort fios a bhith agad gun urrainn dhut an codec AV1 a sgrùdadh tro bhrobhsair (faodaidh an fheadhainn le ùidh a dhol gu aomanalyzer.org).

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Codec uile-choitcheann

Bheir sinn sùil air na prìomh dhòighean a tha mar bhunait don codec bhidio uile-choitcheann. Tha a’ mhòr-chuid de na bun-bheachdan sin feumail agus air an cleachdadh ann an codecs an latha an-diugh leithid VP9, AV1 и HEVC. Tha mi a 'toirt rabhadh dhut gun tèid mòran de na rudan a chaidh a mhìneachadh a dhèanamh nas sìmplidhe. Uaireannan thèid eisimpleirean fìor-saoghail (mar le H.264) a chleachdadh gus an teicneòlas a thaisbeanadh.

A 'chiad cheum - sgoltadh an ìomhaigh

Is e a 'chiad cheum am frèam a roinn ann an grunn earrannan, fo-roinnean agus nas fhaide air falbh.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Airson dè? Tha iomadh adhbhar ann. Nuair a bhios sinn a’ roinn ìomhaigh, is urrainn dhuinn ro-innse nas cinntiche a thoirt air an vectar gluasad le bhith a’ cleachdadh earrannan beaga airson pàirtean beaga gluasadach. Fhad ‘s a tha thu airson cùl-raon statach faodaidh tu thu fhèin a chuingealachadh gu earrannan nas motha.

Mar as trice bidh codecs ag eagrachadh nan earrannan sin ann an earrannan (no pìosan), macroblocks (no còdadh blocaichean craoibhe), agus grunn fho-roinnean. Bidh meud as motha nan sgaraidhean sin ag atharrachadh, bidh HEVC ga chuir gu 64 × 64 fhad ‘s a bhios AVC a’ cleachdadh 16x16, agus faodar fo-roinnean a roinn suas gu meudan 4 × 4.

A bheil cuimhne agad air na seòrsaichean frèamaichean bhon artaigil mu dheireadh?! Faodar an aon rud a chuir an sàs ann am blocaichean, gus am bi I-fragment againn, bloc B, P-macroblock, msaa.

Dhaibhsan a tha airson a bhith ag obair, faic mar a tha an ìomhaigh air a roinn ann an earrannan agus fo-roinnean. Gus seo a dhèanamh, faodaidh tu am fear a chaidh ainmeachadh san artaigil roimhe a chleachdadh. Intel Video Analyzer (am fear a tha pàighte, ach le dreach deuchainn an-asgaidh a tha cuingealaichte ris a’ chiad 10 frèamaichean). Roinnean air an sgrùdadh an seo VP9:

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

An dàrna ìre - ro-innse

Aon uair ‘s gu bheil earrannan againn, is urrainn dhuinn ro-innsean astrological a dhèanamh dhaibh. Airson Ro-aithrisean INTER feumar a ghluasad Vector gluasad agus an còrr, agus airson ro-innse INTRA tha e air a ghluasad stiùireadh ro-innse agus an còrr.

3mh ìre - cruth-atharrachadh

Cho luath ‘s a bhios bloc fuigheall againn (earrann ro-mheasta → fìor roinn), tha e comasach cruth-atharrachadh a dhèanamh air gus am bi fios againn dè na piogsail a dh’ fhaodar a chuir air falbh fhad ‘s a chumas sinn càileachd iomlan. Tha cuid de atharrachaidhean ann a bheir seachad an dearbh ghiùlan.

Ged a tha dòighean eile ann, leig dhuinn sùil nas mionaidiche a thoirt orra. cruth-atharrachadh cosine air leth (DCT - bho cruth-atharrachadh cosine air leth). Prìomh ghnìomhan DCT:

  • Ag atharrachadh blocaichean piogsail gu blocaichean co-ionannachd tricead.
  • A’ dùmhlachadh cumhachd gus cuideachadh le bhith a’ cur às do chall obrach spàsail.
  • A 'toirt seachad sùbailteachd.

2 Gearran, 2017 Sintra R.J. (Cintra, RJ) agus Bayer F.M. (Bayer FM) artaigil mu chruth-atharrachadh coltach ri DCT airson teannachadh ìomhaighean nach fheum ach 14 cur-ris.

Na gabh dragh mura h-eil thu a 'tuigsinn buannachdan gach nì. A-nis cleachdamaid eisimpleirean sònraichte gus am fìor luach fhaicinn.

Gabhamaid am bloc 8x8 piogsail seo:

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Tha am bloca seo air a thoirt a-steach don dealbh 8 le 8 piogsail a leanas:

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Cuir DCT ris a’ bhloc piogsail seo agus faigh bloc de cho-èifeachdan 8 × 8:

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Agus ma bheir sinn seachad am bloc seo de cho-èifeachdan, gheibh sinn an ìomhaigh a leanas:

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Mar a chì thu, chan eil e coltach ris an ìomhaigh thùsail. Chì thu gu bheil a’ chiad cho-èifeachd glè eadar-dhealaichte bhon fheadhainn eile. Canar an co-èifeachd DC ris a’ chiad cho-èifeachd seo, a tha a’ riochdachadh a h-uile sampall anns an raon cuir a-steach, rudeigin mar chuibheasachd.

Tha seilbh inntinneach aig a’ bhloc seo de cho-èifeachdan: bidh e a ’sgaradh phàirtean àrd-tricead bho fheadhainn tricead ìosal.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Ann an ìomhaigh, tha a’ mhòr-chuid den chumhachd air a chuimseachadh aig triceadan nas ìsle, mar sin ma thionndaidheas tu an ìomhaigh gu na co-phàirtean tricead aige agus gun tilg thu air falbh na co-èifeachdan tricead nas àirde, faodaidh tu an ìre de dhàta a tha a dhìth gus cunntas a thoirt air an ìomhaigh a lughdachadh gun a bhith ag ìobradh cus càileachd dealbh.

Tha tricead a’ toirt iomradh air cho luath sa bhios an comharra ag atharrachadh.

Feuchaidh sinn ris an eòlas a fhuaireadh sa chùis deuchainn a chuir an sàs le bhith ag atharrachadh an ìomhaigh thùsail gu tricead (bloc co-èifeachdan) a’ cleachdadh DCT agus an uairsin a’ tilgeil air falbh pàirt de na co-èifeachdan as cudromaiche.

An toiseach bidh sinn ga thionndadh chun raon tricead.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

An ath rud, bidh sinn a’ tilgeadh air falbh pàirt (67%) de na co-èifeachdan, gu h-àraidh am pàirt gu h-ìosal air an làimh dheis.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Mu dheireadh, bidh sinn ag ath-chruthachadh an ìomhaigh bhon bhloc seo de cho-èifeachdan a chaidh a dhubhadh às (cuimhnich, feumaidh e a bhith neo-ghluasadach) agus coimeas a dhèanamh eadar e agus an dreach tùsail.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Chì sinn gu bheil e coltach ris an ìomhaigh thùsail, ach tha mòran eadar-dhealachaidhean ann bhon fhear thùsail. Thilg sinn a-mach 67,1875% agus fhuair sinn fhathast rudeigin a bha coltach ris an fhear thùsail. Bha e comasach na co-èifeachdan a chuir air falbh ann an dòigh nas smaoineachail gus ìomhaigh de chàileachd eadhon nas fheàrr fhaighinn, ach is e sin an ath chuspair.

Tha gach co-èifeachd air a chruthachadh a’ cleachdadh a h-uile piogsail

Cudromach: chan eil gach co-èifeachd air a mhapadh gu dìreach gu aon piogsail, ach tha e na shuim cuideam de gach piogsail. Tha an graf iongantach seo a’ sealltainn mar a tha a’ chiad agus an dàrna co-èifeachdan air an obrachadh a-mach a’ cleachdadh cuideaman a tha gun samhail airson gach clàr-amais.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Faodaidh tu cuideachd feuchainn ris an DCT fhaicinn le bhith a’ coimhead air cruthachadh ìomhaigh shìmplidh stèidhichte air. Mar eisimpleir, seo an samhla A a chaidh a chruthachadh a’ cleachdadh gach cuideam co-èifeachd:

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

4mh ceum - àireamhachadh

Às deidh dhuinn cuid de cho-èifeachdan a thilgeil a-mach aig a ’cheum roimhe, aig a’ cheum mu dheireadh (cruth-atharrachadh) bidh sinn a ’dèanamh seòrsa sònraichte de thomhas. Aig an ìre seo tha e ceadaichte fiosrachadh a chall. No, nas sìmplidh, nì sinn tomhas air na co-èifeachdan gus teannachadh a choileanadh.

Ciamar as urrainn dhut bloc de cho-èifeachdan a thomhas? Is e aon de na dòighean as sìmplidh tomhas èideadh, nuair a bheir sinn bloc, roinn e le aon luach (le 10) agus timcheall air an toradh.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

An urrainn dhuinn a’ bhloc seo de cho-èifeachdan a thionndadh air ais? Faodaidh, faodaidh sinn, ag iomadachadh leis an aon luach leis an do roinn sinn.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Chan eil an dòigh-obrach seo cho math oir chan eil e a’ toirt aire do cho cudromach sa tha gach coefficient. Dh’ fhaodadh aon a bhith a’ cleachdadh matrix de luchd-tomhais an àite aon luach, agus dh’ fhaodadh am matrix seo brath a ghabhail air seilbh DCT le bhith a’ tomhas a’ mhòr-chuid den taobh deas gu h-ìosal agus a’ bheag-chuid den taobh chlì gu h-àrd.

Ceum 5 - còdadh entropy

Aon uair ‘s gu bheil sinn air an dàta a thomhas (blocaichean ìomhaigh, criomagan, frèamaichean), is urrainn dhuinn fhathast a dhlùthadh gun chall. Tha iomadh dòigh algorithmach ann airson dàta a dhlùthadh. Tha sinn a’ dol a thoirt sùil aithghearr air cuid dhiubh, airson tuigse nas doimhne faodaidh tu an leabhar Understanding Compression: Data Compression for Modern Developers ("A’ tuigsinn teannachadh: teannachadh dàta airson luchd-leasachaidh ùr-nodha").

Còdachadh bhidio a’ cleachdadh VLC

Canaidh sinn gu bheil sreath de charactaran againn: a, e, r и t. Tha coltachd (bho 0 gu 1) de cho tric sa nochdas gach caractar ann an sruth air a thaisbeanadh sa chlàr seo.

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

Is urrainn dhuinn còdan dà-chànanach sònraichte (beagan nas fheàrr) a shònrachadh don fheadhainn as coltaiche, agus còdan nas motha don fheadhainn nach eil cho dualtach.

a e r t
Coltachd 0,3 0,3 0,2 0,2
Còd binary 0 10 110 1110

Bidh sinn a 'teannachadh an t-sruth, a' gabhail ris gum bi sinn a 'cosg 8 pìosan airson gach caractar. Às aonais teannachadh, bhiodh feum air 24 pìosan gach caractar. Ma chuireas tu a chòd an àite gach caractar, gheibh thu sàbhalaidhean!

Is e a’ chiad cheum an caractar a chòdachadh e, a tha co-ionann ri 10, agus tha an dàrna caractar a, a tha air a chur ris (chan ann ann an dòigh matamataigeach): [10] [0], agus mu dheireadh an treas caractar t, a tha a’ dèanamh an sruth-bit teannachaidh mu dheireadh againn co-ionann ri [10] [0] [1110] no 1001110, a dh’ fheumas dìreach 7 pìosan (3,4 tursan nas lugha de rùm na am fear tùsail).

Thoir an aire gum feum gach còd a bhith na chòd sònraichte le ro-leasachan. Huffman algairim cuidichidh e thu gus na h-àireamhan sin a lorg. Ged nach eil an dòigh seo às aonais na lochdan aige, tha codecs bhidio ann a tha fhathast a ’tabhann an dòigh algorithmach seo airson teannachadh.

Feumaidh cothrom a bhith aig an dà chuid an encoder agus an decoder air clàr samhla leis na còdan dà-chànanach aca. Mar sin, tha e riatanach cuideachd clàr a chuir mar chuir a-steach.

Còdachadh àireamhachd

Canaidh sinn gu bheil sreath de charactaran againn: a, e, r, s и t, agus tha an coltachd air a thaisbeanadh sa chlàr seo.

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

A’ cleachdadh a’ chlàir seo, togaidh sinn raointean anns am bi a h-uile caractar comasach, air an òrdachadh leis an àireamh as motha.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

A-nis leig leinn sreath de thrì caractaran a chòdachadh: ithe.

An toiseach tagh a’ chiad charactar e, a tha san fho-raon bho 0,3 gu 0,6 (gun a bhith a’ toirt a-steach). Bidh sinn a 'toirt an subrange seo agus ga roinn a-rithist anns na h-aon chuibhreannan mar a bha e roimhe, ach airson an raon ùr seo.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Leanaidh sinn a 'còdadh ar sruth ithe. A-nis gabh an dàrna caractar a, a tha san fho-raon ùr bho 0,3 gu 0,39, agus an uairsin gabh ar caractar mu dheireadh t agus ag ath-aithris an aon phròiseas a-rithist, gheibh sinn an fho-raon mu dheireadh bho 0,354 gu 0,372.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Feumaidh sinn àireamh a thaghadh anns an fho-raon mu dheireadh bho 0,354 gu 0,372. Taghamaid 0,36 (ach faodaidh tu àireamh sam bith eile a thaghadh san fho-raon seo). Is ann dìreach leis an àireamh seo as urrainn dhuinn ar sruth tùsail a thoirt air ais. Tha e mar gum biodh sinn a’ tarraing loidhne taobh a-staigh nan raointean gus ar sruth a chòdachadh.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Tha an obrachadh air ais (is e sin, dì-chòdachadh) a cheart cho sìmplidh: leis an àireamh againn 0,36 agus an raon tùsail againn, is urrainn dhuinn an aon phròiseas a ruith. Ach a-nis, a’ cleachdadh na h-àireimh seo, bidh sinn a’ comharrachadh an t-sruth a chaidh a chòdachadh leis an àireamh seo.

Leis a 'chiad raon, bidh sinn a' mothachadh gu bheil an àireamh againn a 'freagairt ris an t-sreath, mar sin is e seo a' chiad charactar againn. A-nis bidh sinn a 'roinn an fho-raon seo a-rithist le bhith a' leantainn an aon phròiseas mar a bha e roimhe. An seo chì thu gu bheil 0,36 a’ freagairt ris an t-samhla a, agus às deidh dhuinn am pròiseas ath-aithris ràinig sinn an caractar mu dheireadh t (a’ cruthachadh an t-sruth còdaichte tùsail againn ithe).

Feumaidh clàr de choltasachd samhla a bhith aig an dà chuid an encoder agus an decoder, agus mar sin feumar an dàta cuir a-steach a chuir a-steach cuideachd.

Gu math eireachdail, nach eil? Ge bith cò a thàinig suas leis an fhuasgladh seo bha e dona ciallach. Bidh cuid de chòdaichean bhidio a’ cleachdadh an dòigh seo (no co-dhiù ga thabhann mar roghainn).

Is e am beachd a bhith a’ teannachadh sruth beag àireamhaichte. Gu cinnteach tha an artaigil seo ag ionndrainn tonna de mhion-fhiosrachadh, adhbharan, malairt-malairt, msaa. Ach ma tha thu nad leasaiche, bu chòir dhut barrachd fhaighinn a-mach. Bidh codecs ùra a’ feuchainn ri diofar algoirmean còdaidh entropy a chleachdadh leithid ANS.

Ceum 6 - cruth bitstream

Às deidh seo a dhèanamh, chan eil air fhàgail ach na frèamaichean teann a dhì-phapadh ann an co-theacsa nan ceumannan a chaidh a dhèanamh. Feumaidh an decoder innse gu soilleir mu na co-dhùnaidhean a rinn an encoder. Feumar a h-uile fiosrachadh riatanach a thoirt don decoder: doimhneachd bit, àite dath, rùn, fiosrachadh ro-innse ( vectaran gluasad, ro-innse stiùiridh INTER), ìomhaigh, ìre, ìre frèam, seòrsa frèam, àireamh frèam agus mòran a bharrachd.

Bheir sinn sùil aithghearr air an t-sruth bit H.264. 'S e a' chiad cheum a th' againn a bhith a' cruthachadh sruth-bith H.264 as ìsle (bidh FFmpeg gu h-àbhaisteach a' cur ris a h-uile roghainn còdaidh leithid SEI NAL - gheibh sinn a-mach dè a th’ ann beagan nas fhaide). Faodaidh sinn seo a dhèanamh le bhith a’ cleachdadh ar stòr fhèin agus FFmpeg.

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

Ginidh an àithne seo sruth-bit amh H.264 le aon fhrèam, rùn 64 × 64, le àite dath YUV 420. Anns a 'chùis seo, tha an ìomhaigh a leanas air a chleachdadh mar fhrèam.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Sruth-bit H.264

Coitcheann AVC (H.264) a’ dearbhadh gun tèid fiosrachadh a chuir ann am macroframes (ann an seagh lìonra), ris an canar nail (is e seo ìre tarraing lìonra). Is e prìomh amas NAL taisbeanadh bhidio “càirdeil don lìon” a thoirt seachad. Bu chòir don inbhe seo obrachadh air telebhiseanan (stèidhichte air sruthan), an eadar-lìn (stèidhichte air pacaid).

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Tha comharra sioncronaidh ann gus crìochan eileamaidean NAL a mhìneachadh. Tha luach anns gach tòcan sioncranachaidh 0x00 0x00 0x01, ach a mhàin a' cheud fhear, a tha co-ionnan ri 0x00 0x00 0x00 0x01. Ma chuireas sinn air bhog hexdump airson an t-sruth-bit H.264 gineadh, bidh sinn a’ comharrachadh co-dhiù trì pàtrain NAL aig toiseach an fhaidhle.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Mar a chaidh a ràdh, feumaidh fios a bhith aig an decoder chan ann a-mhàin air an dàta ìomhaigh, ach cuideachd air mion-fhiosrachadh a ’bhidio, frèam, dathan, paramadairean a chaidh a chleachdadh, agus mòran a bharrachd. Tha a’ chiad byte de gach NAL a’ mìneachadh a roinn agus a sheòrsa.

Seòrsa aithnichear NAL Tuairisgeul
0 Seòrsa neo-aithnichte
1 Criomag ìomhaigh air a chòdachadh às aonais IDR
2 Earrann dàta sliseag còd A
3 Earrann dàta sliseag còd B
4 Earrann dàta sliseag còd C
5 Criomag IDR air a chòdachadh de dh’ ìomhaigh IDR
6 Barrachd fiosrachaidh mun leudachadh SEI
7 Seata paramadair sreath SPS
8 Seata de pharamadairean ìomhaigh PPS
9 Sgaradair ruigsinneachd
10 Deireadh an t-sreath
11 Deireadh an t-snàthainn
... ...

Mar as trice tha a 'chiad NAL de shruth bit SPS. Tha an seòrsa seo de NAL an urra ri fiosrachadh a thoirt seachad mu chaochladairean còdaidh cumanta leithid ìomhaigh, ìre, rùn, msaa.

Ma leumas sinn air a’ chiad chomharra sioncranachaidh, is urrainn dhuinn a’ chiad byte a dhì-chòdachadh gus faighinn a-mach dè an seòrsa NAL a tha an toiseach.

Mar eisimpleir, is e a’ chiad byte às deidh an tòcan sioncranachaidh 01100111, far a bheil a' chiad phìos (0) tha anns an raon forbidden_zero_bit. An ath 2 phìos (11) ag innse dhuinn an raon nal_ref_idc, a tha a’ nochdadh a bheil an NAL seo na raon fiosrachaidh no nach eil. Agus na 5 pìosan a tha air fhàgail (00111) ag innse dhuinn an raon nal_aonad_seòrsa, sa chùis seo is e am bloc SPS (7) NAL.

An dàrna byte (dàna=01100100, hex=0x64, Dùb=100) ann an SPS Is e NAL an raon pròifil_idc, a sheallas a’ phròifil a chleachd an encoder. Anns a 'chùis seo, chaidh ìomhaigh àrd cuingealaichte a chleachdadh (ie, ìomhaigh àrd gun taic dà-stiùiridh B-segment).

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Ma choimheadas tu air an t-sònrachadh bitstream H.264 airson SPS NAL, gheibh sinn mòran luachan airson ainm paramadair, roinn-seòrsa agus tuairisgeul. Mar eisimpleir, leig dhuinn sùil a thoirt air na raointean pic_width_in_mbs_minus_1 и pic_height_in_mapa_units_minus_1.

Ainm paramadair roinn-seòrsa Tuairisgeul
pic_width_in_mbs_minus_1 0 u(v)
pic_height_in_mapa_units_minus_1 0 u(v)

Ma nì sinn beagan obrachaidhean matamataigeach le luachan nan raointean sin, gheibh sinn fuasgladh. Faodaidh aon riochdachadh 1920 x 1080 a’ cleachdadh pic_width_in_mbs_minus_1 le luach 119 ((119 + 1) * macroblock_size = 120 * 16 = 1920). A-rithist, gus àite a shàbhaladh, an àite a bhith a’ còdachadh 1920, rinn sinn e le 119.

Ma chumas sinn oirnn a’ sgrùdadh ar bhidio cruthaichte ann an cruth binary (mar eisimpleir: xxd -b -c 11 v/minimal_yuv420.h264), faodaidh tu a dhol chun an NAL mu dheireadh, is e sin am frèam fhèin.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

An seo chì sinn a’ chiad 6 luachan byte aige: 01100101 10001000 10000100 00000000 00100001 11111111. Leis gu bheil fios gu bheil a’ chiad byte a’ nochdadh an seòrsa NAL, anns a’ chùis seo (00101) na chriomag IDR (5), agus an uairsin faodaidh tu tuilleadh a sgrùdadh:

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

A’ cleachdadh an fhiosrachaidh sònrachaidh, bidh e comasach an seòrsa criomag a dhì-chòdachadh (sliseag_seòrsa) agus àireamh frèam (frèam_num) am measg raointean cudromach eile.

Gus luachan cuid de raointean fhaighinn (ue(v), me(v), se(v) no te(v)), feumaidh sinn a’ chriomag a dhì-chòdachadh le bhith a’ cleachdadh decoder sònraichte stèidhichte air Còd Golomb exponential. Tha an dòigh seo gu math èifeachdach airson còdachadh luachan caochlaideach, gu sònraichte nuair a tha mòran luachan bunaiteach ann.

Luachan sliseag_seòrsa и frèam_num den bhidio seo tha 7 (I-fragment) agus 0 (a’ chiad fhrèam).

Faodar smaoineachadh air bitstream mar phròtacal. Ma tha thu airson barrachd fhaighinn a-mach mun bitstream, bu chòir dhut iomradh a thoirt air an t-sònrachadh ITU H.264. Seo diagram macro a’ sealltainn far a bheil dàta an ìomhaigh (YUV ann an cruth teann).

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Faodar sruthan eile a sgrùdadh, leithid VP9, H.265 (HEVC) no eadhon an sruth bit ùr as fheàrr againn AV1. A bheil iad uile coltach? Chan e, ach aon uair ‘s gu bheil thu a’ tuigsinn co-dhiù aon, tha e tòrr nas fhasa an còrr a thuigsinn.

A bheil thu airson eacarsaich? Rannsaich an sruth-bith H.264

Faodaidh tu bhidio aon fhrèam a ghineadh agus MediaInfo a chleachdadh gus an sruth bit a sgrùdadh H.264. Gu dearbh, chan eil dad a 'cur casg ort bho bhith a' coimhead air a 'chòd stòr a bhios a' sgrùdadh an t-sruth bit H.264 (AVC).

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Airson cleachdadh, faodaidh tu Intel Video Analyzer a chleachdadh (an robh mi ag ràdh gu bheil am prògram pàighte, ach tha dreach deuchainn an-asgaidh ann le crìoch de 10 frèamaichean?).

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

sealladh farsaing

Thoir an aire gu bheil mòran de chòdaichean an latha an-diugh a’ cleachdadh an aon mhodail ris an do rinn sinn sgrùdadh. An seo, leig dhuinn sùil a thoirt air an diagram bloc den codec bhidio Thor. Tha e a’ toirt a-steach a h-uile ceum air an deach sinn troimhe. Is e puing iomlan na dreuchd seo co-dhiù tuigse nas fheàrr a thoirt dhut mu na h-innleachdan agus na sgrìobhainnean san raon seo.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

Roimhe sin, chaidh a thomhas gum biodh feum air 139 GB de àite diosc gus faidhle bhidio a stòradh a mhaireas uair a thìde aig càileachd 720p agus 30 fps. Ma chleachdas tu na dòighean air an deach beachdachadh san artaigil seo (ro-innse eadar-fhrèam agus taobh a-staigh, cruth-atharrachadh, tomhas, còdadh entropy, msaa), faodaidh tu a choileanadh (stèidhichte air an fhìrinn gu bheil sinn a ’caitheamh 0,031 pìosan gach piogsail), bhidio de gu math càileachd riarachail, a 'gabhail a-steach dìreach 367,82 MB, chan e 139 GB de chuimhne.

Ciamar a choileanas H.265 co-mheas teannachaidh nas fheàrr na H.264?

A-nis gu bheil barrachd fios againn mu mar a tha codecs ag obair, tha e nas fhasa tuigsinn mar as urrainn dha codecs nas ùire rùintean nas àirde a lìbhrigeadh le nas lugha de bhuillean.

Ma nì sinn coimeas AVC и HEVC, is fhiach cuimhneachadh gu bheil seo cha mhòr an-còmhnaidh na roghainn eadar luchdan CPU nas motha agus co-mheas teannachaidh.

HEVC tha barrachd roghainnean earrann (agus fo-roinn) na AVC, barrachd stiùiridhean ro-innse a-staigh, còdadh entropy nas fheàrr, agus barrachd. Chaidh na leasachaidhean sin uile a dhèanamh H.265 comasach air teannachadh 50% nas motha na H.264.

Ciamar a tha codec bhidio ag obair? Pàirt 2. Dè, carson, ciamar

A ’chiad phàirt: Bun-bheachdan a bhith ag obair le bhidio agus ìomhaighean

Source: www.habr.com

Cuir beachd ann