FMUSER Wirless Verzend video en audio eenvoudiger!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabisch
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbeidzjaans
eu.fmuser.org -> Baskisch
be.fmuser.org -> Wit-Russisch
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Catalaans
zh-CN.fmuser.org -> Chinees (vereenvoudigd)
zh-TW.fmuser.org -> Chinees (traditioneel)
hr.fmuser.org -> Kroatisch
cs.fmuser.org -> Tsjechisch
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlands
et.fmuser.org -> Ests
tl.fmuser.org -> Filipijns
fi.fmuser.org -> Fins
fr.fmuser.org -> Frans
gl.fmuser.org -> Galicisch
ka.fmuser.org -> Georgisch
de.fmuser.org -> Duits
el.fmuser.org -> Greek
ht.fmuser.org -> Haïtiaans Creools
iw.fmuser.org -> Hebreeuws
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> IJslands
id.fmuser.org -> Indonesisch
ga.fmuser.org -> Iers
it.fmuser.org -> Italian
ja.fmuser.org -> Japans
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedonisch
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Norwegian
fa.fmuser.org -> Perzisch
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russisch
sr.fmuser.org -> Servisch
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Slovenian
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Zweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Welsh
yi.fmuser.org -> Jiddisch
inleiding
Het H264-algoritme voor videocompressie is nu ongetwijfeld de meest gebruikte en populairste van alle videocompressietechnieken. Met de introductie van open source-bibliotheken zoals x264 / openh264 en ffmpeg, hoeven de meeste gebruikers niet langer teveel onderzoek te doen naar de details van H264, wat de kosten van mensen die H264 gebruiken aanzienlijk vermindert.
Maar om H264 goed te kunnen gebruiken, moeten we nog de basisprincipes van H264 achterhalen. Vandaag zullen we de basisprincipes van H264 bekijken.
H264 overzicht
De H264-compressietechnologie gebruikt voornamelijk de volgende methoden om videogegevens te comprimeren. omvatten:
Intra-frame voorspellingscompressie lost het probleem van redundantie van ruimtelijke gegevens op.
Interframevoorspellingscompressie (bewegingsschatting en -compensatie) lost het probleem van gegevensredundantie in het tijddomein op.
Integer Discrete Cosinus Transform (DCT), die de ruimtelijke correlatie omzet in irrelevante gegevens in het frequentiedomein en deze vervolgens kwantificeert.
CABAC-compressie.
Het gecomprimeerde frame is onderverdeeld in: I-frame, P-frame en B-frame:
I frame: keyframe, gebruikmakend van intra-frame compressietechnologie.
P-frame: voorwaarts referentieframe, bij het comprimeren alleen verwijzen naar het eerder verwerkte frame. Gebruik frame-audiocompressietechnologie.
B-frame: een bidirectioneel referentieframe. Tijdens compressie verwijst het naar het vorige frame en het volgende frame. Met behulp van inter-frame compressietechnologie.
Naast I / P / B-frames zijn er ook beeldreeksen GOP.
GOP: tussen twee I-frames is een afbeeldingsreeks en er is slechts één I-frame in een afbeeldingsreeks. Zoals hieronder getoond:
Nu zullen we de H264-compressietechnologie in detail beschrijven.
H264-compressietechnologie
Het basisprincipe van H264 is eigenlijk heel eenvoudig, laten we kort het proces van H264-compressie van gegevens beschrijven. De videoframes die door de camera zijn vastgelegd (berekend op 30 frames per seconde), worden naar de buffer van de H264-encoder gestuurd. De encoder moet eerst macroblokken voor elk beeld verdelen.
Neem de volgende afbeelding als voorbeeld:
Partitie macroblok
H264 gebruikt standaard een 16X16-gebied als een macroblok en kan ook worden onderverdeeld in 8X8-afmetingen.
Bereken na het verdelen van het macroblok de pixelwaarde van het macroblok.
Naar analogie wordt de pixelwaarde van elk macroblok in een afbeelding berekend en worden alle macroblokken als volgt verwerkt.
Subblok
H264 gebruikt 16x16 macroblokken voor relatief platte afbeeldingen. Om een hogere compressiesnelheid te bereiken, kunnen kleinere subblokken echter ook worden verdeeld in 16x16 macroblokken. De grootte van het subblok kan 8X16, 16X8, 8X8, 4X8, 8X4, 4X4 zijn, wat erg flexibel is.
In de bovenstaande afbeelding hebben de meeste van de 16x16 macroblokken in het rode frame een blauwe achtergrond en een deel van de afbeelding van de drie adelaars is in dit macroblok getekend. Om de deelbeelden van de drie adelaars beter te kunnen verwerken, zijn H264 Meerdere subblokken verdeeld in 16x16 macroblokken.
Op deze manier kunnen na intra-frame compressie efficiëntere gegevens worden verkregen. De onderstaande afbeelding is het resultaat van het comprimeren van de bovenstaande macroblokken met respectievelijk mpeg-2 en H264. De linkerhelft is het resultaat van compressie na MPEG-2-subblokverdeling en de rechterhelft is het resultaat van H264-subblokcompressie. Het is duidelijk dat de H264-verdelingsmethode meer voordelen heeft.
Nadat het macroblok is verdeeld, kunnen alle afbeeldingen in de H264-encoderbuffer worden gegroepeerd.
Frame groeperen
Voor videogegevens zijn er hoofdzakelijk twee soorten gegevensredundantie: de ene is gegevensredundantie in de tijd en de andere is gegevensredundantie in de ruimte. Onder hen is de gegevensredundantie in de tijd het grootst. Laten we het eerst hebben over het redundantieprobleem van videogegevens.
Waarom is de tijdredundantie het grootst? Ervan uitgaande dat de camera 30 frames per seconde vastlegt, zijn de gegevens van deze 30 frames meestal gerelateerd. Het is ook mogelijk dat meer dan 30 gegevensframes, tientallen frames of honderden gegevensframes bijzonder nauw verwant zijn.
Voor deze zeer nauw verwante frames hoeven we in feite maar één frame met gegevens op te slaan, en andere frames kunnen op basis van dit frame worden voorspeld volgens bepaalde regels, dus de videogegevens hebben de meeste tijdredundantie.
Om te bereiken dat de relevante frames gegevens comprimeren via de voorspellingsmethode, is het noodzakelijk om de videoframes te groeperen. Dus hoe bepaal je dat bepaalde frames nauw verwant zijn en gegroepeerd kunnen worden? Laten we een voorbeeld bekijken. Hieronder ziet u een opgenomen videoframe van een groep biljartballen in beweging. De biljartballen rollen van de rechter bovenhoek naar de linker benedenhoek.
De H264-encoder zal elke keer twee aangrenzende frames verwijderen om de macroblokken te vergelijken om de gelijkenis van de twee frames te berekenen. Zoals hieronder getoond:
Door de macroblokscan en de macroblokzoekopdracht kan worden vastgesteld dat de correlatie tussen de twee frames erg hoog is. Verder blijkt dat de correlatiegraad van deze groep frames erg hoog is. Daarom kunnen de bovenstaande frames in één groep worden verdeeld. Het algoritme is: in de aangrenzende afbeeldingen zijn de pixels die over het algemeen verschillen slechts binnen 10%, het helderheidsverschil is niet groter dan 2% en het kleurverschil verandert slechts binnen 1%. We denken dat dit de grafieken kunnen worden gegroepeerd.
In zo'n groep frames bewaren we na codering alleen de volledige gegevens van het eerste bericht, en andere frames worden berekend door te verwijzen naar het vorige frame. We noemen het eerste frame IDR / I-frame, en andere frames noemen we P / B-frame, dus noemen we de gecodeerde dataframegroep GOP.
Bewegingsschatting en compensatie
Nadat de frames zijn gegroepeerd in de H264-encoder, is het nodig om de bewegingsvectoren van de objecten in de framegroep te berekenen. Laten we het bovenstaande bewegende biljartvideoframe als voorbeeld nemen, laten we eens kijken hoe het de bewegingsvector berekent.
De H264-encoder haalt eerst twee frames met videogegevens achtereenvolgens uit de bufferkop en voert vervolgens macroblokscan uit. Als er een object wordt gevonden in een van de afbeeldingen, wordt de zoekopdracht uitgevoerd in de buurt van de andere afbeelding (in het zoekvenster). Als het object op dit moment in een ander beeld wordt gevonden, kan de bewegingsvector van het object worden berekend. De volgende afbeelding toont de positie van de biljartbal na het zoeken.
Door het verschil tussen de posities van de biljartballen in bovenstaande afbeelding kan de richting en afstand van de tafelfoto berekend worden. H264 registreert om de beurt de afstand en richting van de balbeweging in elk frame en wordt het volgende.
Nadat de bewegingsvector is berekend, wordt hetzelfde deel (dat wil zeggen het groene deel) afgetrokken om de compensatiegegevens te verkrijgen. Uiteindelijk hoeven we alleen de compensatiegegevens te comprimeren en op te slaan, waarna de originele afbeelding kan worden hersteld tijdens het decoderen. De gecomprimeerde gegevens hoeven slechts een kleine hoeveelheid gegevens op te nemen. Als volgt:
We noemen bewegingsvector en compensatie als inter-frame compressietechnologie, die de gegevensredundantie van videoframes op tijd oplost. Naast compressie tussen frames, moet datacompressie ook binnen het frame worden uitgevoerd. Datacompressie binnen een frame lost redundantie van ruimtelijke gegevens op. Nu zullen we de intra-frame compressietechnologie introduceren.
Intra voorspelling
Het menselijk oog heeft een zekere mate van herkenning van het beeld, het is erg gevoelig voor de helderheid van lage frequentie en is niet erg gevoelig voor de helderheid van hoge frequentie. Daarom kunnen op basis van enig onderzoek gegevens die niet gevoelig zijn voor menselijke ogen uit een afbeelding worden verwijderd. Op deze manier wordt de intra-voorspellingstechnologie voorgesteld.
De intra-frame compressie van H264 lijkt sterk op JPEG. Nadat een afbeelding in macroblokken is verdeeld, kan elk macroblok in 9 modi worden voorspeld. Zoek de voorspellingsmodus die het originele beeld het dichtst benadert.
De volgende afbeelding is het proces waarbij elk macroblok in de hele afbeelding wordt voorspeld.
De vergelijking tussen de afbeelding na intra-voorspelling en de originele afbeelding is als volgt:
Vervolgens worden het originele beeld en het intra-voorspelde beeld afgetrokken om een restwaarde te verkrijgen.
Sla vervolgens de informatie in de voorspellingsmodus op die we eerder hebben gekregen, zodat we de originele afbeelding kunnen herstellen tijdens het decoderen. Het effect is als volgt:
Na intra-frame en inter-frame compressie, hoewel de gegevens sterk worden verminderd, is er nog steeds ruimte voor optimalisatie.
Doe DCT op resterende gegevens
De resterende gegevens kunnen worden onderworpen aan discrete cosinus-transformatie van gehele getallen om de correlatie van de gegevens te verwijderen en de gegevens verder te comprimeren. Zoals te zien is in de onderstaande afbeelding, is de linkerkant het macroblok van de originele gegevens en de rechterkant het macroblok van de berekende resterende gegevens.
Het macroblok met resterende gegevens wordt gedigitaliseerd zoals weergegeven in de onderstaande afbeelding:
DCT-conversie wordt uitgevoerd op het resterende gegevensmacroblok.
Na het verwijderen van de bijbehorende gegevens kunnen we zien dat de gegevens verder worden gecomprimeerd.
Nadat DCT is voltooid, is het niet genoeg en is CABAC nodig voor verliesvrije compressie.
CABAC
De bovenstaande intra-frame-compressie is een compressietechniek met verlies. Met andere woorden, nadat de afbeelding is gecomprimeerd, kan deze niet volledig worden hersteld. CABAC is een compressietechnologie zonder verlies.
Lossless-compressietechnologie is misschien wel de bekendste voor iedereen, Huffman-codering, een korte code voor hoogfrequente woorden, een lange code voor laagfrequente woorden om het doel van datacompressie te bereiken. VLC die wordt gebruikt in MPEG-2 is dit soort algoritme, we nemen AZ als voorbeeld, A behoort tot hoogfrequente gegevens en Z behoort tot laagfrequente gegevens. Kijk hoe het moet.
CABAC is ook een korte code voor hoogfrequente gegevens en een lange code voor laagfrequente gegevens. Tegelijkertijd wordt het gecomprimeerd op basis van context, wat veel efficiënter is dan VLC. Het effect is als volgt:
Vervang AZ nu door een videoframe en het ziet er als volgt uit.
Uit de bovenstaande afbeelding blijkt duidelijk dat het verliesvrije compressieschema met CACBA veel efficiënter is dan VLC.
beknopte versie
Op dit punt zijn we klaar met het H264-coderingsprincipe. Dit artikel gaat voornamelijk over de volgende punten:
1. Jianyin introduceerde enkele basisconcepten in H264. Zoals I / P / B-frame, GOP.
2. De basisprincipes van H264-codering in detail uitgelegd, waaronder:
Macroblokverdeling
Afbeelding groeperen
Principe van intra-frame compressietechnologie
Het principe van compressietechnologie tussen frames.
DCT
CABAC-compressieprincipe.
|
Voer een e-mailadres in om een verrassing te ontvangen
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabisch
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbeidzjaans
eu.fmuser.org -> Baskisch
be.fmuser.org -> Wit-Russisch
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Catalaans
zh-CN.fmuser.org -> Chinees (vereenvoudigd)
zh-TW.fmuser.org -> Chinees (traditioneel)
hr.fmuser.org -> Kroatisch
cs.fmuser.org -> Tsjechisch
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlands
et.fmuser.org -> Ests
tl.fmuser.org -> Filipijns
fi.fmuser.org -> Fins
fr.fmuser.org -> Frans
gl.fmuser.org -> Galicisch
ka.fmuser.org -> Georgisch
de.fmuser.org -> Duits
el.fmuser.org -> Greek
ht.fmuser.org -> Haïtiaans Creools
iw.fmuser.org -> Hebreeuws
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> IJslands
id.fmuser.org -> Indonesisch
ga.fmuser.org -> Iers
it.fmuser.org -> Italian
ja.fmuser.org -> Japans
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedonisch
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Norwegian
fa.fmuser.org -> Perzisch
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russisch
sr.fmuser.org -> Servisch
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Slovenian
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Zweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Welsh
yi.fmuser.org -> Jiddisch
FMUSER Wirless Verzend video en audio eenvoudiger!
Neem contact op
Adres:
No.305 Zaal HuiLan Gebouw No.273 Huanpu Road Guangzhou China 510620
Categorieën
Nieuwsbrief