FMUSER Wirless stuur video en klank makliker toe!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabies
hy.fmuser.org -> Armeens
az.fmuser.org -> Azerbeidjans
eu.fmuser.org -> Baskies
be.fmuser.org -> Belo-Russies
bg.fmuser.org -> Bulgaars
ca.fmuser.org -> Katalaans
zh-CN.fmuser.org -> Chinees (vereenvoudig)
zh-TW.fmuser.org -> Sjinees (Tradisioneel)
hr.fmuser.org -> Kroaties
cs.fmuser.org -> Tsjeggies
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlandse
et.fmuser.org -> Esties
tl.fmuser.org -> Filippyns
fi.fmuser.org -> Fins
fr.fmuser.org -> Franse
gl.fmuser.org -> Galisies
ka.fmuser.org -> Georgies
de.fmuser.org -> Duits
el.fmuser.org -> Grieks
ht.fmuser.org -> Haïtiaanse kreool
iw.fmuser.org -> Hebreeus
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Yslands
id.fmuser.org -> Indonesies
ga.fmuser.org -> Iers
it.fmuser.org -> Italiaanse
ja.fmuser.org -> Japannees
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Litaus
mk.fmuser.org -> Masedonies
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Noorse
fa.fmuser.org -> Persies
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russies
sr.fmuser.org -> Serwies
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Sloveens
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Sweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Oerdoe
vi.fmuser.org -> Viëtnamees
cy.fmuser.org -> Wallies
yi.fmuser.org -> Jiddisj
Voorwoord
H264-videokompressie-algoritme is nou ongetwyfeld die mees gebruikte en gewildste van alle videokompressietegnieke. Met die bekendstelling van open source-biblioteke soos x264 / openh264 en ffmpeg, hoef die meeste gebruikers nie meer te veel navorsing te doen oor die besonderhede van H264 nie, wat die koste van mense wat H264 gebruik aansienlik verlaag.
Maar om H264 goed te kan gebruik, moet ons steeds die basiese beginsels van H264 uitvind. Vandag gaan ons kyk na die basiese beginsels van H264.
H264 oorsig
H264-kompressietegnologie gebruik hoofsaaklik die volgende metodes om videodata saam te pers. insluit:
Kompressie binne die raamvoorspelling los die probleem van ruimtelike data-oorbodigheid op.
Inter-raam voorspelling kompressie (bewegingsberaming en vergoeding) los die probleem van tyd-domein data oortolligheid op.
Integer Discrete Cosine Transform (DCT), wat die ruimtelike korrelasie omskakel in irrelevante data in die frekwensiedomein en dit dan kwantifiseer.
CABAC-kompressie.
Die saamgeperste raam is verdeel in: I-raam, P-raam en B-raam:
Ek raam: sleutelraamwerk met behulp van intra-raam-kompressietegnologie.
P-raam: verwysingsraamwerk vorentoe, wanneer u saamdruk, verwys slegs na die voorheen verwerkte raamwerk. Gebruik raamklankompressietegnologie.
B-raam: 'n Tweerigtingverwysingsraamwerk. Gedurende kompressie verwys dit na die vorige raam en die volgende raam. Gebruik interraam-kompressietegnologie.
Benewens I / P / B-rame, is daar ook GOP-reeks.
GOP: Tussen twee I-rame is 'n beeldvolgorde, en daar is slegs een wat ek in 'n beeldvolgorde raam. Soos hieronder getoon:
Nou sal ons die H264-kompressietegnologie breedvoerig beskryf.
H264 kompressietegnologie
Die basiese beginsel van H264 is eintlik baie eenvoudig. Kom ons beskryf kortliks die proses van H264-komprimering van data. Die videorame wat deur die kamera vasgelê is (bereken teen 30 rame per sekonde) word na die buffer van die H264-kodeerder gestuur. Die kodeerder moet eers makroblokke vir elke prent verdeel.
Neem die volgende foto as voorbeeld:
Partisie makroblok
H264 gebruik standaard 'n 16X16-gebied as 'n makroblok, en dit kan ook in 8X8-grootte verdeel word.
Nadat u die makroblok verdeel het, bereken die pixelwaarde van die makroblok.
Analoog word die pixelwaarde van elke macroblock in 'n beeld bereken, en al die macroblocks word soos volg verwerk.
Onderblok
H264 gebruik 16X16 makroblokke vir relatief plat beelde. Om 'n hoër kompressiesnelheid te bereik, kan kleiner subblokke egter ook in 16X16 makroblokke verdeel word. Die grootte van die subblok kan 8X16, 16X8, 8X8, 4X8, 8X4, 4X4 wees, wat baie buigsaam is.
In die bostaande prentjie het die meeste van die 16X16 makroblokke in die rooi raam 'n blou agtergrond, en 'n deel van die drie arende word in hierdie makroblok geteken. Om die gedeeltelike beelde van die drie arende beter te verwerk, word H264 veelvuldige subblokke verdeel in 16X16 makroblokke.
Sodoende kan doeltreffender data na intra-raam-kompressie verkry word. Die onderstaande figuur is die resultaat van die saampersing van bogenoemde makroblokke met onderskeidelik mpeg-2 en H264. Die linker helfte is die resultaat van kompressie na MPEG-2 subblokverdeling, en die regterhelfte is die resultaat van H264 subblokkompressie. Daar kan gesien word dat die H264-delingsmetode meer voordele het.
Nadat die makroblok verdeel is, kan al die foto's in die H264-kodeerderbuffer gegroepeer word.
Raamgroepering
Vir videodata bestaan daar hoofsaaklik twee soorte data-oortolligheid, die een is data-oortolligheid in tyd en die ander is data-oortolligheid in die ruimte. Onder hulle is die data-oortolligheid in tyd die grootste. Kom ons bespreek eers die oorbodigheidsprobleem van videodatatyd.
Waarom is die tydoortolligheid die grootste? As ons aanneem dat die kamera 30 rame per sekonde vang, hou die data van hierdie 30 rame meestal verband. Dit is ook moontlik dat meer as 30 rame data, tien rame of honderde rame data besonder nou verwant is.
Vir hierdie baie nou verwante rame hoef ons eintlik net een raam met data te stoor, en ander rame kan volgens sekere reëls vanuit hierdie raam voorspel word, dus die videodata het die meeste tydoorskot.
Om te bereik dat die betrokke rame data deur middel van die voorspellingsmetode komprimeer, is dit nodig om die videorame te groepeer. Hoe kan jy dus vasstel dat sekere raamwerke nou verwant is en saam gegroepeer kan word? Kom ons kyk na 'n voorbeeld. Hieronder is 'n vasgestelde videoraam van 'n groep biljartballe in beweging. Die biljartballe rol van die regter boonste hoek na die onderste linkerhoek.
Die H264-kodeerder neem elke keer twee aangrensende rame uit om die makroblokke te vergelyk om die ooreenkoms tussen die twee rame te bereken. Soos hieronder getoon:
Deur die makroblokskandering en die makrobloksoektog kan gevind word dat die korrelasie tussen die twee rame baie hoog is. Verder word bevind dat die korrelasiegraad van hierdie groep rame baie hoog is. Daarom kan bogenoemde rame in een groep verdeel word. Die algoritme is: in die aangrensende beelde is die pixels wat oor die algemeen verskillend is slegs binne 10%, die helderheidsverskil nie meer as 2% nie, en die chromatisiteitsverskil verander slegs binne 1%. Ons dink dit Die grafieke kan saamgegroepeer word.
In so 'n groep rame, na die kodering, behou ons slegs die volledige data van die eerste boodskap, en ander rame word bereken deur na die vorige raam te verwys. Ons noem die eerste raam IDR / I-raam, en ander rame noem ons P / B-raam, so ons noem die gekodeerde dataraamgroep GOP.
Bewegingsberaming en vergoeding
Nadat die rame in die H264-kodeerder gegroepeer is, is dit nodig om die bewegingsvektore van die voorwerpe in die raamgroep te bereken. Neem die bogenoemde bewegende biljartvideo-raam as voorbeeld, laat ons kyk hoe dit die bewegingsvektor bereken.
Die H264-kodeerder haal eers twee rame videodata uit die bufferopskrif in volgorde uit en voer dan makroblokskandering uit. Wanneer 'n voorwerp in een van die prente gevind word, word die soektog in die omgewing van die ander prentjie (in die soekvenster) uitgevoer. As die voorwerp op hierdie tydstip in 'n ander beeld gevind word, kan die bewegingsvektor van die voorwerp bereken word. Die volgende foto toon die posisie van die biljartbal na soek.
Deur die verskil tussen die posisies van die biljartballe in die bostaande prentjie, kan die rigting en afstand van die tafelfoto bereken word. H264 teken die afstand en rigting van die balbeweging in elke raam om die beurt aan, en dit word die volgende.
Nadat die bewegingsvektor bereken is, word dieselfde deel (dit wil sê die groen deel) afgetrek om die vergoedingsdata te verkry. Uiteindelik hoef ons slegs die vergoedingsdata te komprimeer en te stoor, en dan kan die oorspronklike beeld herstel word wanneer u dit dekodeer. Die saamgeperste data hoef slegs 'n klein hoeveelheid data op te neem. Soos volg:
Ons noem bewegingsvektor en kompensasie as interraam-kompressietegnologie, wat die data-oortolligheid van videorame betyds oplos. Benewens kompressie tussen raamwerk, moet datakompressie ook binne die raamwerk gedoen word. Intra-raam datakompressie los ruimtelike data oortolligheid op. Nou sal ons die intra-raam-kompressietegnologie bekendstel.
Intra voorspelling
Die menslike oog het 'n mate van herkenning van die beeld, dit is baie sensitief vir die helderheid van lae frekwensie en is nie baie sensitief vir die helderheid van hoë frekwensie nie. Daarom kan gegewens wat nie sensitief is vir menslike oë nie, gebaseer word op navorsing, uit 'n beeld verwyder word. Op hierdie manier word die intra-voorspellingstegnologie voorgestel.
Die intra-raam-kompressie van H264 stem baie ooreen met JPEG. Nadat 'n beeld in makroblokke verdeel is, kan elke makroblok in 9 modusse voorspel word. Soek die voorspellingsmodus wat die naaste aan die oorspronklike prent is.
Die volgende prentjie is die proses om elke makroblok in die hele prentjie te voorspel.
Die vergelyking tussen die beeld na intra-voorspelling en die oorspronklike beeld is as volg:
Dan word die oorspronklike beeld en die intra-voorspelde beeld afgetrek om 'n restwaarde te verkry.
Stoor dan die voorspellingsmodus wat ons voorheen gekry het, sodat ons die oorspronklike beeld kan herstel wanneer ons dekodeer. Die effek is soos volg:
Alhoewel die data aansienlik verminder word na intra-raam- en interraam-kompressie, is daar nog ruimte vir optimalisering.
Doen DCT op oorblywende data
Die oorblywende data kan onderwerp word aan 'n heelgetal diskrete kosinus-transformasie om die korrelasie van die data te verwyder en die data verder saam te pers. Soos in die onderstaande figuur getoon, is die linkerkant die makroblok van die oorspronklike data, en die regterkant is die makroblok van die berekende oorblywende data.
Die makroblok van oorblywende data word gedigitaliseer soos in die onderstaande figuur getoon:
DCT-omskakeling word op die residuele datamakroblok uitgevoer.
Nadat die geassosieerde data verwyder is, kan ons sien dat die data verder saamgepers word.
Nadat DCT klaar is, is dit nie genoeg nie en is CABAC nodig vir verlieslose kompressie.
CABAC
Bogenoemde intra-raam-kompressie is 'n verlies-kompressietegniek. Met ander woorde, nadat die beeld saamgepers is, kan dit nie heeltemal herstel word nie. CABAC is 'n verlieslose kompressietegnologie.
Verlieslose kompressietegnologie is miskien die bekendste vir almal: Huffman-kodering, 'n kort kode vir hoëfrekwensie-woorde, 'n lang kode vir lae-frekwensie-woorde om die doel van datakompressie te bereik. VLC wat in MPEG-2 gebruik word, is hierdie soort algoritme; ons neem AZ as voorbeeld, A behoort tot hoë frekwensie data, en Z behoort tot lae frekwensie data. Kyk hoe dit gedoen word.
CABAC is ook 'n kort kode vir hoëfrekwensie-data en 'n lang kode vir lae-frekwensie-data. Terselfdertyd sal dit komprimeer op grond van konteks, wat baie doeltreffender is as VLC. Die effek is soos volg:
Vervang AZ nou deur 'n videoraam, en dit sal soos volg lyk.
Dit blyk uit die bostaande prentjie dat die verlieslose kompressieskema wat CACBA gebruik, baie doeltreffender is as VLC.
opsomming
Op hierdie stadium het ons die H264-koderingsbeginsel voltooi. Hierdie artikel praat hoofsaaklik oor die volgende punte:
1. Jianyin het 'n paar basiese konsepte in H264 bekendgestel. Soos I / P / B-raam, GOP.
2. Die basiese beginsels van H264-kodering breedvoerig uiteengesit, insluitend:
Makroblokverdeling
Beeldgroepering
Intra-raam kompressietegnologie beginsel
Die beginsel van interraam-kompressietegnologie.
DCT
CABAC-kompressiebeginsel.
|
Voer e-posadres in om 'n verrassing te kry
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabies
hy.fmuser.org -> Armeens
az.fmuser.org -> Azerbeidjans
eu.fmuser.org -> Baskies
be.fmuser.org -> Belo-Russies
bg.fmuser.org -> Bulgaars
ca.fmuser.org -> Katalaans
zh-CN.fmuser.org -> Chinees (vereenvoudig)
zh-TW.fmuser.org -> Sjinees (Tradisioneel)
hr.fmuser.org -> Kroaties
cs.fmuser.org -> Tsjeggies
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlandse
et.fmuser.org -> Esties
tl.fmuser.org -> Filippyns
fi.fmuser.org -> Fins
fr.fmuser.org -> Franse
gl.fmuser.org -> Galisies
ka.fmuser.org -> Georgies
de.fmuser.org -> Duits
el.fmuser.org -> Grieks
ht.fmuser.org -> Haïtiaanse kreool
iw.fmuser.org -> Hebreeus
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Yslands
id.fmuser.org -> Indonesies
ga.fmuser.org -> Iers
it.fmuser.org -> Italiaanse
ja.fmuser.org -> Japannees
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Litaus
mk.fmuser.org -> Masedonies
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Noorse
fa.fmuser.org -> Persies
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russies
sr.fmuser.org -> Serwies
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Sloveens
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Sweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Oerdoe
vi.fmuser.org -> Viëtnamees
cy.fmuser.org -> Wallies
yi.fmuser.org -> Jiddisj
FMUSER Wirless stuur video en klank makliker toe!
Kontak Ons
adres:
No.305 Kamer HuiLan-gebou No.273 Huanpu-weg Guangzhou China 510620
kategorieë
Nuusbrief