Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Bagian kahiji: Dasar gawé bareng video sareng gambar

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Naon? Codec video nyaéta sapotong parangkat lunak/hardware nu ngompres jeung/atawa ngadékompresi video digital.

Kanggo naon? Sanajan watesan tangtu boh dina watesan rubakpita jeung
sarta dina watesan spasi gudang data, pasar tungtutan kualitas video beuki luhur. Naha anjeun émut kumaha dina tulisan terakhir urang ngitung minimum anu diperyogikeun pikeun 30 pigura per detik, 24 bit per piksel, kalayan résolusi 480x240? Kami nampi 82,944 Mbit / s tanpa komprési. Komprési ayeuna hiji-hijina jalan pikeun umumna ngirimkeun HD/FullHD/4K ka layar televisi jeung Internét. Kumaha ieu kahontal? Ayeuna hayu urang sakeudeung ningali metodeu utama.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Tarjamahan dijieun kalayan rojongan ti EDISON Software.

Urang tunangan integrasi sistem panjagaan videojeung urang nuju ngembangkeun microtomograph a.

Codec vs Wadahna

Kasalahan umum anu dilakukeun ku pemula nyaéta ngabingungkeun codec pidéo digital sareng wadah pidéo digital. Wadahna mangrupikeun format anu tangtu. A wrapper ngandung video (jeung kamungkinan audio) metadata. Video anu dikomprés tiasa dianggap salaku muatan wadahna.

Biasana, ekstensi file video nunjukkeun jinis wadahna. Contona, file video.mp4 meureun wadahna MPEG-4 Bagian 14, sarta file ngaranna video.mkv paling dipikaresep matryoshka. Pikeun mastikeun lengkep codec sareng format wadahna, anjeun tiasa nganggo FFmpeg atawa MediaInfo.

A sajarah saeutik

Sateuacan urang meunang ka Kumaha?, hayu urang teuleum saeutik kana sajarah pikeun ngarti sababaraha codec heubeul saeutik hadé.

Video codec H.261 mecenghul di 1990 (téhnisna - dina 1988) sarta dijieun pikeun beroperasi dina laju mindahkeun data 64 Kbps. Éta parantos nganggo ideu sapertos subsampling warna, blok makro, jsb. Standar codec pidéo diterbitkeun taun 1995 H.263, nu dimekarkeun nepi ka 2001.

Versi munggaran réngsé dina 2003 H.264 / AVC. Dina taun anu sarua, TrueMotion ngarilis codec video lossy bébas na disebut VP3. Google meuli parusahaan di 2008, ngaleupaskeun VP8 taun anu sarua. Dina Désémber 2012, Google dileupaskeun VP9, sareng dirojong sakitar ¾ pasar browser (kalebet alat sélulér).

AV1 nyaéta codec pidéo gratis sareng open source énggal anu dikembangkeun ku Alliance pikeun Open Media (AOMedia), anu kalebet perusahaan anu paling kasohor, sapertos: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel sareng Cisco. Versi munggaran codec, 0.1.0, diterbitkeun dina 7 April 2016.

Lahirna AV1

Dina awal 2015, Google nuju damel VP10Xiph (anu dipiboga ku Mozilla) digarap Daala, sarta Cisco dijieun sorangan bebas video codec disebut Thor.

terus MPEG LA munggaran ngumumkeun wates taunan pikeun HEVC (H.265) jeung fee 8 kali leuwih luhur ti H.264, tapi maranéhna geura-giru robah aturan deui:

teu aya wates taunan,
fee eusi (0,5% tina pendapatan) jeung
fee Unit nyaeta ngeunaan 10 kali leuwih luhur ti H.264.

Alliance pikeun Open Media dijieun ku pausahaan ti widang béda: pabrik alat (Intel, AMD, ARM, Nvidia, Cisco), panyadia eusi (Google, Netflix, Amazon), panyipta browser (Google, Mozilla) jeung sajabana.

Pausahaan ngagaduhan tujuan anu sami - codec pidéo gratis royalti. Lajeng nembongan AV1 kalawan lisénsi patén leuwih basajan. Timothy B. Terryberry masihan presentasi stunning nu jadi asal tina konsép AV1 ayeuna jeung model lisénsi na.

Anjeun bakal reuwas terang yén anjeun tiasa nganalisis codec AV1 ngalangkungan browser (anu kabetot tiasa angkat ka aomanalyzer.org).

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Codec universal

Hayu urang tingali mékanisme utama dina dasar codec video universal. Seuseueurna konsép ieu mangpaat sareng dianggo dina codec modéren sapertos VP9, AV1 и HEVC. Kuring ngingetkeun yén seueur hal anu dipedar bakal disederhanakeun. Kadang-kadang conto dunya nyata (sakumaha sareng H.264) bakal dianggo pikeun nunjukkeun téknologi.

Léngkah 1 - ngabagi gambar

Hambalan munggaran nyaéta ngabagi pigura kana sababaraha bagian, subsections sareng salajengna.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Kanggo naon? Aya loba alesan. Lamun urang ngabagi hiji gambar, urang bisa leuwih akurat ngaduga véktor gerak ku cara maké bagian leutik pikeun bagian pindah leutik. Sedengkeun pikeun latar statik anjeun tiasa ngawatesan diri kana bagian anu langkung ageung.

Codec ilaharna ngatur bagian ieu kana bagian (atawa sakumpulan), macroblocks (atawa coding blok tangkal), sarta sababaraha subsections. Ukuran maksimum partisi ieu beda-beda, HEVC netepkeun kana 64x64 sedengkeun AVC nganggo 16x16, sareng subpartisi tiasa dibagi kana ukuran 4x4.

Naha anjeun émut jinis pigura tina tulisan anu terakhir?! Sami tiasa diterapkeun ka blok, ku kituna urang tiasa gaduh I-fragmen, B-block, P-macroblock, jsb.

Pikeun anu hoyong latihan, tingali kumaha gambar dibagi kana bagian sareng subbagian. Jang ngalampahkeun ieu, anjeun tiasa nganggo anu parantos disebatkeun dina tulisan sateuacana. Intel Video Pro Analyzer (anu dibayar, tapi nganggo versi percobaan gratis anu dugi ka 10 pigura munggaran). Bagian dianalisis di dieu VP9:

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Lengkah 2 - ramalan

Sakali kami gaduh bagian, urang tiasa ngadamel ramalan astrologi pikeun aranjeunna. Pikeun ramalan INTER kudu dialihkeun vektor gerak jeung sésana, sarta pikeun INTRA forecasting eta dikirimkeun arah ramalan jeung sésana.

Lengkah 3 - transformasi

Sakali kami boga blok residual (bagian diprediksi → bagian nyata), kasebut nyaéta dimungkinkeun pikeun transformasi eta dina cara sapertos nu urang nyaho piksel nu bisa dipiceun bari ngajaga kualitas sakabéh. Aya sababaraha transformasi nu nyadiakeun kabiasaan pasti.

Sanaos aya metode anu sanés, hayu urang tingali langkung rinci. transformasi kosinus diskrit (DCT - tina transformasi kosinus diskrit). Fungsi utama DCT:

  • Ngarobah blok piksel jadi blok sarua-ukuran koefisien frékuénsi.
  • Condenses kakuatan pikeun mantuan ngaleungitkeun redundansi spasial.
  • Nyadiakeun reversibility.

2 Pébruari 2017 Sintra R.J. (Cintra, RJ) jeung Bayer F.M. (Bayer FM) diterbitkeun artikel ngeunaan hiji transformasi DCT-kawas pikeun komprési gambar nu merlukeun ukur 14 tambahan.

Tong hariwang upami anjeun henteu ngartos mangpaat unggal titik. Ayeuna hayu urang nganggo conto khusus pikeun ningali nilai nyatana.

Hayu urang nyandak ieu 8x8 blok piksel:

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Blok ieu ditingalikeun kana gambar 8 x 8 piksel ieu:

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Larapkeun DCT ka blok piksel ieu sareng kéngingkeun blok koefisien 8x8:

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Sareng upami urang ngadamel blok koefisien ieu, urang bakal nampi gambar ieu:

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Sakumaha anjeun tiasa tingali, éta henteu siga gambar aslina. Anjeun tiasa ningali yén koefisien kahiji béda pisan ti sadayana anu sanés. Koefisien kahiji ieu katelah koefisien DC, nu ngagambarkeun sakabéh sampel dina Asép Sunandar Sunarya input, hal kawas rata-rata.

Blok koefisien ieu gaduh sipat anu pikaresepeun: éta misahkeun komponén frekuensi tinggi sareng komponén frekuensi rendah.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Dina gambar, seuseueurna kakuatan dikonsentrasikeun dina frékuénsi anu langkung handap, janten upami anjeun ngarobih gambar kana komponén frékuénsina sareng miceun koefisien frekuensi anu langkung luhur, anjeun tiasa ngirangan jumlah data anu diperyogikeun pikeun ngajelaskeun gambar tanpa ngorbankeun teuing kualitas gambar.

Frékuénsi nujul kana sabaraha gancang sinyal robah.

Hayu urang cobian nerapkeun pangaweruh anu dicandak dina kasus uji ku cara ngarobih gambar asli kana frékuénsina (blok koefisien) nganggo DCT teras miceun bagian tina koefisien anu paling teu penting.

Mimiti urang ngarobih kana domain frekuensi.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Salajengna, urang miceun bagian (67%) tina koefisien, utamana bagian katuhu handap.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Tungtungna, urang ngarekonstruksikeun gambar tina blok ieu dipiceun koefisien (inget, éta kudu invertible) tur dibandingkeun jeung aslina.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Urang nempo yén éta nyarupaan gambar aslina, tapi aya loba béda ti aslina. Kami ngalungkeun 67,1875% sareng masih ngagaduhan anu sami sareng aslina. Ieu mungkin mun leuwih thoughtfully Piceun koefisien pikeun ménta hiji gambar kualitas malah hadé, tapi éta topik salajengna.

Unggal koefisien dihasilkeun ngagunakeun sakabéh piksel

Penting: unggal koefisien henteu langsung dipetakeun kana hiji piksel, tapi mangrupakeun jumlah beurat sadaya piksel. Grafik endah ieu nunjukkeun kumaha koefisien kahiji sareng kadua diitung nganggo beurat anu unik pikeun unggal indéks.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Anjeun oge bisa nyoba visualize DCT ku nempo formasi gambar basajan dumasar kana eta. Contona, ieu simbol A dihasilkeun ngagunakeun unggal beurat koefisien:

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Lengkah 4 - kuantisasi

Saatos urang buang sababaraha koefisien dina hambalan saméméhna, dina hambalan panungtungan (transformasi) urang ngalakukeun formulir husus kuantisasi. Dina tahap ieu bisa ditarima leungit informasi. Atanapi, langkung saderhana, urang bakal ngitung koefisien pikeun ngahontal komprési.

Kumaha anjeun tiasa ngitung blok koefisien? Salah sahiji metodeu pangbasajanna nyaéta kuantisasi seragam, nalika urang nyandak blok, bagikeun ku hiji nilai (ku 10) sareng buleud hasilna.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Naha urang tiasa ngabalikeun blok koefisien ieu? Sumuhun, urang tiasa, kalikeun ku nilai sarua ku nu urang dibagi.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Pendekatan ieu sanés anu pangsaéna sabab henteu nganggap pentingna unggal koefisien. Hiji bisa ngagunakeun matriks quantizers tinimbang hiji nilai tunggal, sarta matrix ieu bisa mangpaatkeun sipat DCT ku quantizing mayoritas katuhu handap sarta minoritas kénca luhur.

Lengkah 5 - coding éntropi

Sakali kami geus quantized data (blok gambar, fragmen, pigura), urang masih bisa niiskeun eta losslessly. Aya seueur cara algoritma pikeun ngompres data. Kami badé ningali gancang sababaraha di antarana, pikeun pamahaman anu langkung jero anjeun tiasa maca buku Understanding Compression: Data Compression for Modern Developers ("Pamahaman Kompresi: Komprési Data pikeun Pamekar Modern").

Encoding video nganggo VLC

Anggap urang gaduh aliran karakter: a, e, r и t. Kamungkinan (ti 0 nepi ka 1) sabaraha sering unggal karakter nembongan dina aliran dibere dina tabel ieu.

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

Urang tiasa napelkeun kode binér unik (preferably leutik) ka nu paling dipikaresep, sarta kode nu leuwih gede pikeun leuwih saeutik kamungkinan.

a e r t
Kamungkinan 0,3 0,3 0,2 0,2
Kodeu binér 0 10 110 1110

Urang niiskeun stream, asumsina yén urang bakal mungkas nepi belanja 8 bit pikeun tiap karakter. Tanpa komprési, 24 bit bakal diperlukeun per karakter. Upami anjeun ngagentos unggal karakter sareng kodena, anjeun bakal ngahémat!

Hambalan munggaran nyaéta encode karakter e, nu sarua jeung 10, jeung karakter kadua a, nu ditambahkeun (teu dina cara matematik): [10] [0], sarta tungtungna karakter katilu t, nu ngajadikeun bitstream dikomprés final urang sarua jeung [10][0][1110] atawa 1001110, nu merlukeun ukur 7 bit (3,4 kali kirang spasi ti aslina).

Punten dicatet yén unggal kode kedah janten kode unik kalayan awalan. Algoritma Huffman baris mantuan anjeun manggihan angka ieu. Sanajan metoda ieu teu tanpa flaws na, aya codec video nu masih nawiskeun metoda algorithmic ieu komprési.

Boh encoder sareng decoder kedah gaduh aksés kana méja simbol sareng kode binérna. Kituna, éta ogé perlu pikeun ngirim tabel salaku input.

Coding aritmatika

Anggap urang gaduh aliran karakter: a, e, r, s и t, sarta probabiliti maranéhanana dibere dina tabel ieu.

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

Ngagunakeun tabél ieu, urang bakal ngawangun rentang ngandung sakabéh karakter mungkin, diurutkeun ku jumlah pangbadagna.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Ayeuna hayu urang encode aliran tilu karakter: dahar.

Pilih heula karakter kahiji e, anu aya dina subrange tina 0,3 dugi ka 0,6 (henteu kalebet). Kami nyandak subrange ieu sareng ngabagi deui dina proporsi anu sami sareng sateuacanna, tapi pikeun rentang anyar ieu.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Hayu urang neruskeun coding stream urang dahar. Ayeuna nyandak karakter kadua a, nu aya dina subrange anyar ti 0,3 ka 0,39, lajeng nyandak karakter panungtungan urang t sarta ngulang deui prosés anu sarua, urang meunang sub-rentang final ti 0,354 ka 0,372.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Urang ngan kedah milih nomer dina subrange panungtungan ti 0,354 nepi ka 0,372. Hayu urang milih 0,36 (tapi anjeun tiasa milih nomer anu sanés dina subrange ieu). Ngan kalayan jumlah ieu urang bakal tiasa mulangkeun aliran aslina urang. Saolah-olah urang ngagambar garis dina rentang pikeun encode stream urang.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Operasi sabalikna (nyaéta, decoding) sagampil basajan: kalawan jumlah urang 0,36 jeung rentang awal urang, urang bisa ngajalankeun prosés nu sarua. Tapi ayeuna, nganggo nomer ieu, urang ngaidentipikasi aliran anu disandikeun nganggo nomer ieu.

Kalayan rentang kahiji, urang perhatikeun yén jumlah urang pakait jeung keureutan, jadi ieu karakter kahiji urang. Ayeuna urang ngabagi sub-rentang ieu deui ku nuturkeun prosés anu sami sareng sateuacana. Di dieu anjeun bisa nempo yén 0,36 pakait jeung simbol a, sarta sanggeus ngulang prosés urang anjog di karakter panungtungan t (ngabentuk aliran disandikeun asli urang dahar).

Duanana encoder na decoder kudu boga tabel probabiliti simbol, jadi perlu pikeun ngirim eta dina data input ogé.

Cukup elegan, sanés? Saha waé anu mendakan solusi ieu mangrupikeun pinter. Sababaraha codec video nganggo téknik ieu (atanapi sahenteuna nawiskeun salaku pilihan).

Ide nya pikeun losslessly niiskeun aliran bit quantized. Pasti artikel ieu leungit ton rinci, alesan, trade-offs, jsb. Tapi upami anjeun pamekar, anjeun kedah terang langkung seueur. Codec anyar coba ngagunakeun algoritma encoding éntropi béda kayaning ANS.

Lengkah 6 - format bitstream

Saatos ngalakukeun sadayana ieu, anu sésana nyaéta ngabongkar pigura anu dikomprés dina kontéks léngkah-léngkah anu dilakukeun. Dekoder kedah terang sacara eksplisit ngeunaan kaputusan anu dilakukeun ku encoder. Decoder kedah disayogikeun sareng sadaya inpormasi anu diperyogikeun: jero bit, rohangan warna, résolusi, inpormasi prediksi (vektor gerak, prediksi INTER arah), profil, tingkat, tingkat pigura, jinis pigura, nomer pigura sareng seueur deui.

Urang bakal nyandak katingal gancang dina bitstream H.264. Léngkah munggaran urang nyaéta nyiptakeun bitstream H.264 minimal (FFmpeg sacara standar nambihan sadaya pilihan encoding sapertos SEI NAL - urang bakal terang naon éta sakedik deui). Urang tiasa ngalakukeun ieu nganggo gudang sorangan sareng FFmpeg.

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

Paréntah ieu bakal ngahasilkeun bitstream atah H.264 kalawan hiji pigura, 64 × 64 resolusi, kalawan spasi warna YUV420. Dina hal ieu, gambar di handap ieu dipaké salaku pigura.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

H.264 bitstream

standar AVC (H.264) nangtukeun yén informasi bakal dikirim dina macroframes (dina rasa jaringan), disebut nal (ieu tingkat abstraksi jaringan). Tujuan utama NAL nyaéta nyadiakeun presentasi video "ramah-web". Standar ieu kedah dianggo dina TV (basis aliran), Internét (basis pakét).

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Aya pananda sinkronisasi pikeun nangtukeun wates unsur NAL. Unggal token singkronisasi ngandung nilai 0x00 0x00 0x01, iwal hiji pisan munggaran, nu sarua jeung 0x00 0x00 0x00 0x01. Lamun urang ngajalankeun hexdump pikeun H.264 bitstream dihasilkeun, urang nangtukeun sahanteuna tilu pola NAL di awal file.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Sakumaha anu dinyatakeun, decoder kedah terang henteu ngan ukur data gambar, tapi ogé detil pidéo, pigura, warna, parameter anu dianggo, sareng seueur deui. Bait kahiji unggal NAL ngahartikeun kategori sareng jinisna.

NAL tipe identifier gambaran
0 Jenis anu teu dipikanyaho
1 Sempalan gambar disandikeun tanpa IDR
2 Bagian data nyiksikan disandi A
3 Bagian data nyiksikan disandi B
4 Bagian data nyiksikan disandi C
5 Fragmen IDR anu disandikeun tina gambar IDR
6 Inpo nu langkung lengkep ihwal extension SEI
7 SPS runtuyan Parameter Set
8 Set parameter gambar PPS
9 Pamisah aksés
10 Tungtung runtuyan
11 Tungtung benang
... ...

Ilaharna NAL mimiti aliran bit nyaéta SPS. Jenis NAL ieu tanggung jawab pikeun nginpokeun ngeunaan variabel encoding umum sapertos profil, tingkat, résolusi, jsb.

Lamun urang skip spidol sinkronisasi munggaran, urang tiasa decode bait munggaran pikeun manggihan nu tipe NAL kahiji.

Contona, bait munggaran sanggeus token singkronisasi nyaeta 01100111, dimana bit kahiji (0) aya dina widang forbidden_zero_bit. 2 bit salajengna (11) ngabejaan urang sawah nal_ref_idc, nu nunjukkeun naha NAL ieu widang rujukan atanapi henteu. Jeung 5 bit sésana (00111) ngabejaan urang sawah nal_unit_type, dina hal ieu éta blok SPS (7) NAL.

Byte kadua (binér=01100100, hex=0x64, Dec=100) dina SPS NAL nyaeta lapangan profil_idc, nu nembongkeun profil nu encoder dipaké. Dina hal ieu, profil tinggi kawates dipaké (ie, profil luhur tanpa rojongan B-segmén dua arah).

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Lamun nempo spésifikasi bitstream H.264 pikeun SPS NAL, urang bakal mendakan seueur nilai pikeun nami parameter, kategori sareng pedaran. Contona, hayu urang nempo sawah pic_width_in_mbs_minus_1 и pic_height_in_map_units_minus_1.

Ngaran parameter kategori gambaran
pic_width_in_mbs_minus_1 0 ue (v)
pic_height_in_map_units_minus_1 0 ue (v)

Upami urang ngalakukeun sababaraha operasi matematik kalayan nilai-nilai widang ieu, urang bakal kéngingkeun résolusi. Hiji bisa ngagambarkeun 1920 x 1080 ngagunakeun pic_width_in_mbs_minus_1 kalawan nilai 119 ((119 + 1) * macroblock_size = 120 * 16 = 1920). Sakali deui, pikeun ngahemat rohangan, tibatan encoding 1920, kami ngalakukeun éta kalayan 119.

Upami urang teras-terasan pariksa pidéo anu didamel dina bentuk binér (contona: xxd -b -c 11 v/minimal_yuv420.h264), mangka anjeun bisa balik ka NAL panungtungan, nu pigura sorangan.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Di dieu urang ningali nilai 6 bait anu munggaran: 01100101 10001000 10000100 00000000 00100001 11111111. Kusabab bait munggaran dipikanyaho nunjukkeun jinis NAL, dina hal ieu (00101) nyaéta sempalan IDR (5), teras anjeun tiasa ngajalajah deui:

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Nganggo inpormasi spésifikasi, anjeun tiasa nga-decode jinis sempalan (slice_type) jeung nomer pigura (pigura_num) diantara widang penting lianna.

Pikeun meunangkeun nilai sababaraha widang (ue(v), me(v), se(v) atanapi te(v)), urang kudu decode fragmen ngagunakeun decoder husus dumasar kana kode Golomb éksponénsial. Metoda ieu pohara efisien pikeun ngodekeun nilai variabel, utamana lamun aya loba nilai standar.

Éta nilai slice_type и pigura_num video ieu 7 (I-fragmén) jeung 0 (bingkai kahiji).

A bitstream bisa dianggap salaku protokol. Upami anjeun hoyong terang langkung seueur ngeunaan bitstream, anjeun kedah ningali spésifikasina ITU H.264. Ieu diagram makro anu nunjukkeun dimana data gambar (YUV dina bentuk dikomprés).

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

bitstreams lianna bisa nalungtik, kayaning VP9, H.265 (HEVC) atawa malah bitstream pangalusna anyar urang AV1. Naha aranjeunna sadayana sami? Henteu, tapi sakali anjeun ngartos sahenteuna hiji, éta langkung gampang ngartos anu sanés.

Rék latihan? Ngajalajah H.264 bitstream

Anjeun tiasa ngahasilkeun pidéo pigura tunggal sareng nganggo MediaInfo pikeun nguji bitstream H.264. Nyatana, teu aya anu ngahalangan anjeun ningali kode sumber anu nganalisa aliran bit H.264 (AVC).

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Pikeun prakték, anjeun tiasa nganggo Intel Video Pro Analyzer (naha kuring parantos nyarios yén program éta dibayar, tapi aya versi percobaan gratis kalayan wates 10 pigura?).

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

gambaran

Catet yén seueur codec modéren nganggo modél anu sami anu karek diajar. Di dieu, hayu urang tingali diagram blok tina codec video Thor. Ieu ngandung sakabéh hambalan kami geus kaliwat. Sakabeh titik tina pos ieu sahenteuna masihan anjeun pamahaman hadé ngeunaan inovasi jeung dokuméntasi di wewengkon ieu.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Saméméhna, éta diitung yén 139 GB spasi disk bakal diperlukeun pikeun nyimpen hiji file video langgeng hiji jam dina kualitas 720p sarta 30 fps. Upami anjeun nganggo metode anu dibahas dina tulisan ieu (antar-pigura sareng prediksi internal, transformasi, kuantisasi, coding éntropi, jsb.), maka anjeun tiasa ngahontal (dumasar kana kanyataan yén urang nyéépkeun 0,031 bit per piksel), pidéo anu lumayan. kualitas nyugemakeun, occupying wungkul 367,82 MB, teu 139 memori GB.

Kumaha carana H.265 ngahontal rasio komprési hadé ti H.264?

Ayeuna urang terang langkung seueur ngeunaan kumaha codec dianggo, langkung gampang ngartos kumaha codec anu langkung énggal tiasa nganteurkeun résolusi anu langkung luhur kalayan sakedik bit.

Lamun urang ngabandingkeun AVC и HEVC, Eta sia remembering yén ieu téh ampir sok pilihan antara beban CPU gede tur rasio komprési.

HEVC boga leuwih bagian (jeung subsection) pilihan ti AVC, langkung seueur arah prediksi internal, ningkat éntropi coding, sareng seueur deui. Sadaya perbaikan ieu parantos dilakukeun H.265 sanggup compressing 50% leuwih ti H.264.

Kumaha carana sangkan hiji video codec jalan? Bagian 2. Naon, kunaon, kumaha

Bagian kahiji: Dasar gawé bareng video sareng gambar

sumber: www.habr.com

Tambahkeun komentar