2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Huomautus: Viitataan Golden Circle -oppimismenetelmään (mikä on kultaisen ympyrän sääntö? -> Malli Golden Circle Rule, tässä artikkelissa käytetään: miksi-mitä) oppiaksesi äänen H264-videokoodauksen. Tämä artikkelisarja keskittyy videokoodauksen tietojärjestelmän ja käytännön menetelmien ymmärtämiseen. Teoreettinen puoli selittää tarkemmin audion ja videon käsitteiden alkuperää ja eri käsitteiden välistä yhteyttä. Tiedä kuinka se on, tiedä miksi se on niin. Samalla painotetaan enemmän tietojärjestelmien rakentamista.
Tässä artikkelissa puhumme pääasiassa H.264-tietojen pakkausprosessista ja siihen liittyvistä käsitteistä. H.264-tiedonpakkauksella on vain yksi tarkoitus, pakata, pakata ja uudelleenpakkaus videodatan koon pienentämiseksi ja samalla varmistaa kuvanlaatu mahdollisimman paljon. Joten ennen kuin opimme H.264-tietojen pakkaamisen, meidän on ensin ymmärrettävä: Vaikka tähän prosessiin liittyy monia käsitteitä ja menetelmiä, kaikki menetelmät ja prosessit ovat tätä tarkoitusta varten: pakkaus.
H.264:n tietojen pakkausprosessi on pääosin tiivistetty seuraaviin avainvaiheisiin: makrolohkojako ja alilohkojako -> kehysten ryhmittely -> kehysten ennustaminen -> kokonaisluku diskreetti kosinimuunnos (DCT) -> CABAC-pakkaus. Tarkat laajennusohjeet ovat seuraavat.
Makrolohko: Voidaan ymmärtää, että kun videokehys lähetetään H264-enkooderin puskuriin, kooderi jakaa makrolohkot jokaiseen kuvaan. Oletusarvoisesti H264-koodaus käyttää 16x16 pikselin aluetta makrolohkona (H265 käyttää 64x64 pikselin aluetta Videon kehyksen jakaminen makrolohkoihin on seuraava:
Samalla yllä olevassa kuvassa voimme itse asiassa jakaa 16X16 pikselin makrolohkon pienempiin alilohkoihin. Alalohkon koko voi olla 8X16、16X8、8X8、4X8、8X4、4X4 on erittäin joustava. Sen taas jakamisen alilohkoihin tarkoituksena on tallentaa nämä tiedot hyvin pienillä tiedoilla. Kun makrolohkot on jaettu, kaikki H264-enkooderin välimuistissa olevat kuvat voidaan ryhmitellä.
Makrolohkojen ja alilohkojen jako mahdollistaa videokoodauksen analysoimaan ja prosessoimaan videosisältöä tarkemmin ja saavuttamaan tehokkaamman tiedonpakkauksen. Videokehykset on jaettu makrolohkoihin, joiden koko on 16x16 pikseliä, ja nämä makrolohkot voidaan jakaa edelleen pienempiin lohkoihin, kuten 8x8, 8x4, 4x8 jne. kuvasisällön monimutkaisuuden huomioon ottamiseksi.
Kehysryhmittely (GOP-rakenne) määritellään ennen sisäistä ennustetta ja välistä ennustetta. Videokoodausprosessissa kehysten ryhmittelyn asettaminen on yksi alkuvaiheista, joka määrittää videokehysten organisoinnin ja koodausjärjestyksen. Kehysryhmittelyn päätarkoitus on vähentää tietojen redundanssia. Videodatan redundanssi on jaettu pääasiassa kahteen luokkaan:
H264-kehysryhmittelyn suoritusvaiheet:
Kun ryhmittely on valmis, kehysennusteen pakkaamisen ongelma alkaa ratketa.
Tämä osa sisältää pääasiassa kehysten välisen ennustamisen ja kehysten välisen ennustamisen. Kehyksen sisäinen ennuste on pakata staattiset kuvakehykset, ennustaa kunkin makrolohkon pikseliarvo 9 eri tilassa ja laskea sitten jäännösarvo alkuperäisestä kuvasta. Kuvien välinen ennuste (liikkeen estimointi ja liikkeen kompensointi): Etsi P- ja B-kehysten liikevektori edellisen kehyksen tai kahden kehyksen välillä liikkeen arvioinnin avulla, suorita sitten liikkeen kompensoinnin ennuste, luo ennustettu kuva ja laske jäännösarvo nykyinen kehys.
Huomautus: Sisäisen ennusteen ja välisen ennusteen järjestys riippuu koodatun kehyksen tyypistä ja koodausstrategiasta. Todellisessa videoenkooderin toteutuksessa nämä vaiheet ovat osa koodausprosessia, ja kooderi käsittelee ne automaattisesti. Sen ei tarvitse olla se, joka sen ensin hoitaa.
Kehyksen sisäinen ennustuspakkaus: ratkaisee paikkatietojen redundanssiongelman. Ilmatilan redundanttidata viittaa väreihin, kirkkauteen jne., joka on tarkoitettu pääasiassa ihmissilmälle epäherkille tiedoille. Koodaus pakataan poistamalla se.Kehyksen sisäisessä ennustamisessa käytetty periaate on, että ihmissilmä tunnistaa kuvat tietyssä määrin. Se on erittäin herkkä matalataajuiselle kirkkaudelle ja vähemmän herkkä korkeataajuiselle kirkkaudelle.(Se voidaan ymmärtää makrolohkokooksi 16x16. H264:ssä muuta dataa ennustetaan ylimmän 16 ja vasemmanpuoleisen 16 pikselin kautta, jotta pikselien esitystiedot, jotka alun perin vaativat 16*16=256, voidaan muuntaa 16+:ksi. 16-1 = 31 pikseliä edustamaan tietoa)。
Interframe-ennusteen pakkaus (liikkeen estimointi ja kompensointi): ratkaisee aika-alueen datan redundanssin ongelman. Videossa on useita kehyksiä, jotka on järjestetty lineaarisesti kronologiseen järjestykseen. Kehysten välinen korrelaatio on erittäin vahva, joten kehysten välillä on paljon dataa, jota voidaan poistaa.Pakkauksen jälkeen se jaetaan kolmeen tyyppiin: I-kehys, P-kehys ja B-kehys.(Selitys: Liikkeen arvioinnin ja kompensoinnin periaate: H264-enkooderi ottaa ensin kaksi ruutua videodataa puskurin otsikosta peräkkäin ja suorittaa sitten makrolohkoskannauksen. Kun havaitaan, että yhdessä kuvassa on objekti, se etsii lähistöä (hakuikkunassa), jos kohde löytyy toisesta kuvasta, voidaan laskea kohteen liikevektori Alla oleva kuva on biljardipallon sijainti haun jälkeen.。
P-kehykselle ja B-kehykselle liikeestimaatiota käytetään liikevektorin löytämiseksi edellisen kehyksen tai kahden kehyksen välillä, ja sitten suoritetaan liikkeen kompensointiennuste ennustetun kuvan luomiseksi, ja nykyisen kehyksen jäännös lasketaan.
Tämä vaihe suorittaa pääasiassa DCT-muunnoksen ennustusjäännökselle, muuntaa spatiaalisen korrelaation epäolennaiseksi dataksi taajuusalueella ja kvantisoi sen sitten. DCT:tä käytetään pääasiassa tietojen tai kuvien pakkaamiseen, jolloin spatiaalinen korrelaatio muunnetaan epäolennaiseksi dataksi taajuusalueella ja sen jälkeen kvantisoidaan.(Selitys: DCT-muunnos voi kerätä yhteen tärkeämpää tietoa kuvasta, ja merkityksettömät taajuusalueen alueet ja kertoimet voidaan rajata suoraan)。
Yhteenveto: Kehystietojen pakkausjärjestys on suorittaa ensin kehysten välinen ja kehysten välinen pakkaus ja sitten suorittaa DCT-muunnos jäännösdatalle tietojen korrelaation poistamiseksi ja datan edelleen pakkaamiseksi. Seuraavasti:
CABAC-pakkaus on häviötön pakkaustekniikka ja entropiakoodausmenetelmä. Kun CABAC on pakattu ja koodattu, korkeataajuinen data määritellään lyhyiksi koodeiksi ja matalataajuinen data pitkiksi koodeiksi. Tämä menetelmä on tehokkaampi kuin VLC-menetelmä. CABAC-entropiakoodausmenetelmää (Context-Adaptive Binary Arithmetic Coding) käytetään kvantisoitujen kertoimien pakkaamiseen edelleen pakkaustehokkuuden parantamiseksi. Tässä edellisessä neljässä vaiheessa käsitelty data koodataan lopulliseen koodivirtaan käyttämällä koodausalgoritmia. Lopulliset pakatut kehykset jaetaan: I-kehykset, P-kehykset ja B-kehykset. Kun häviötön CABAC-pakkausmenetelmä on suoritettu, saadaan videokoodivirta.
Tilatietojen redundanssi ja ajallisen datan redundanssi ovat kaksi videon pakkaamisen peruskäsitettä. Ne kuvaavat toistuvaa tietoa videokehysten sisällä ja niiden välillä.
Spatiaalisen redundanssin tulkinta:
Ajallisen redundanssin tulkinta:
H.264-videopakkauksessa jäännöstiedot viittaavat alkuperäisen videokuvan ja ennustetun kuvan väliseen eroon. Samanaikaisesti, jos haluat saada syvällisemmän ymmärryksen jäännöstiedoista, sinun on ymmärrettävä seuraavat käsitteet, kuten alla on esitetty:
ennustettu kehys : Videon koodausprosessin aikana käytetään intra-ennustetta (Intra Prediction) tai inter-ennustetta (Inter Prediction) ennustettujen kehysten luomiseen. Sisäinen ennuste perustuu nykyisen kehyksen pikselitietoihin, kun taas välinen ennuste perustuu edellisten tai seuraavien kehysten liikkeen kompensointitietoihin.
alkuperäinen kehys: Viittaa alkuperäisiin kuvaruutuihin, jotka on todella otettu videosarjassa.
Jäännöslaskenta : Jäännöstiedot lasketaan vähentämällä ennustettu kehys alkuperäisestä kehyksestä. Jäännösdata edustaa eroa ennustetun kehyksen ja alkuperäisen kehyksen välillä.
Yllä olevien käsitteiden pohjalta voimme ymmärtää paremmin jäännöstietojen ominaisuuksia:
Jäännösdatalla on yleensä korkea spatiaalinen satunnaisuus, koska ennustekehys on poistanut suurimman osan redundantista tiedosta. Tämä satunnaisuus tekee jäännösdatasta sopivan jatkopakkaukseen muunnoksen ja kvantisoinnin avulla.
Kun jäännöstiedot on käsitelty kokonaislukudiskreetillä kosinimuunnolla (IDCT) ja kvantisoinnilla, tiedon määrää voidaan vähentää merkittävästi. Transformaatio muuntaa residuaalin kaksiulotteisen spatiaalisen tiedon taajuusinformaatioksi, kun taas kvantisointi vähentää näiden kertoimien tarkkuutta ja poistaa ihmissilmälle huomaamattomat yksityiskohdat.
Jäännösdatan koodauksen tarkoituksena on edelleen vähentää videodatan bittinopeutta säilyttäen samalla kuvanlaatu mahdollisimman paljon. Samaan aikaan jäännösdatan tehokas pakkaus on ratkaisevan tärkeää H.264-koodauksen tehokkuudelle, koska se vaikuttaa suoraan koodatun videon laatuun ja tarvittavaan tallennus- tai lähetyskaistanleveyteen.
Entropiakoodaus on häviötön tiedonpakkaustekniikka, joka perustuu informaatioentropian käsitteeseen ja pyrkii esittämään dataa mahdollisimman pienellä bittimäärällä. Entropiakoodauksen ydinajatus on allokoida vähemmän bittejä symboleille, joita esiintyy todennäköisemmin, ja allokoida enemmän bittejä symboleille, jotka esiintyvät harvemmin. Tällä tavalla haluttu tallennustila tai lähetyskaistanleveys pienenee, koska koko tietojoukon keskimääräinen bittinopeus pienenee.
Entropiakoodausta käytetään usein tekstin ja tietyntyyppisten tietojen pakkaamiseen, ja se voi parantaa merkittävästi pakkaustehoa, varsinkin kun tiedoilla on merkittävästi epäyhtenäinen todennäköisyysjakauma. Videon pakkauskoodauksessa videon pakkaamiseen läheisimmin liittyvät entropiakoodausmenetelmät sisältävät pääasiassa seuraavat:
Videopakkauksessa entropiakoodaus on viimeinen koodausvaihe, jota käytetään jäännösdatan koodaamiseen sisäisen ja keskinäisen ennustuksen jälkeen. Jäännösdata on ero alkuperäisen datan ja ennustetun datan välillä, ja sillä on yleensä vähemmän energiaa ja epätasaisempi todennäköisyysjakauma. Entropiakoodauksen avulla näiden jäännösdatan bittinopeutta voidaan edelleen vähentää, jolloin saavutetaan videodatan pakkaamisen tarkoitus.