Cholakwika chofala omwe angoyamba kumene kupanga ndikusokoneza makanema amakanema a digito ndi chidebe chamavidiyo a digito. Chidebe ndi mtundu winawake. Chovala chokhala ndi kanema (ndipo mwina audio) metadata. Kanema woponderezedwa atha kuganiziridwa ngati chidebe cholipira.
Childs, kutambasuka kwa kanema wapamwamba limasonyeza mtundu wake chidebe. Mwachitsanzo, file video.mp4 mwina chidebe MPEG-4 Gawo 14, ndipo fayilo yotchedwa video.mkv ndiyotheka kwambiri matryoshka. Kuti mukhale otsimikiza kwathunthu za mtundu wa codec ndi chidebe, mutha kugwiritsa ntchito FFmpeg kapena MediaInfo.
Zakale za mbiriyakale
Tisanafike Motani?, tiyeni tilowe m'mbiri kuti timvetse bwino ma codec ena akale.
Video codec H.261 adawonekera mu 1990 (mwaukadaulo - mu 1988) ndipo adapangidwa kuti azigwira ntchito pakusinthana kwa data 64 Kbps. Idagwiritsa ntchito kale malingaliro monga mtundu wa subsampling, macroblocks, ndi zina. Kanema wa codec adasindikizidwa mu 1995. H.263, yomwe idachitika mpaka 2001.
Baibulo loyamba linamalizidwa mu 2003 H.264/AVC. Chaka chomwecho, TrueMotion idatulutsa codec yake yaulere yaulere yotchedwa VP3. Google idagula kampaniyo mu 2008, ndikutulutsa VP8 mβchaka chomwecho. Mu Disembala 2012, Google idatulutsidwa VP9, ndipo imathandizidwa pafupifupi ΒΎ ya msika wa osatsegula (kuphatikiza zida zam'manja).
AV1 ndi latsopano ufulu ndi lotseguka gwero kanema codec opangidwa ndi Alliance for Open Media (AOMedia), yomwe imaphatikizapo makampani otchuka kwambiri, monga: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel ndi Cisco. Mtundu woyamba wa codec, 0.1.0, unasindikizidwa pa Epulo 7, 2016.
Kubadwa kwa AV1
Kumayambiriro kwa 2015, Google inali kugwira ntchito VP10Xiph (yomwe ndi ya Mozilla) inali kugwira ntchito Daala, ndipo Cisco adapanga codec yake yaulere yotchedwa Thor.
ndiye MPEG LA woyamba analengeza malire pachaka kwa HEVC (H.265) ndi chindapusa cha 8 kuposa cha H.264, koma posakhalitsa adasinthanso malamulowo:
palibe malire apachaka,
malipiro okhutira (0,5% ya ndalama) ndi
mtengo wagawo ndi pafupifupi nthawi 10 kuposa H.264.
Alliance for Open Media idapangidwa ndi makampani ochokera m'magawo osiyanasiyana: opanga zida (Intel, AMD, ARM, Nvidia, Cisco), opereka zinthu (Google, Netflix, Amazon), opanga osatsegula (Google, Mozilla) ndi ena.
Makampaniwa anali ndi cholinga chimodzi - codec yamavidiyo yopanda malipiro. Kenako zimawonekera AV1 ndi chilolezo chosavuta cha patent. Timothy B. Terryberry anapereka chiwonetsero chodabwitsa chomwe chinakhala chiyambi cha lingaliro lamakono la AV1 ndi chitsanzo chake chopereka chilolezo.
Mudzadabwa kudziwa kuti mutha kusanthula codec ya AV1 kudzera pa msakatuli (omwe ali ndi chidwi atha kupita ku aomanalyzer.org).
Ma codecs nthawi zambiri amakonza magawowa kukhala magawo (kapena chunks), macroblocks (kapena midadada yoyika mitengo), ndi magawo angapo. Kukula kwakukulu kwa magawowa kumasiyanasiyana, HEVC imayiyika ku 64x64 pomwe AVC imagwiritsa ntchito 16x16, ndipo magawowo amatha kugawidwa mpaka kukula kwa 4x4.
Kodi mukukumbukira mitundu ya mafelemu kuchokera m'nkhani yomaliza?! Zomwezo zitha kugwiritsidwa ntchito ku midadada, kotero titha kukhala ndi I-chidutswa, B-block, P-macroblock, ndi zina.
Kwa iwo omwe akufuna kuyeserera, yang'anani momwe chithunzicho chimagawidwira m'magawo ndi magawo. Kuti muchite izi, mutha kugwiritsa ntchito zomwe tazitchula kale m'nkhani yapitayi. Intel Video Pro Analyzer (yomwe imalipidwa, koma ndi mtundu waulere woyeserera womwe umangokhala mafelemu 10 oyamba). Ndime zomwe zawunikidwa apa VP9:
2 sitepe - kulosera
Tikakhala ndi zigawo, tikhoza kupanga maulosi a nyenyezi kwa iwo. Za Zolosera za INTER ziyenera kusamutsidwa ma vectors oyenda ndi zotsalazo, ndipo pakulosera kwa INTRA zimaperekedwa mayendedwe amtsogolo ndi chotsalira.
Tiyeni tiyese kugwiritsa ntchito chidziwitso chomwe tidapeza poyesa potembenuza chithunzi choyambirira kukhala pafupipafupi (block of coefficients) pogwiritsa ntchito DCT ndiyeno kutaya gawo la ma coefficients ofunikira kwambiri.
Choyamba timachitembenuzira ku frequency domain.
Kenako, timataya gawo (67%) la ma coefficients, makamaka gawo lakumanja lakumanzere.
Pomaliza, timapanganso chithunzicho kuchokera pagulu lotayidwa la coefficients (kumbukirani, liyenera kukhala losasinthika) ndikufanizira ndi choyambirira.
Tikuwona kuti ikufanana ndi chithunzi choyambirira, koma pali zosiyana zambiri ndi zoyambirira. Tidataya 67,1875% ndipo tidapezabe china chofanana ndi choyambirira. Zinali zotheka kutaya moganizira kwambiri ma coefficients kuti mupeze chithunzi chamtundu wabwinoko, koma uwu ndi mutu wotsatira.
Coefficient iliyonse imapangidwa pogwiritsa ntchito ma pixel onse
Chofunika: chigawo chilichonse sichimajambulidwa mwachindunji ku pixel imodzi, koma ndi kuchuluka kwa ma pixel onse. Chithunzi chodabwitsachi chikuwonetsa momwe ma coefficients oyamba ndi achiwiri amawerengedwera pogwiritsa ntchito miyeso yosiyana ndi index iliyonse.
Tikataya ma coefficients pa sitepe yapitayi, pa sitepe yotsiriza (kusintha) timapanga mawonekedwe apadera a quantization. Panthawi imeneyi ndizovomerezeka kutaya chidziwitso. Kapena, mophweka, tidzawerengera ma coefficients kuti tikwaniritse kuponderezana.
Kodi mungawerenge bwanji chipika cha coefficients? Imodzi mwa njira zosavuta ndi quantization yunifolomu, pamene titenga chipika, tigawane ndi mtengo umodzi (ndi 10) ndi kuzungulira zotsatira.
Kodi tingathe kusintha chipika cha ma coefficients awa? Inde, titha, kuchulukitsa ndi mtengo womwewo womwe tidagawa nawo.
Njirayi si yabwino chifukwa sichiganizira kufunika kwa coefficient iliyonse. Mmodzi angagwiritse ntchito matrix a quantizers m'malo mwa mtengo umodzi, ndipo matrix awa angagwiritse ntchito katundu wa DCT powerengera ambiri omwe ali pansi kumanja ndi ochepa kumtunda kumanzere.
Khwerero 5 - entropy coding
Titawerengera zambiri (zotchinga zithunzi, zidutswa, mafelemu), titha kuzikanikiza mopanda malire. Pali zambiri algorithmic njira compress deta. Tiyang'ana mwachangu ena mwa iwo, kuti mumvetsetse mwakuya mutha kuwerenga buku la Kumvetsetsa Kupsinjika: Kuponderezedwa Kwa Data kwa Opanga Amakono ("Kumvetsetsa Kupsinjika: Kuponderezedwa Kwa Data Kwa Madivelopa Amakono").
Kuyika makanema pogwiritsa ntchito VLC
Tiyerekeze kuti tili ndi otchulidwa angapo: a, e, r ΠΈ t. Kuthekera (kuyambira 0 mpaka 1) kwa kuchuluka kwa mawonekedwe amtundu uliwonse kumawonetsedwa patsamba lino.
a
e
r
t
Mwina
0,3
0,3
0,2
0,2
Titha kugawira manambala apadera apadera (makamaka ang'onoang'ono) kwa omwe akuyembekezeka kwambiri, ndi ma code akulu kwa omwe sangachitike.
a
e
r
t
Mwina
0,3
0,3
0,2
0,2
Binary kodi
0
10
110
1110
Timakanikiza mtsinjewo, poganiza kuti titha kugwiritsa ntchito ma bits 8 pamunthu aliyense. Popanda kukakamiza, ma bits 24 amafunikira pamunthu aliyense. Mukasintha munthu aliyense ndi code yake, mumapeza ndalama!
Gawo loyamba ndikulemba zilembo e, yomwe ikufanana ndi 10, ndipo chilembo chachiwiri ndi a, yomwe yawonjezeredwa (osati mwa njira ya masamu): [10][0], ndipo potsiriza munthu wachitatu t, zomwe zimapangitsa kuti bitstream yathu yopanikizidwa yomaliza ikhale yofanana ndi [10][0][1110] kapena 1001110, zomwe zimangofunika 7 bits (malo ocheperako nthawi 3,4 kuposa choyambirira).
Chonde dziwani kuti khodi iliyonse iyenera kukhala ndi code yapadera yokhala ndi mawu oyamba. Huffman algorithm zikuthandizani kupeza manambala awa. Ngakhale njira iyi ilibe zolakwika zake, pali ma codec amakanema omwe amaperekabe njira ya algorithmic yophatikizira.
Onse encoder ndi decoder ayenera kukhala ndi mwayi wofika patebulo lazizindikiro ndi ma code awo a binary. Choncho, m'pofunikanso kutumiza tebulo monga zolowera.
Kulemba masamu
Tiyerekeze kuti tili ndi otchulidwa angapo: a, e, r, s ΠΈ t, ndipo kuthekera kwawo kwafotokozedwa mu tebulo ili.
a
e
r
s
t
Mwina
0,3
0,3
0,15
0,05
0,2
Pogwiritsa ntchito tebulo ili, tipanga mizere yokhala ndi zilembo zonse zomwe zingatheke, zosankhidwa ndi nambala yayikulu kwambiri.
Tsopano tiyeni tisinthire mndandanda wa zilembo zitatu: kudya.
Choyamba sankhani munthu woyamba e, yomwe ili pamtunda kuchokera ku 0,3 mpaka 0,6 (osaphatikizapo). Timatenga subrange iyi ndikuyigawanso mofanana ndi kale, koma pamtundu watsopanowu.
Tiyeni tipitilize kukod stream yathu kudya. Tsopano tengani khalidwe lachiwiri a, yomwe ili m'gulu latsopano kuchokera ku 0,3 mpaka 0,39, ndiyeno tengani khalidwe lathu lomaliza. t ndikubwerezanso zomwezo, timapeza gawo lomaliza lochokera ku 0,354 mpaka 0,372.
Timangofunika kusankha nambala mugawo lomaliza kuchokera ku 0,354 mpaka 0,372. Tiyeni tisankhe 0,36 (koma mutha kusankha nambala ina iliyonse m'chigawochi). Ndi nambala iyi yokha yomwe titha kubwezeretsanso mtsinje wathu woyambirira. Zili ngati tikujambula mzere m'mizere kuti titseke mtsinje wathu.
The reverse operation (ndiko kuti, decoding) ndizosavuta: ndi nambala yathu 0,36 ndi mtundu wathu woyamba, titha kuyendetsa njira yomweyo. Koma tsopano, pogwiritsa ntchito nambala iyi, timazindikira mtsinje womwe wasungidwa pogwiritsa ntchito nambalayi.
Ndi mtundu woyamba, tikuwona kuti nambala yathu imagwirizana ndi kagawo, chifukwa chake uyu ndiye munthu wathu woyamba. Tsopano timagawanitsanso gawo laling'onoli potsatira njira yomweyi monga kale. Apa mutha kuwona kuti 0,36 ikufanana ndi chizindikiro a, ndipo titabwereza ndondomekoyi tinafika pa khalidwe lomaliza t (kupanga mtsinje wathu wapachiyambi kudya).
Onse encoder ndi decoder ayenera kukhala ndi tebulo la kuthekera kwachizindikiro, kotero ndikofunikira kutumizanso muzolowera.
Lamulo ili lipanga bitstream yaiwisi H.264 ndi chimango chimodzi, 64Γ64 kusamvana, ndi danga mtundu YUV420. Pankhaniyi, chithunzi chotsatirachi chimagwiritsidwa ntchito ngati chimango.
H.264 pang'ono
Standard sitiroko (H.264) imatsimikizira kuti chidziwitso chidzatumizidwa mu macroframes (m'lingaliro la intaneti), lotchedwa ndi (uwu ndi mulingo wa network abstraction). Cholinga chachikulu cha NAL ndikupereka mavidiyo "osavuta pa intaneti". Muyezo uwu uyenera kugwira ntchito pa ma TV (otengera mitsinje), intaneti (yotengera paketi).
Pali cholembera cholumikizira kuti chifotokoze malire azinthu za NAL. Chizindikiro chilichonse cholumikizira chimakhala ndi mtengo 0x00 0x00 0x01, kupatula woyamba, womwe ndi wofanana ndi 0x00 0x00 0x00 0x01. Ngati tiyambitsa hexdump kwa H.264 bitstream wopangidwa, timazindikira zosachepera zitatu za NAL pamayambiriro a fayilo.
Monga tafotokozera, wojambulayo sayenera kudziwa zazithunzi zokha, komanso tsatanetsatane wa kanema, chimango, mitundu, magawo omwe amagwiritsidwa ntchito, ndi zina zambiri. Biti yoyamba ya NAL iliyonse imatanthauzira gulu lake ndi mtundu wake.
Chizindikiritso cha mtundu wa NAL
mafotokozedwe
0
Mtundu wosadziwika
1
Chidutswa chazithunzi chojambulidwa popanda IDR
2
Gawo la data lagawo la coded A
3
Gawo la data lagawo la coded B
4
Gawo la data lagawo la coded C
5
Chidutswa cha IDR chosungidwa cha chithunzi cha IDR
6
Zambiri pazowonjezera za SEI
7
SPS Sequence Parameter Set
8
Seti ya magawo azithunzi a PPS
9
Pezani cholekanitsa
10
Mapeto a ndondomeko
11
Mapeto a ulusi
...
...
Nthawi zambiri NAL yoyamba ya bitstream ndi SPS. Mtundu uwu wa NAL uli ndi udindo wodziwitsa zamitundu yosiyanasiyana ya ma encoding monga mbiri, mulingo, kusamvana, ndi zina.
Mwachitsanzo, byte yoyamba pambuyo pa chizindikiro cholumikizira ndi 01100111, pomwe gawo loyamba (0) ali m'munda forbidden_zero_bit. 2 pang'ono pang'ono (11) limatiuza za munda nal_ref_idc, zomwe zimasonyeza ngati NAL iyi ndi malo owonetsera kapena ayi. Ndipo ma bits 5 otsala (00111) limatiuza za munda nal_unit_type, apa ndiye SPS block (7) NAL.
Ngati muyang'ana pa bitstream specifications H.264 kwa SPS NAL, tipeza zofunikira zambiri za dzina la parameter, gulu ndi kufotokozera. Mwachitsanzo, tiyeni tione minda pic_width_in_mbs_minus_1 ΠΈ pic_height_mu_map_units_minus_1.
Dzina chizindikiro
gulu
mafotokozedwe
pic_width_in_mbs_minus_1
0
uwu (v)
pic_height_mu_map_units_minus_1
0
uwu (v)
Ngati tichita masamu ena ndi mfundo za magawowa, tidzapeza chisankho. Mmodzi akhoza kuyimira 1920 x 1080 pogwiritsa ntchito pic_width_in_mbs_minus_1 ndi mtengo wa 119 ((119 + 1) * macroblock_size = 120 * 16 = 1920). Apanso, kuti tisunge malo, m'malo molemba 1920, tidachita ndi 119.
Ngati tipitiliza kuyang'ana kanema wathu wopangidwa mu mawonekedwe a binary (mwachitsanzo: xxd -b -c 11 v/minimal_yuv420.h264), ndiye mutha kupita ku NAL yomaliza, yomwe ndi chimango chokha.
Apa tikuwona zoyambira zake 6 zoyambira: 01100101 10001000 10000100 00000000 00100001 11111111. Popeza byte yoyamba imadziwika kuti ikuwonetsa mtundu wa NAL, pamenepa (00101) ndi chidutswa cha IDR (5), ndiyeno mutha kuchifufuzanso:
Pogwiritsa ntchito chidziwitso chatsatanetsatane, zitha kuzindikirika mtundu wa chidutswa (mtundu_gawo) ndi nambala ya chimango (chimango_nambala) pakati pa magawo ena ofunikira.
Kuti mugwiritse ntchito, mutha kugwiritsa ntchito Intel Video Pro Analyzer (kodi ndinanena kale kuti pulogalamuyo yalipidwa, koma pali mtundu woyeserera waulere wokhala ndi malire a mafelemu 10?).
mwachidule
Dziwani kuti ma codec ambiri amakono amagwiritsa ntchito chitsanzo chomwe tangophunzira kumene. Apa, tiyeni tione chipika chithunzi cha kanema codec Thor. Lili ndi njira zonse zomwe tadutsamo. Mfundo yonse ya positiyi ndikukupatsani kumvetsetsa bwino za zatsopano ndi zolemba m'derali.
M'mbuyomu, zidawerengedwa kuti 139 GB ya disk space idzafunika kusunga fayilo ya kanema yomwe imakhala ola limodzi pa khalidwe la 720p ndi 30 fps. Ngati mugwiritsa ntchito njira zomwe takambirana m'nkhaniyi (inter-frame ndi zolosera zamkati, kusintha, kuchuluka, entropy coding, etc.), ndiye kuti mutha kukwaniritsa (kutengera kuti timathera 0,031 bits pa pixel), kanema wazinthu zambiri. wokhutiritsa, wokhala ndi 367,82 MB yokha, osati 139 GB ya kukumbukira.
Kodi H.265 imakwaniritsa bwanji chiΕ΅erengero chabwino cha kuponderezana kuposa H.264?
Tsopano popeza tadziwa zambiri za momwe ma codec amagwirira ntchito, ndizosavuta kumvetsetsa momwe ma codec atsopano amatha kuperekera malingaliro apamwamba ndi ma bits ochepa.
Tikayerekeza sitiroko ΠΈ HEVC, m'pofunika kukumbukira kuti pafupifupi nthawi zonse kusankha pakati waukulu CPU katundu ndi compression chiΕ΅erengero.
HEVC ili ndi magawo ambiri (ndi gawo) kuposa sitiroko, zolosera zamkati zambiri, kukodzedwa kwa entropy, ndi zina zambiri. Kuwongolera konseku kwapangidwa H.265 wokhoza compress 50% kuposa H.264.