Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

ʻO ka hapa mua: Nā kumu o ka hana me ka wikiō a me nā kiʻi

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Pehea? ʻO ka codec wikiō he ʻāpana o ka lako polokalamu/mea paʻa e hoʻopaʻa a/a i ʻole e hoʻopau i ka wikiō kikohoʻe.

No ke aha? ʻOiai kekahi mau palena ma ke ʻano o ka bandwidth a me
a ma ke ʻano o ka waiho ʻana o ka ʻikepili, koi ka mākeke i ka wikiō kiʻekiʻe aʻe. Ke hoʻomanaʻo nei ʻoe pehea i ka pou hope loa mākou i helu ai i ka palena liʻiliʻi i koi ʻia no 30 mau papa i kēlā me kēia kekona, 24 bits no ka pika, me ka hoʻonā o 480x240? Ua loaʻa iā mākou he 82,944 Mbit/s me ka ʻole o ka hoʻopaʻa ʻana. ʻO ke kaomi ʻana i kēia manawa ke ala wale nō e hoʻouna maʻamau i ka HD/FullHD/4K i nā pale kīwī a me ka Pūnaewele. Pehea e hoʻokō ʻia ai kēia? I kēia manawa, e nānā pōkole kākou i nā ʻano kumu nui.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Ua hana ʻia ka unuhi me ke kākoʻo o EDISON Software.

Ke komo nei makou ka hoʻohui ʻana o nā ʻōnaehana nānā wikiō, a me ke kūkulu nei mākou i kahi microtomograph.

Codec vs ipu

ʻO kahi kuhi hewa maʻamau o nā newbies e huikau i ka codec wikiō kikohoʻe a me ka ipu wikiō kikohoʻe. ʻO kahi pahu kahi ʻano ʻano. He wīwī i loaʻa ka wikiō (a me ka leo paha) metadata. Hiki ke noʻonoʻo ʻia ke wikiō i hoʻopaʻa ʻia ma ke ʻano he pahu pahu.

ʻO ka maʻamau, ʻo ka hoʻonui ʻia o kahi faila wikiō e hōʻike ana i kona ʻano pahu. No ka laʻana, he pahu paha ka faila video.mp4 MPEG-4 ʻāpana 14, a he faila i kapa ʻia ʻo video.mkv matryoshka. No ka maopopo loa i ka codec a me ka pahu pahu, hiki iā ʻoe ke hoʻohana FFmpeg ai ole ia, MediaInfo.

He wahi moʻolelo

Ma mua o ko mākou hiki ʻana i Pehea?, e luʻu liʻiliʻi kākou i ka mōʻaukala no ka hoʻomaopopo ʻana i kekahi mau codec kahiko.

Video codec H.261 ʻike ʻia i ka makahiki 1990 (ma ka ʻenehana - i ka makahiki 1988) a ua hana ʻia e hana ma ka helu hoʻoili ʻikepili o 64 Kbps. Ua hoʻohana mua ia i nā manaʻo e like me ke kala subsampling, macroblocks, etc. Ua paʻi ʻia ka maʻamau codec video ma 1995 H.263, i kūkulu ʻia a hiki i ka makahiki 2001.

Ua hoʻopau ʻia ka mana mua i ka makahiki 2003 H.264 / AVC. I kēlā makahiki hoʻokahi, ua hoʻokuʻu ʻo TrueMotion i kāna codec wikiō nalowale i kapa ʻia VP3. Ua kūʻai ʻo Google i ka hui ma 2008, hoʻokuʻu VP8 ka makahiki hookahi. I Dekemaba 2012, ua hoʻokuʻu ʻo Google VP9, a kākoʻo ʻia ma kahi o ¾ o ka mākeke polokalamu kele pūnaewele (me nā polokalamu kelepona).

AV1 he codec wikiō hou manuahi a wehe ʻia e Alliance for Open Media (AOMedia), e pili ana i nā hui kaulana loa, e like me: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel a me Cisco. Ua paʻi ʻia ka mana mua o ka codec, 0.1.0 ma ʻApelila 7, 2016.

Hanau o AV1

I ka hoʻomaka ʻana o 2015, ke hana nei ʻo Google VP10Ke hana nei ʻo Xiph (no Mozilla). Daala, a ua hana ʻo Cisco i kāna codec wikiō manuahi i kapa ʻia Thor.

laila MPEG LA hoolaha mua i na palena makahiki no HEVC (H.265) a he 8 manawa kiʻekiʻe ma mua o ka H.264, akā ua hoʻololi hou lākou i nā lula:

ʻaʻohe palena makahiki,
uku maʻiʻo (0,5% o ka loaʻa kālā) a
ʻo ka uku ʻāpana ma kahi o 10 mau manawa kiʻekiʻe ma mua o H.264.

Alliance for Open Media ua hana ʻia e nā hui mai nā ʻano like ʻole: nā mea hana mea hana (Intel, AMD, ARM, Nvidia, Cisco), nā mea hoʻolako kikoʻī (Google, Netflix, Amazon), nā mea hana pūnaewele (Google, Mozilla) a me nā mea ʻē aʻe.

He pahuhopu maʻamau nā hui - he codec wikiō manuahi ʻole. A laila puka mai AV1 me ka laikini patent maʻalahi loa. Ua hāʻawi ʻo Timothy B. Terryberry i kahi hōʻike kupanaha i lilo i kumu o ka manaʻo AV1 o kēia manawa a me kāna kumu hoʻohālike laikini.

Pīhoihoi ʻoe i ka ʻike hiki iā ʻoe ke nānā i ka codec AV1 ma o kahi polokalamu kele (hiki i ka poʻe makemake ke hele i aomanalyzer.org).

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Codec puni honua

E nānā kākou i nā hana nui e hoʻokumu ana i ka codec video universal. Pono ka hapa nui o kēia mau manaʻo a hoʻohana ʻia i nā codec hou e like me VP9, AV1 и HEVC. Ke aʻo aku nei au iā ʻoe e maʻalahi ka nui o nā mea i wehewehe ʻia. I kekahi manawa e hoʻohana ʻia nā laʻana honua maoli (e like me H.264) e hōʻike i ka ʻenehana.

ʻAkahi 1 - ka wehe ʻana i ke kiʻi

ʻO ka hana mua, ʻo ia ka hoʻokaʻawale ʻana i ke kiʻi i nā ʻāpana he nui, nā ʻāpana a i ʻole.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

He aha ke kumu? Nui nā kumu. Ke hoʻokaʻawale mākou i kahi kiʻi, hiki iā mākou ke wānana pololei i ka neʻe ʻana ma o ka hoʻohana ʻana i nā ʻāpana liʻiliʻi no nā ʻāpana neʻe liʻiliʻi. ʻOiai no kahi kāʻei static hiki iā ʻoe ke kaupalena iā ʻoe iho i nā ʻāpana nui.

Hoʻonohonoho maʻamau nā codec i kēia mau ʻāpana i nā ʻāpana (a i ʻole nā ​​ʻāpana), macroblocks (a i ʻole coding tree blocks), a me nā ʻāpana he nui. ʻOkoʻa ka nui o kēia mau ʻāpana, hoʻonoho ʻo HEVC iā 64x64 aʻo AVC e hoʻohana ana i ka 16x16, a hiki ke hoʻokaʻawale ʻia nā subpartitions a hiki i 4x4 nui.

Ke hoʻomanaʻo nei ʻoe i ke ʻano o nā papa mai ka ʻatikala hope loa?! Hiki ke hoʻohana like i nā poloka, no laila hiki iā mākou ke loaʻa i kahi ʻāpana I, kahi B-block, kahi P-macroblock, etc.

No ka poʻe makemake e hoʻomaʻamaʻa, e nānā i ka māhele ʻana o ke kiʻi i nā ʻāpana a me nā ʻāpana. No ka hana ʻana i kēia, hiki iā ʻoe ke hoʻohana i ka mea i ʻōlelo ʻia ma ka ʻatikala mua. Mea Analyer Video Pro Intel (ʻo ka mea i uku ʻia, akā me kahi mana hoʻāʻo manuahi i kaupalena ʻia i nā papa 10 mua). Nā ʻāpana i kālailai ʻia ma aneʻi VP9:

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

ʻanuʻu 2 - wānana

Ke loaʻa iā mākou nā ʻāpana, hiki iā mākou ke hana i nā wānana astrological no lākou. No ka mea Nā wānana INTER pono e hooliloia nā mea hoʻoneʻe a o ke koena, a no ka wanana INTRA ua hooili ia kuhikuhi wanana a o ke koena.

ʻAkahi 3 - hoʻololi

Ke loaʻa iā mākou kahi poloka koena (ʻāpana wānana → ʻāpana maoli), hiki ke hoʻololi iā ia i ke ala e ʻike ai mākou i nā pika hiki ke hoʻolei ʻia ʻoiai e mālama ana i ka maikaʻi holoʻokoʻa. Aia kekahi mau hoʻololi e hāʻawi i ke ʻano pololei.

ʻOiai he mau ʻano hana ʻē aʻe, e nānā hou aku kākou iā lākou. hoʻololi cosine discrete (DCT - mai hoʻololi cosine discrete). Nā hana nui o DCT:

  • Hoʻololi i nā poloka o nā pikika i mau poloka like-nui o nā koena alapine.
  • Hoʻopili i ka mana e kōkua i ka hoʻopau ʻana i ka redundancy spatial.
  • Hāʻawi i ka hoʻololi.

Pepeluali 2, 2017 Sintra R.J. (Cintra, RJ) a me Bayer F.M. (Bayer FM) i hoʻopuka i kahi ʻatikala e pili ana i kahi hoʻololi like DCT no ka hoʻopili kiʻi ʻana i koi ʻia he 14 mau mea hoʻohui.

Mai hopohopo inā ʻaʻole ʻoe maopopo i nā pono o kēlā me kēia wahi. I kēia manawa e hoʻohana i nā hiʻohiʻona kikoʻī e ʻike i ko lākou waiwai maoli.

E lawe kākou i kēia poloka 8x8 o nā pika:

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Hāʻawi ʻia kēia poloka i kēia kiʻi 8 me 8 pika.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

E hoʻopili i ka DCT i kēia poloka o nā pika a loaʻa kahi poloka 8x8 o nā coefficient:

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

A inā hāʻawi mākou i kēia poloka o nā coefficients, e loaʻa iā mākou ke kiʻi penei:

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

E like me kāu e ʻike ai, ʻaʻole like ia me ke kiʻi kumu. Hiki iā ʻoe ke ʻike he ʻokoʻa loa ka coefficient mua mai nā mea ʻē aʻe. Ua ʻike ʻia kēia coefficient mua ʻo ka DC coefficient, e hōʻike ana i nā laʻana a pau i ka hoʻokomo ʻana, kahi mea e like me ka awelika.

He waiwai hoihoi kēia poloka o nā coefficients: hoʻokaʻawale ia i nā ʻāpana kiʻekiʻe mai nā mea haʻahaʻa.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Ma kahi kiʻi, ʻo ka hapa nui o ka mana i hoʻopaʻa ʻia i nā alapine haʻahaʻa, no laila inā e hoʻohuli ʻoe i ke kiʻi i kona mau ʻāpana alapine a hoʻolei i nā coefficient alapine kiʻekiʻe, hiki iā ʻoe ke hōʻemi i ka nui o ka ʻikepili e pono ai e wehewehe i ke kiʻi me ka ʻole o ka kaumaha ʻana i ka maikaʻi o ke kiʻi.

ʻO ka pinepine e pili ana i ka loli koke o ka hōʻailona.

E ho'āʻo kākou e hoʻohana i ka ʻike i loaʻa ma ka hihia hoʻāʻo ma ka hoʻololi ʻana i ke kiʻi kumu i kona alapine (block of coefficients) me ka hoʻohana ʻana i ka DCT a laila e hoʻolei i kahi hapa o nā coefficient koʻikoʻi loa.

ʻO ka mua mākou e hoʻololi iā ia i ka domain frequency.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

A laila, hoʻolei mākou i kahi hapa (67%) o nā coefficients, ʻo ka hapa nui o ka ʻaoʻao ʻākau.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

ʻO ka hope, kūkulu hou mākou i ke kiʻi mai kēia poloka o nā coefficients i hoʻolei ʻia (e hoʻomanaʻo, pono e hoʻohuli ʻia) a hoʻohālikelike ʻia me ke kumu.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

ʻIke mākou ua like ia me ke kiʻi kumu, akā he nui nā ʻokoʻa mai ke kumu. Ua kiola mākou i ka 67,1875% a loaʻa i kahi mea e like me ke kumu. Ua hiki ke hoʻolei i nā coefficient no ka loaʻa ʻana o ke kiʻi ʻoi aku ka maikaʻi o ka maikaʻi, akā ʻo ia ke kumuhana aʻe.

Hoʻokumu ʻia kēlā me kēia coefficient me ka hoʻohana ʻana i nā pika āpau

Mea nui: ʻaʻole paʻi pololei ʻia kēlā me kēia coefficient i hoʻokahi pika, akā he huina kaumaha o nā pika āpau. Hōʻike kēia pakuhi kupanaha i ka helu ʻana o ka helu mua a me ka lua me ka hoʻohana ʻana i nā kaupaona kū hoʻokahi i kēlā me kēia papa kuhikuhi.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Hiki iā ʻoe ke hoʻāʻo e nānā i ka DCT ma ka nānā ʻana i kahi hoʻokumu kiʻi maʻalahi e pili ana iā ia. Eia kekahi laʻana, eia ka hōʻailona A i hana ʻia me ka hoʻohana ʻana i kēlā me kēia paona coefficient:

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

4th step - quantization

Ma hope o ka hoʻolei ʻana i kekahi mau coefficients i ka pae mua, i ka pae hope (hoʻololi) hana mākou i kahi ʻano quantization kūikawā. I kēia pae, ʻae ʻia ka nalowale ʻana o ka ʻike. A i ʻole, ʻoi aku ka maʻalahi, e helu mākou i nā coefficients e hoʻokō ai i ka hoʻoemi.

Pehea ʻoe e hoʻohālikelike ai i kahi poloka o nā coefficients? ʻO kekahi o nā ʻano maʻalahi loa ʻo ia ka quantization like, ke lawe mākou i kahi poloka, e puʻunaue iā ia i hoʻokahi waiwai (me ka 10) a puni ka hopena.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Hiki iā mākou ke hoʻohuli i kēia poloka o nā coefficient? ʻAe, hiki iā mākou ke hoʻonui i ka waiwai like a mākou i puʻunaue ai.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

ʻAʻole maikaʻi kēia ala no ka mea ʻaʻole ia e noʻonoʻo i ke koʻikoʻi o kēlā me kēia coefficient. Hiki i kekahi ke hoʻohana i ka matrix o quantizer ma mua o ka waiwai hoʻokahi, a hiki i kēia matrix ke hoʻohana i ka waiwai DCT ma ka helu ʻana i ka hapa nui o ka ʻaoʻao hema a me ka hapa liʻiliʻi o ka ʻaoʻao hema.

KaʻAnuʻu 5 - entropy coding

I ka manawa a mākou i helu ai i ka ʻikepili (nā poloka kiʻi, nā ʻāpana, nā kiʻi), hiki iā mākou ke hoʻopaʻa iā ia me ka ʻole. Nui nā ala algorithmic e hoʻopaʻa i ka ʻikepili. E nānā wikiwiki mākou i kekahi o lākou, no ka ʻike hohonu hiki iā ʻoe ke heluhelu i ka puke Understanding Compression: Data Compression for Modern Developers ("Ka Hoʻomaopopo ʻana i ka Compression: ʻIkepili ʻikepili no nā mea hoʻomohala hou").

Hoʻopili wikiō me VLC

E ʻōlelo kākou he kahawai o nā huaʻōlelo: a, e, r и t. Hōʻike ʻia ka probability (mai ka 0 a hiki i ka 1) o ka manawa pinepine o kēlā me kēia ʻano i loko o kahi kahawai i hōʻike ʻia ma kēia papa.

a e r t
Maliʻa paha 0,3 0,3 0,2 0,2

Hiki iā mākou ke hāʻawi i nā code binary kūʻokoʻa (ʻoi aku ka maikaʻi o nā mea liʻiliʻi) i nā mea like loa, a me nā code nui i nā mea liʻiliʻi.

a e r t
Maliʻa paha 0,3 0,3 0,2 0,2
Helu helu binary 0 10 110 1110

Hoʻopili mākou i ke kahawai, me ka manaʻo e hoʻopau mākou i ka hoʻohana ʻana i 8 bits no kēlā me kēia ʻano. Me ka ʻole o ka hoʻopaʻa ʻana, pono ʻia nā 24 bits i kēlā me kēia ʻano. Inā ʻoe e hoʻololi i kēlā me kēia ʻano me kāna code, loaʻa iā ʻoe ke kālā!

ʻO ka hana mua e hoʻopili i ke ʻano e, ua like ia me 10, a o ka lua o ke ano a, i hoʻohui ʻia (ʻaʻole ma ke ʻano makemakika): [10][0], a ʻo ka hope ke kolu o ke ʻano t, ʻo ia ka mea e like ai kā mākou bitstream kaomi hope loa me [10][0][1110] a i ʻole 1001110, ka mea e koi ai i 7 bits wale nō (3,4 manawa liʻiliʻi ma mua o ka mea kumu).

E ʻoluʻolu e hoʻomaopopo i kēlā me kēia code he code kūʻokoʻa me kahi prefix. Huffman algorithm e kōkua iā ʻoe e ʻike i kēia mau helu. ʻOiai ʻaʻole me ka hemahema o kēia ʻano, aia nā codecs wikiō e hāʻawi mau nei i kēia ala algorithmic no ka hoʻopili ʻana.

Pono ka encoder a me ka decoder e komo i kahi papa hōʻailona me kā lākou mau code binary. No laila, pono nō hoʻi e hoʻouna i kahi papaʻaina i mea hoʻokomo.

helu helu helu

E ʻōlelo kākou he kahawai o nā huaʻōlelo: a, e, r, s и t, a ua hōʻike ʻia ko lākou kūpono ma kēia papa.

a e r s t
Maliʻa paha 0,3 0,3 0,15 0,05 0,2

Me ka hoʻohana ʻana i kēia pākaukau, e kūkulu mākou i nā pae i loaʻa nā huaʻōlelo hiki ke hoʻokaʻawale ʻia e ka helu nui loa.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

I kēia manawa, e hoʻopaʻa inoa i kahi kahawai o ʻekolu mau huaʻōlelo: ai.

E koho mua i ke ano mua e, aia i loko o ka subrange mai 0,3 a 0,6 (ʻaʻole i komo). Lawe mākou i kēia subrange a puʻunaue hou iā ia i nā ʻāpana like me ka wā ma mua, akā no kēia ʻano hou.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

E hoʻomau kākou i ka hoʻopaʻa ʻana i kā mākou kahawai ai. I kēia manawa, e lawe i ka lua a, aia i loko o ka subrange hou mai 0,3 a 0,39, a laila lawe i kā mākou ʻano hope t a hana hou i ke kaʻina hana like, loaʻa iā mākou ka sub-range hope loa mai 0,354 a i 0,372.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Pono mākou e koho i kahi helu ma ka subrange hope loa mai 0,354 a i 0,372. E koho kāua i ka 0,36 (akā hiki iā ʻoe ke koho i kekahi helu ʻē aʻe i kēia subrange). Me kēia helu wale nō e hiki ai iā mākou ke hoʻihoʻi i kā mākou kahawai kumu. Me he mea lā e kahakiʻi ana mākou i kahi laina i loko o nā pae e hoʻopili i kā mākou kahawai.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

ʻO ka hana hope (ʻo ia hoʻi, decoding) e like me ka maʻalahi: me kā mākou helu 0,36 a me kā mākou pae mua, hiki iā mākou ke holo i ka hana like. Akā i kēia manawa, me ka hoʻohana ʻana i kēia helu, ʻike mākou i ke kahawai i hoʻopili ʻia me kēia helu.

Me ka pae mua, ʻike mākou ua pili kā mākou helu i ka ʻāpana, no laila ʻo kā mākou ʻano mua kēia. I kēia manawa, hoʻokaʻawale hou mākou i kēia sub-range ma ka hahai ʻana i ke kaʻina hana like ma mua. Maanei hiki iā ʻoe ke ʻike e pili ana ka 0,36 i ka hōʻailona a, a ma hope o ka hana hou ʻana i ke kaʻina hana ua hōʻea mākou i ke ʻano hope loa t (ka hana ʻana i kā mākou kahawai i hoʻopaʻa ʻia ai).

Pono e loaʻa i ka encoder a me ka decoder kahi papaʻaina o nā probabilities hōʻailona, ​​no laila pono e hoʻouna i loko o ka ʻikepili komo pū kekahi.

He nani loa, ʻaʻole anei? ʻO ka mea i loaʻa i kēia hoʻonā, he akamai loa. Ke hoʻohana nei kekahi mau codec wikiō i kēia ʻenehana (a i ʻole hāʻawi ʻia ma ke ʻano he koho).

ʻO ka manaʻo e hoʻoemi me ka ʻole o ke kahawai bit quantized. ʻOiaʻiʻo, ua nalowale kēia ʻatikala i nā kikoʻī kikoʻī, nā kumu, nā trade-off, etc. Akā inā he mea hoʻomohala ʻoe, pono ʻoe e ʻike hou aku. Ho'āʻo nā codec hou e hoʻohana i nā ʻano algorithm e hoʻopā ai entropy e like me ANS.

KaʻAnuʻu 6 - format bitstream

Ma hope o ka hana ʻana i kēia mau mea a pau, ʻo ka wehe ʻana i nā pahu i hoʻopaʻa ʻia i loko o ka pōʻaiapili o nā ʻanuʻu i hana ʻia. Pono e hoʻomaopopo maopopo ʻia ka decoder i nā hoʻoholo i hana ʻia e ka encoder. Pono e hoʻolako ʻia ka decoder me nā ʻike pono āpau: ka hohonu bit, ka waihoʻoluʻu, ka ʻike wanana (nā neʻe neʻe, kuhikuhi INTER wānana), profile, pae, frame rate, ʻano ʻano, helu helu a me nā mea hou aku.

E nānā wikiwiki mākou i ka bitstream H.264. ʻO kā mākou hana mua, ʻo ia ka hana ʻana i kahi bitstream H.264 liʻiliʻi (FFmpeg ma ka paʻamau e hoʻohui i nā koho encoding āpau e like me SEI NAL - e ʻike mākou i kahi mea liʻiliʻi aʻe). Hiki iā mākou ke hana i kēia me ka hoʻohana ʻana i kā mākou waihona ponoʻī a me FFmpeg.

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

E hoʻopuka kēia kauoha i kahi bitstream maka H.264 me hoʻokahi kiʻi, 64×64 hoʻonā, me ke kala kala YUV420. I kēia hihia, hoʻohana ʻia kēia kiʻi ma ke ʻano he kiʻi.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

H.264 bitstream

Kūlana AVC (H.264) e hoʻoholo ana e hoʻouna ʻia ka ʻike ma nā macroframes (ma ke ʻano pūnaewele), i kapa ʻia nal (ʻo kēia kahi pae abstraction pūnaewele). ʻO ka pahuhopu nui o NAL ʻo ia ka hoʻolako ʻana i kahi hōʻike wikiō "pilina pūnaewele". Pono kēia maʻamau ma nā TV (stream-based), ka pūnaewele (packet-based).

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Aia kahi māka hoʻonohonoho e wehewehe i nā palena o nā mea NAL. Loaʻa i kēlā me kēia token sync kahi waiwai 0x00 0x00 0x01, koe wale no ka mua loa, ua like ia me 0x00 0x00 0x00 0x01. Inā mākou e hoʻomaka hexdump no ka bitstream H.264 i hana ʻia, ʻike mākou i ʻekolu mau hiʻohiʻona NAL ma ka hoʻomaka o ka faila.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

E like me ka mea i ʻōlelo ʻia, pono e ʻike ka decoder ʻaʻole i ka ʻikepili kiʻi wale nō, akā i nā kikoʻī o ke wikiō, ke kiʻi, nā kala, nā ʻāpana i hoʻohana ʻia, a me nā mea hou aku. ʻO ka byte mua o kēlā me kēia NAL e wehewehe i kona ʻano a me kona ʻano.

ʻIke ʻano ʻano NAL hōʻikeʻano
0 ʻAno ʻike ʻole ʻia
1 ʻāpana kiʻi i hoʻopaʻa ʻia me ka ʻole o ka IDR
2 Māhele ʻikepili ʻāpana coded A
3 Māhele ʻikepili ʻāpana coded B
4 Māhele ʻikepili ʻāpana coded C
5 Hoʻopili ʻia ka ʻāpana IDR o kahi kiʻi IDR
6 ʻIke hou aku e pili ana i ka hoʻonui SEI
7 SPS Sequence Parameter Set
8 Hoʻonohonoho i nā ʻāpana kiʻi PPS
9 Mea hoʻokaʻawale komo
10 Pau o ke kaʻina
11 Pau o ka pae
... ...

ʻO ka maʻamau ka NAL mua o kahi kahawai bit SPS. ʻO kēia ʻano NAL ke kuleana no ka hoʻomaopopo ʻana e pili ana i nā ʻano hoʻololi maʻamau e like me ka profile, level, resolution, etc.

Inā hoʻokuʻu mākou i ka marker sync mua, hiki iā mākou ke hoʻokaʻawale i ka byte mua e ʻike i ke ʻano NAL mua.

No ka laʻana, ʻo ka byte mua ma hope o ka hōʻailona sync 01100111, kahi o ka bit mua (0) aia ma ke kahua forbidden_zero_bit. 2 mau ʻāpana aʻe (11) haʻi iā mākou i ke kahua nal_ref_idc, e hōʻike ana inā he kahua kuhikuhi kēia NAL a ʻaʻole paha. A ʻo ke koena 5 bits (00111) haʻi iā mākou i ke kahua nal_unit_type, i kēia hihia ʻo ia ka poloka SPS (7) NAL.

paina lua (pila=01100100, hex=0x64, Dec=100) ma SPS NAL ke kahua profile_idc, e hōʻike ana i ka ʻaoʻao i hoʻohana ʻia e ka encoder. I kēia hihia, ua hoʻohana ʻia kahi kiʻekiʻe kiʻekiʻe i kaupalena ʻia (ʻo ia hoʻi, kahi kiʻekiʻe kiʻekiʻe me ke kākoʻo ʻole o ke kākoʻo B-segment bidirectional).

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Inā ʻoe e nānā i ka kikoʻī bitstream H.264 no SPS NAL, e ʻike mākou i nā waiwai he nui no ka inoa parameter, ka māhele a me ka wehewehe. Eia kekahi laʻana, e nānā kākou i nā māla pic_width_in_mbs_minus_1 и pic_height_in_map_units_minus_1.

inoa palena waeʻano hōʻikeʻano
pic_width_in_mbs_minus_1 0 ue(v)
pic_height_in_map_units_minus_1 0 ue(v)

Inā mākou e hana i kekahi mau hana makemakika me nā waiwai o kēia mau māla, e loaʻa iā mākou ka hoʻonā. Hiki i kekahi ke hōʻike i ka 1920 x 1080 me ka hoʻohana ʻana pic_width_in_mbs_minus_1 me ka waiwai o 119 ((119 + 1) * macroblock_size = 120 * 16 = 1920). Eia hou, e mālama i ka lewa, ma kahi o ka hoʻopili ʻana i ka 1920, ua hana mākou me 119.

Inā hoʻomau mākou e nānā i kā mākou wikiō i hana ʻia ma ke ʻano binary (no ka laʻana: xxd -b -c 11 v/minimal_yuv420.h264), a laila hiki iā ʻoe ke hele i ka NAL hope, ʻo ia ke kiʻi ponoʻī.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Maanei mākou e ʻike ai i kāna mau waiwai 6 byte mua: 01100101 10001000 10000100 00000000 00100001 11111111. No ka mea, ʻike ʻia ka byte mua e hōʻike i ke ʻano NAL, i kēia hihia (00101) he ʻāpana IDR (5), a laila hiki iā ʻoe ke ʻimi hou aku:

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Ke hoʻohana nei i ka ʻike kikoʻī, hiki ke hoʻokaʻawale i ke ʻano ʻāpana (slice_type) a me ka helu kiʻi (helu_helu) ma waena o nā kahua koʻikoʻi ʻē aʻe.

E kiʻi i nā waiwai o kekahi mau kahua (ue(v), me(v), se(v) ai ʻole te(v)), pono mākou e hoʻokaʻawale i ka ʻāpana me ka hoʻohana ʻana i kahi decoder kūikawā e pili ana code Golomb exponential. Maikaʻi loa kēia ʻano hana no ka hoʻopā ʻana i nā waiwai hoʻololi, ʻoi aku ka nui o nā waiwai paʻamau.

Nā helu waiwai slice_type и helu_helu ʻO kēia wikiō he 7 (I-fragment) a me 0 (kiʻi mua).

Hiki ke noʻonoʻo ʻia kahi kahawai bit ma ke ʻano he protocol. Inā makemake ʻoe e ʻike hou aku e pili ana i ka bitstream, pono ʻoe e kuhikuhi i ka kikoʻī ITU H.264. Eia kahi kiʻi macro e hōʻike ana i kahi o ka ʻikepili kiʻi (YUV ma ke ʻano paʻa).

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Hiki ke nānā ʻia nā bitstreams ʻē aʻe, e like me VP9, H.265 (HEVC) a i ʻole kā mākou bitstream maikaʻi loa AV1. Ua like anei lakou a pau? ʻAʻole, akā inā hoʻomaopopo ʻoe i hoʻokahi liʻiliʻi, ʻoi aku ka maʻalahi o ka hoʻomaopopo ʻana i ke koena.

Makemake e hoʻomaʻamaʻa? E ʻimi i ka H.264 bitstream

Hiki iā ʻoe ke hana i hoʻokahi kiʻi wikiō a hoʻohana i MediaInfo e nānā i ka bitstream H.264. ʻO ka ʻoiaʻiʻo, ʻaʻohe mea e pale iā ʻoe mai ka nānā ʻana i ke code kumu e nānā ana i ke kahawai bit H.264 (AVC).

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

No ka hoʻomaʻamaʻa, hiki iā ʻoe ke hoʻohana i ka Intel Video Pro Analyzer (ua ʻōlelo mua wau ua uku ʻia ka papahana, akā aia kahi mana hoʻāʻo manuahi me ka palena o 10 mau kiʻi?).

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Hōʻuluʻulu manaʻo

E hoʻomaopopo he nui nā codec hou i hoʻohana i ke ʻano hoʻohālike a mākou i aʻo ai. Maʻaneʻi, e nānā kāua i ke kiʻikuhi poloka o ka codec wikiō Thor. Loaʻa iā ia nā ʻanuʻu a pau a mākou i hele ai. ʻO ka manaʻo holoʻokoʻa o kēia pou e hāʻawi iā ʻoe i kahi ʻike maikaʻi aʻe o nā mea hou a me nā palapala i kēia wahi.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

Ma mua, ua helu ʻia ʻo 139 GB o ka disk space e koi ʻia e mālama i kahi faila wikiō i hoʻokahi hola ma 720p maikaʻi a me 30 fps. Inā ʻoe e hoʻohana i nā ʻano i kūkākūkā ʻia ma kēia ʻatikala (inter-frame a me nā wānana kūloko, hoʻololi, quantization, entropy coding, etc.), a laila hiki iā ʻoe ke hoʻokō (ma muli o ka hoʻohana ʻana i ka 0,031 bits per pixel) wikiō o ka maikaʻi maikaʻi. , noho wale 367,82 MB, ʻaʻole 139 GB o ka hoʻomanaʻo.

Pehea e loaʻa ai iā H.265 ka lākiō hoʻopiʻi maikaʻi ma mua o H.264?

I kēia manawa ua ʻike hou mākou e pili ana i ka hana ʻana o nā codecs, ʻoi aku ka maʻalahi o ka hoʻomaopopo ʻana pehea e hiki ai i nā codec hou ke hāʻawi i nā hoʻonā kiʻekiʻe me nā ʻāpana liʻiliʻi.

Inā mākou e hoʻohālikelike AVC и HEVC, pono e hoʻomanaʻo ʻo ia kahi koho ma waena o ka ukana CPU nui a me ka lākiō hoʻopiʻi.

HEVC ʻoi aku ka nui o nā koho ʻāpana (a me ka ʻāpana) ma mua o AVC, ʻoi aku nā kuhikuhi wānana kūloko, hoʻomaikaʻi i ka entropy coding, a me nā mea hou aku. Ua hana ʻia kēia mau hoʻomaikaʻi a pau H.265 hiki ke hoʻopaʻa i 50% ʻoi aku ma mua o H.264.

Pehea e hana ai kahi codec wikiō? Mahele 2. He aha, no ke aha, pehea

ʻO ka hapa mua: Nā kumu o ka hana me ka wikiō a me nā kiʻi

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka