Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

L-ewwel parti: Bażi tal-ħidma b'vidjow u stampi

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

X'inhu? Codec tal-vidjo huwa biċċa softwer/ħardwer li tikkompressa u/jew tiddekompressa vidjo diġitali.

Għal liema? Minkejja ċerti limitazzjonijiet kemm f'termini ta 'bandwidth u
u f'termini ta 'spazju għall-ħażna tad-dejta, is-suq jitlob vidjo ta' kwalità dejjem aktar ogħla. Tiftakar kif fl-aħħar post aħna kkalkulajna l-minimu meħtieġ għal 30 frame kull sekonda, 24 bits kull pixel, b'riżoluzzjoni ta '480x240? Irċevejna 82,944 Mbit/s mingħajr kompressjoni. Il-kompressjoni bħalissa hija l-uniku mod kif ġeneralment tittrasmetti HD/FullHD/4K lill-iskrins tat-televiżjoni u lill-Internet. Kif jinkiseb dan? Issa ejja nħarsu fil-qosor lejn il-metodi ewlenin.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

It-traduzzjoni saret bl-appoġġ ta' EDISON Software.

Aħna impenjati integrazzjoni ta' sistemi ta' sorveljanza bil-vidjoU qed niżviluppaw mikrotomografu.

Codec vs Kontenitur

Żball komuni li l-ġodda jagħmlu huwa li jħawdu l-codec tal-vidjo diġitali u l-kontenitur tal-vidjo diġitali. Kontenitur huwa ċertu format. Wrapper li fih metadata tal-vidjo (u possibilment awdjo). Il-vidjo kompressat jista 'jitqies bħala tagħbija ta' kontenitur.

Tipikament, l-estensjoni ta 'fajl tal-vidjo tindika t-tip ta' kontenitur tiegħu. Per eżempju, il-fajl video.mp4 huwa probabbilment kontenitur MPEG-4 Parti 14, u fajl bl-isem video.mkv huwa l-aktar probabbli matrijoska. Biex tkun kompletament ċert mill-codec u l-format tal-kontenitur, tista 'tuża FFmpeg jew MediaInfo.

Ftit storja

Qabel ma naslu Kif?, ejja nieħdu ftit adsa fl-istorja biex nifhmu xi codecs anzjani ftit aħjar.

Codec tal-vidjo H.261 deher fl-1990 (teknikament - fl-1988) u nħoloq biex jopera b'rata ta 'trasferiment tad-data ta' 64 Kbps. Diġà uża ideat bħal subkampjunar tal-kulur, makroblokki, eċċ. L-istandard tal-codec tal-vidjo ġie ppubblikat fl-1995 H.263, li żviluppa sal-2001.

L-ewwel verżjoni tlestiet fl-2003 H.264 / AVC. Dik l-istess sena, TrueMotion ħarġet il-codec tal-vidjo b'telf tagħha b'xejn imsejjaħ VP3. Google xtrat il-kumpanija fl-2008, rilaxx VP8 l-istess sena. F'Diċembru 2012, Google ħarġet VP9, u huwa appoġġjat f'madwar ¾ tas-suq tal-browser (inkluż it-tagħmir mobbli).

AV1 huwa codec tal-vidjo b'xejn u miftuħ ġdid żviluppat minn Alleanza għall-Midja Miftuħa (AOMedia), li tinkludi l-aktar kumpaniji famużi, bħal: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel u Cisco. L-ewwel verżjoni tal-codec, 0.1.0, ġiet ippubblikata fis-7 ta’ April 2016.

Twelid ta' AV1

Fil-bidu tal-2015, Google kienet qed taħdem fuqha VP10Xiph (li hija proprjetà ta' Mozilla) kien qed jaħdem fuqu Daala, u Cisco għamel il-codec tal-vidjo b'xejn tiegħu stess imsejjaħ Thor.

Imbagħad MPEG LA l-ewwel ħabbru limiti annwali għal HEVC (H.265) u ħlas 8 darbiet ogħla minn għal H.264, iżda malajr reġgħu bidlu r-regoli:

l-ebda limitu annwali,
ħlas tal-kontenut (0,5% tad-dħul) u
il-ħlas ta ' l-unità hija madwar 10 darbiet ogħla minn H.264.

Alleanza għall-Midja Miftuħa inħoloq minn kumpaniji minn oqsma differenti: manifatturi tat-tagħmir (Intel, AMD, ARM, Nvidia, Cisco), fornituri tal-kontenut (Google, Netflix, Amazon), kreaturi tal-browser (Google, Mozilla) u oħrajn.

Il-kumpaniji kellhom għan komuni - codec tal-vidjo mingħajr royalties. Imbagħad jidher AV1 b'liċenzja ta' privattiva ħafna aktar sempliċi. Timothy B. Terryberry ta preżentazzjoni tal-isturdament li saret l-oriġini tal-kunċett attwali AV1 u l-mudell tal-liċenzjar tiegħu.

Inti tkun sorpriż li tkun taf li tista 'tanalizza l-codec AV1 permezz ta' browser (dawk interessati jistgħu jmorru fuq aomanalyzer.org).

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Codec universali

Ejja nħarsu lejn il-mekkaniżmi ewlenin sottostanti l-codec tal-vidjo universali. Ħafna minn dawn il-kunċetti huma utli u jintużaw f'codecs moderni bħal VP9, AV1 и HEVC. Inwissik li ħafna mill-affarijiet spjegati se jiġu ssimplifikati. Xi drabi se jintużaw eżempji tad-dinja reali (bħal H.264) biex juru t-teknoloġiji.

L-ewwel pass - il-qsim tal-immaġni

L-ewwel pass huwa li taqsam il-qafas f'diversi sezzjonijiet, subsezzjonijiet u lil hinn.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Għalxiex? Hemm ħafna raġunijiet. Meta naqsmu immaġni, nistgħu nbassru b'mod aktar preċiż il-vettur tal-moviment billi nużaw sezzjonijiet żgħar għal partijiet żgħar li jiċċaqilqu. Filwaqt li għal sfond statiku tista 'tillimita lilek innifsek għal sezzjonijiet akbar.

Il-codecs tipikament jorganizzaw dawn it-taqsimiet f'sezzjonijiet (jew biċċiet), makroblokki (jew blokki ta 'siġar ta' kodifikazzjoni), u subsezzjonijiet multipli. Id-daqs massimu ta 'dawn il-ħitan ivarja, HEVC jissettjah għal 64x64 filwaqt li AVC juża 16x16, u subpartitions jistgħu jinqasmu sa daqsijiet 4x4.

Tiftakar it-tipi ta 'frejms mill-aħħar artiklu?! L-istess jista 'jiġi applikat għal blokki, għalhekk jista' jkollna framment I, blokk B, macroblokk P, eċċ.

Għal dawk li jridu jipprattikaw, ara kif l-immaġni hija maqsuma f'taqsimiet u sottotaqsimiet. Biex tagħmel dan, tista 'tuża dik diġà msemmija fl-artikolu preċedenti. Analizzatur Intel Video Pro (dik li titħallas, iżda b'verżjoni ta 'prova b'xejn li hija limitata għall-ewwel 10 frejms). Taqsimiet analizzati hawn VP9:

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

It-2 pass - it-tbassir

Ladarba jkollna sezzjonijiet, nistgħu nagħmlu tbassir astroloġiku għalihom. Għal Tbassir tal-INTER għandhom jiġu trasferiti vettori tal-moviment u l-bqija, u għat-tbassir INTRA jiġi trażmess direzzjoni tat-tbassir u l-bqija.

It-3 pass - trasformazzjoni

Ladarba jkollna blokka residwa (sezzjoni mbassra → sezzjoni reali), huwa possibbli li tittrasformaha b'tali mod li nkunu nafu liema pixels jistgħu jintremew filwaqt li nżommu l-kwalità ġenerali. Hemm xi trasformazzjonijiet li jipprovdu l-imġieba eżatta.

Għalkemm hemm metodi oħra, ejja nħarsu lejhom f'aktar dettall. trasformata tal-kosinju diskreta (DCT - minn trasformazzjoni tal-kosinju diskreta). Funzjonijiet ewlenin tad-DCT:

  • Jikkonverti blokki ta 'pixels fi blokki ta' daqs ugwali ta 'koeffiċjenti ta' frekwenza.
  • Jikkondensa l-qawwa biex tgħin telimina r-redundancy spazjali.
  • Jipprovdi riversibbiltà.

2 ta’ Frar 2017 Sintra R.J. (Cintra, RJ) u Bayer F.M. (Bayer FM) ippubblikat artiklu dwar trasformazzjoni bħal DCT għall-kompressjoni tal-immaġni li teħtieġ biss 14-il żieda.

Tinkwetax jekk ma tifhimx il-benefiċċji ta 'kull oġġett. Issa ejja nużaw eżempji speċifiċi biex naraw il-valur reali tagħhom.

Ejja nieħdu dan il-blokk ta' pixels 8x8:

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Din il-blokka hija mogħtija fl-immaġni ta' 8 bi 8 pixel li ġejja:

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Applika DCT għal dan il-blokk ta 'pixels u ikseb blokka ta' koeffiċjenti 8x8:

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

U jekk nirrendu dan il-blokk ta 'koeffiċjenti, se nġibu l-immaġni li ġejja:

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Kif tistgħu taraw, ma tidhirx bħall-immaġni oriġinali. Tista 'tara li l-ewwel koeffiċjent huwa differenti ħafna mill-oħrajn kollha. Dan l-ewwel koeffiċjent huwa magħruf bħala l-koeffiċjent DC, li jirrappreżenta l-kampjuni kollha fil-firxa ta 'input, xi ħaġa bħal medja.

Din il-blokka ta 'koeffiċjenti għandha proprjetà interessanti: tifred komponenti ta' frekwenza għolja minn dawk ta 'frekwenza baxxa.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

F'immaġni, il-biċċa l-kbira tal-qawwa hija kkonċentrata fi frekwenzi aktar baxxi, għalhekk jekk tikkonverti l-immaġni fil-komponenti tal-frekwenza tagħha u tarmi l-koeffiċjenti ta 'frekwenza ogħla, tista' tnaqqas l-ammont ta 'dejta meħtieġa biex tiddeskrivi l-immaġni mingħajr ma tissagrifika wisq kwalità tal-istampa.

Il-frekwenza tirreferi għal kemm is-sinjal jinbidel malajr.

Ejja nippruvaw napplikaw l-għarfien miksub fil-każ tat-test billi tikkonverti l-immaġni oriġinali għall-frekwenza tagħha (blokk ta 'koeffiċjenti) billi tuża DCT u mbagħad twarrab parti mill-koeffiċjenti l-inqas importanti.

L-ewwel naqilbuha għad-dominju tal-frekwenza.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Sussegwentement, narmi parti (67%) tal-koeffiċjenti, prinċipalment il-parti t'isfel tal-lemin.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Fl-aħħarnett, nibnu mill-ġdid l-immaġni minn din il-blokka ta 'koeffiċjenti mormija (ftakar, trid tkun maqlub) u nqabbluha mal-oriġinal.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Naraw li tixbaħ l-immaġni oriġinali, iżda hemm ħafna differenzi mill-oriġinal. Werew 67,1875% u xorta ksibna xi ħaġa li tixbaħ l-oriġinal. Kien possibbli li jintremew il-koeffiċjenti b'mod aktar maħsub biex tinkiseb immaġni ta 'kwalità saħansitra aħjar, iżda dan huwa suġġett li jmiss.

Kull koeffiċjent huwa ġġenerat bl-użu tal-pixels kollha

Importanti: kull koeffiċjent mhuwiex immappjat direttament għal pixel wieħed, iżda huwa somma peżata tal-pixels kollha. Din il-grafika aqwa turi kif l-ewwel u t-tieni koeffiċjenti huma kkalkulati bl-użu ta 'piżijiet uniċi għal kull indiċi.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Tista 'wkoll tipprova tara d-DCT billi tħares lejn formazzjoni ta' immaġini sempliċi bbażata fuqha. Pereżempju, hawn is-simbolu A ġġenerat bl-użu ta' kull piż tal-koeffiċjent:

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

4th pass - kwantizzazzjoni

Wara li narmi xi koeffiċjenti fil-pass preċedenti, fl-aħħar pass (trasformazzjoni) inwettqu forma speċjali ta 'kwantizzazzjoni. F'dan l-istadju huwa aċċettabbli li titlef l-informazzjoni. Jew, aktar sempliċiment, se nikkwantizzaw il-koeffiċjenti biex niksbu kompressjoni.

Kif tista' tikkwantizza blokka ta' koeffiċjenti? Wieħed mill-aktar metodi sempliċi huwa kwantizzazzjoni uniformi, meta nieħdu blokka, naqsmuha b'valur wieħed (b'10) u arrotonda r-riżultat.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Nistgħu nreġġgħu lura dan il-blokk ta' koeffiċjenti? Iva, nistgħu, immultiplikat bl-istess valur li bih qsimna.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Dan l-approċċ mhuwiex l-aħjar għax ma jqisx l-importanza ta’ kull koeffiċjent. Wieħed jista 'juża matriċi ta' kwantizzaturi minflok valur wieħed, u din il-matriċi tista 'tisfrutta l-proprjetà DCT billi tikkwantizza l-maġġoranza tan-naħa t'isfel tal-lemin u l-minoranza tax-xellug ta' fuq.

Pass 5 - kodifikazzjoni entropika

Ladarba nkunu kkwantizzat id-data (blokki ta 'l-immaġini, frammenti, frejms), xorta nistgħu nikkompressawha mingħajr telf. Hemm ħafna modi algoritmiċi biex tikkompressa d-data. Se nagħtu ħarsa malajr lejn xi wħud minnhom, għal fehim aktar profond tista' taqra l-ktieb Understanding Compression: Data Compression for Modern Developers ("Nifhmu l-Kompressjoni: Kompressjoni tad-Data għall-Iżviluppaturi Moderni").

Kodifikazzjoni tal-vidjo bl-użu ta ' VLC

Ejja ngħidu li għandna fluss ta 'karattri: a, e, r и t. Il-probabbiltà (li tvarja minn 0 sa 1) ta' kemm-il darba kull karattru jidher fi fluss hija ppreżentata f'din it-tabella.

a e r t
Probabbiltà 0,3 0,3 0,2 0,2

Nistgħu nassenjaw kodiċi binarji uniċi (preferibbilment dawk żgħar) għal dawk l-aktar probabbli, u kodiċijiet akbar għal dawk inqas probabbli.

a e r t
Probabbiltà 0,3 0,3 0,2 0,2
Kodiċi binarju 0 10 110 1110

Aħna nikkompressaw in-nixxiegħa, billi nassumu li nispiċċaw nonfqu 8 bits għal kull karattru. Mingħajr kompressjoni, ikunu meħtieġa 24 bit għal kull karattru. Jekk tissostitwixxi kull karattru bil-kodiċi tiegħu, ikollok iffrankar!

L-ewwel pass huwa li tikkodifika l-karattru e, li hija ugwali għal 10, u t-tieni karattru huwa a, li huwa miżjud (mhux b'mod matematiku): [10][0], u finalment it-tielet karattru t, li jagħmel il-bitstream kompressat finali tagħna ugwali għal [10][0][1110] jew 1001110, li teħtieġ biss 7 bits (3,4 darbiet inqas spazju mill-oriġinal).

Jekk jogħġbok innota li kull kodiċi għandu jkun kodiċi uniku bi prefiss. Algoritmu Huffman jgħinek issib dawn in-numri. Għalkemm dan il-metodu mhux mingħajr difetti tiegħu, hemm codecs tal-vidjo li għadhom joffru dan il-metodu algoritmiku għall-kompressjoni.

Kemm l-encoder kif ukoll id-decoder għandu jkollhom aċċess għal tabella tas-simboli bil-kodiċi binarji tagħhom. Għalhekk, huwa wkoll meħtieġ li tintbagħat tabella bħala input.

Kodifikazzjoni aritmetika

Ejja ngħidu li għandna fluss ta 'karattri: a, e, r, s и t, u l-probabbiltà tagħhom hija ppreżentata f'din it-tabella.

a e r s t
Probabbiltà 0,3 0,3 0,15 0,05 0,2

Permezz ta 'din it-tabella, aħna se nibnu firxiet li jkun fihom il-karattri kollha possibbli, magħżula bl-akbar numru.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Issa ejja nikkodifikaw fluss ta 'tliet karattri: jieklu.

L-ewwel agħżel l-ewwel karattru e, li hija fis-submedda minn 0,3 sa 0,6 (mhux inklużi). Nieħdu din is-subfirxa u naqsmuha mill-ġdid fl-istess proporzjonijiet bħal qabel, iżda għal din il-firxa ġdida.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Ejja nkomplu nikkodifikaw il-fluss tagħna jieklu. Issa ħu t-tieni karattru a, li hija fis-subfirxa l-ġdida minn 0,3 sa 0,39, u mbagħad ħu l-aħħar karattru tagħna t u tirrepeti l-istess proċess għal darb'oħra, irridu nġibu s-sub-medda finali minn 0,354 sa 0,372.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Għandna bżonn biss nagħżlu numru fl-aħħar submedda minn 0,354 sa 0,372. Ejja nagħżlu 0,36 (imma tista' tagħżel kwalunkwe numru ieħor f'din is-subfirxa). B'dan in-numru biss inkunu nistgħu nirrestawraw il-fluss oriġinali tagħna. Huwa bħallikieku konna nfasslu linja fil-firxiet biex jikkodifikaw nixxiegħa tagħna.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

L-operazzjoni inversa (jiġifieri, dekodifikazzjoni) huwa daqstant sempliċi: bin-numru tagħna 0,36 u l-firxa inizjali tagħna, nistgħu nħaddmu l-istess proċess. Imma issa, bl-użu ta 'dan in-numru, aħna nidentifikaw il-fluss kodifikat bl-użu ta' dan in-numru.

Bl-ewwel firxa, ninnotaw li n-numru tagħna jikkorrispondi għall-porzjon, għalhekk dan huwa l-ewwel karattru tagħna. Issa nerġgħu naqsmu din is-sub-firxa billi nsegwu l-istess proċess bħal qabel. Hawnhekk tista 'tara li 0,36 jikkorrispondi għas-simbolu a, u wara li rrepejna l-proċess wasalna għall-aħħar karattru t (li jiffurmaw il-fluss kodifikat oriġinali tagħna jieklu).

Kemm l-encoder kif ukoll id-decoder għandu jkollhom tabella ta 'probabbiltajiet ta' simbolu, għalhekk huwa meħtieġ li tibgħatha wkoll fid-dejta tal-input.

Pjuttost eleganti, hux? Min ħareġ b’din is-soluzzjoni kien dabrat intelliġenti. Xi codecs tal-vidjo jużaw din it-teknika (jew għall-inqas joffruha bħala għażla).

L-idea hija li tikkompressa mingħajr telf fluss ta 'bit kwantizzat. Żgur li dan l-artikolu huwa nieqes minn tunnellati ta’ dettalji, raġunijiet, kompromessi, eċċ. Imma jekk inti żviluppatur, għandek tkun taf aktar. Codecs ġodda jippruvaw jużaw algoritmi differenti ta 'kodifikazzjoni ta' entropy bħal ANS.

Pass 6 - format bitstream

Wara li tagħmel dan kollu, jibqa 'li tneħħi l-ippakkjar tal-frejms kompressati fil-kuntest tal-passi mwettqa. Id-decoder għandu jkun infurmat b'mod espliċitu dwar id-deċiżjonijiet meħuda mill-encoder. Id-decoder għandu jiġi pprovdut bl-informazzjoni kollha meħtieġa: fond tal-bit, spazju tal-kulur, riżoluzzjoni, informazzjoni ta 'tbassir (vettori tal-moviment, tbassir INTER direzzjonali), profil, livell, rata ta' qafas, tip ta 'qafas, numru ta' qafas u ħafna aktar.

Aħna ser nagħtu ħarsa malajr lejn il-bitstream H.264. L-ewwel pass tagħna huwa li noħolqu bitstream H.264 minimu (FFmpeg awtomatikament iżid l-għażliet kollha ta’ kodifikazzjoni bħal SEI NAL — insiru nafu x’inhu ftit iktar). Nistgħu nagħmlu dan billi nużaw ir-repożitorju tagħna stess u FFmpeg.

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

Dan il-kmand se jiġġenera bitstream mhux maħdum H.264 b'qafas wieħed, riżoluzzjoni 64 × 64, bi spazju tal-kulur YUV420. F'dan il-każ, l-immaġni li ġejja tintuża bħala qafas.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

H.264 bitstream

Standard AVC (H.264) jiddetermina li l-informazzjoni se tintbagħat f'makroframes (fis-sens tan-netwerk), imsejħa nal (dan huwa livell ta' astrazzjoni tan-netwerk). L-għan ewlieni ta 'NAL huwa li jipprovdi preżentazzjoni tal-vidjo "favur għall-web". Dan l-istandard għandu jaħdem fuq it-televiżjonijiet (ibbażat fuq stream), l-Internet (ibbażat fuq il-pakkett).

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Hemm markatur ta 'sinkronizzazzjoni biex jiddefinixxi l-konfini tal-elementi NAL. Kull token tas-sinkronizzazzjoni fih valur 0x00 0x00 0x01, ħlief għall-ewwel waħda, li hija ugwali għal 0x00 0x00 0x00 0x01. Jekk inniedu hexdump għall-bitstream H.264 iġġenerat, aħna nidentifikaw mill-inqas tliet mudelli NAL fil-bidu tal-fajl.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Kif intqal, id-decoder għandu jkun jaf mhux biss id-dejta tal-immaġni, iżda wkoll id-dettalji tal-vidjo, il-qafas, il-kuluri, il-parametri użati u ħafna aktar. L-ewwel byte ta' kull NAL jiddefinixxi l-kategorija u t-tip tiegħu.

Identifikatur tat-tip NAL Deskrizzjoni
0 Tip mhux magħruf
1 Framment ta' immaġni kodifikata mingħajr IDR
2 Taqsima tad-dejta tal-porzjon kodifikat A
3 Taqsima tad-dejta tal-porzjon kodifikat B
4 Taqsima tad-dejta tal-porzjon kodifikat C
5 Framment IDR kodifikat ta' immaġni IDR
6 Aktar informazzjoni dwar l-estensjoni SEI
7 Sett ta' Parametri tas-Sekwenza SPS
8 Sett ta 'parametri tal-immaġni PPS
9 Separatur tal-aċċess
10 Tmiem tas-sekwenza
11 Tarf tal-ħajta
... ...

Tipikament l-ewwel NAL ta 'bit stream huwa PLC. Dan it-tip ta 'NAL huwa responsabbli biex jinforma dwar varjabbli ta' kodifikazzjoni komuni bħal profil, livell, riżoluzzjoni, eċċ.

Jekk naqbżu l-ewwel markatur tas-sinkronizzazzjoni, nistgħu niddekowdja l-ewwel byte biex insibu liema tip NAL huwa l-ewwel.

Pereżempju, l-ewwel byte wara t-token tas-sinkronizzazzjoni huwa 01100111, fejn l-ewwel bit (0) tinsab fil-qasam forbidden_zero_bit. 2 bits li jmiss (11) jgħidilna l-għalqa nal_ref_idc, li jindika jekk dan NAL huwiex qasam ta' referenza jew le. U l-bqija 5 bits (00111) jgħidilna l-għalqa tip_unità_nal, f'dan il-każ huwa l-blokk SPS (7) NAL.

It-tieni byte (binarju=01100100, hex=0x64, diċembru=100) fl-SPS NAL huwa l-qasam profile_idc, li juri l-profil li l-encoder uża. F'dan il-każ, intuża profil għoli limitat (jiġifieri, profil għoli mingħajr appoġġ bidirezzjonali tas-segment B).

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Jekk tħares lejn l-ispeċifikazzjoni tal-bitstream H.264 għal SPS NAL, insibu ħafna valuri għall-isem, il-kategorija u d-deskrizzjoni tal-parametri. Per eżempju, ejja nħarsu lejn l-oqsma pic_width_in_mbs_minus_1 и pic_height_in_map_units_minus_1.

Isem tal-parametru Kategorija Deskrizzjoni
pic_width_in_mbs_minus_1 0 ue(v)
pic_height_in_map_units_minus_1 0 ue(v)

Jekk inwettqu xi operazzjonijiet matematiċi bil-valuri ta 'dawn l-oqsma, se niksbu riżoluzzjoni. Wieħed jista 'jirrappreżenta 1920 x 1080 bl-użu pic_width_in_mbs_minus_1 b'valur ta' 119 ((119 + 1) * macroblock_size = 120 * 16 = 1920). Għal darb'oħra, biex niffrankaw l-ispazju, minflok ma kkodifikajna l-1920, għamilna b'119.

Jekk inkomplu niċċekkjaw il-video maħluq tagħna f'forma binarja (per eżempju: xxd -b -c 11 v/minimal_yuv420.h264), imbagħad tista 'tmur għall-aħħar NAL, li huwa l-qafas innifsu.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Hawnhekk naraw l-ewwel valuri ta '6 byte tagħha: 01100101 10001000 10000100 00000000 00100001 11111111. Peress li l-ewwel byte huwa magħruf li jindika t-tip NAL, f'dan il-każ (00101) huwa framment IDR (5), u mbagħad tista' tesplorah aktar:

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Bl-użu tal-informazzjoni tal-ispeċifikazzjoni, ikun possibbli li jiġi dekodifikat it-tip tal-framment (slice_type) u n-numru tal-qafas (frame_num) fost oqsma importanti oħra.

Biex tikseb il-valuri ta 'xi oqsma (ue(v), me(v), se(v) jew te(v)), għandna bżonn li jiddekowdja l-framment bl-użu ta ' decoder speċjali bbażati fuq kodiċi esponenzjali ta' Golomb. Dan il-metodu huwa effiċjenti ħafna għall-kodifikazzjoni tal-valuri varjabbli, speċjalment meta jkun hemm ħafna valuri default.

Valuri slice_type и frame_num ta' dan il-video huma 7 (I-framment) u 0 (l-ewwel qafas).

Nixxiegħa daqsxejn tista 'titqies bħala protokoll. Jekk trid tkun taf aktar dwar il-bitstream, għandek tirreferi għall-ispeċifikazzjoni ITU H.264. Hawn dijagramma makro li turi fejn tinsab id-dejta tal-immaġini (YUV f'forma kompressata).

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Bitstreams oħra jistgħu jiġu eżaminati, bħal VP9, H.265 (HEVC) jew saħansitra l-aħjar bitstream ġdid tagħna AV1. Huma kollha simili? Le, imma ladarba tifhem mill-inqas wieħed, huwa ħafna aktar faċli li tifhem il-bqija.

Trid tipprattika? Esplora l-bitstream H.264

Tista 'tiġġenera vidjo frejm wieħed u tuża MediaInfo biex teżamina l-bitstream H.264. Fil-fatt, xejn ma jipprevjenik milli anki tħares lejn il-kodiċi tas-sors li janalizza l-bit stream H.264 (AVC).

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Għall-prattika, tista 'tuża Intel Video Pro Analyzer (diġà għedt li l-programm huwa mħallas, iżda hemm verżjoni ta' prova b'xejn b'limitu ta '10 frames?).

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Reviżjoni

Innota li ħafna codecs moderni jużaw l-istess mudell li għadna kemm studjajna. Hawnhekk, ejja tagħti ħarsa lejn id-dijagramma blokk tal-codec tal-vidjo Thor. Fih il-passi kollha li għaddejna minnhom. Il-punt kollu ta 'din il-kariga huwa li mill-inqas jagħtik fehim aħjar tal-innovazzjonijiet u d-dokumentazzjoni f'dan il-qasam.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

Preċedentement, kien ikkalkulat li 139 GB ta 'spazju fuq disk ikunu meħtieġa biex jinħażen fajl tal-vidjo li jdum siegħa f'kwalità 720p u 30 fps. Jekk tuża l-metodi diskussi f'dan l-artikolu (inter-frame u tbassir intern, trasformazzjoni, kwantizzazzjoni, kodifikazzjoni entropika, eċċ.), Imbagħad tista 'tikseb (ibbażat fuq il-fatt li jonfqu 0,031 bits għal kull pixel), vidjo ta' pjuttost kwalità sodisfaċenti, li tokkupa biss 367,82 MB, mhux 139 GB ta 'memorja.

Kif H.265 jikseb proporzjon ta 'kompressjoni aħjar minn H.264?

Issa li nafu aktar dwar kif jaħdmu codecs, huwa aktar faċli li wieħed jifhem kif codecs ġodda jistgħu jwasslu riżoluzzjonijiet ogħla b'inqas bits.

Jekk inqabblu AVC и HEVC, Ta 'min jiftakar li din hija kważi dejjem għażla bejn tagħbija CPU akbar u proporzjon ta' kompressjoni.

HEVC għandha aktar sezzjoni (u subsezzjoni) għażliet minn AVC, direzzjonijiet ta 'tbassir aktar interni, kodifikazzjoni tal-entropija mtejba, u aktar. Dan it-titjib kollu sar H.265 kapaċi jikkompressa 50% aktar minn H.264.

Kif jaħdem codec tal-vidjo? Parti 2. X'inhu, għaliex, kif

L-ewwel parti: Bażi tal-ħidma b'vidjow u stampi

Sors: www.habr.com

Żid kumment