FMUSER Wirless Overfør video og lyd enklere!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albansk
ar.fmuser.org -> arabisk
hy.fmuser.org -> armensk
az.fmuser.org -> aserbajdsjansk
eu.fmuser.org -> baskisk
be.fmuser.org -> hviterussisk
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> katalansk
zh-CN.fmuser.org -> Kinesisk (forenklet)
zh-TW.fmuser.org -> Kinesisk (tradisjonell)
hr.fmuser.org -> Kroatisk
cs.fmuser.org -> tsjekkisk
da.fmuser.org -> dansk
nl.fmuser.org -> Nederlandsk
et.fmuser.org -> estisk
tl.fmuser.org -> filippinsk
fi.fmuser.org -> finsk
fr.fmuser.org -> French
gl.fmuser.org -> galisisk
ka.fmuser.org -> Georgisk
de.fmuser.org -> tysk
el.fmuser.org -> gresk
ht.fmuser.org -> haitisk kreolsk
iw.fmuser.org -> hebraisk
hi.fmuser.org -> hindi
hu.fmuser.org -> Ungarsk
is.fmuser.org -> islandsk
id.fmuser.org -> indonesisk
ga.fmuser.org -> Irsk
it.fmuser.org -> Italiensk
ja.fmuser.org -> japansk
ko.fmuser.org -> koreansk
lv.fmuser.org -> lettisk
lt.fmuser.org -> litauisk
mk.fmuser.org -> makedonsk
ms.fmuser.org -> malaysisk
mt.fmuser.org -> maltesisk
no.fmuser.org -> norsk
fa.fmuser.org -> persisk
pl.fmuser.org -> polsk
pt.fmuser.org -> portugisisk
ro.fmuser.org -> rumensk
ru.fmuser.org -> russisk
sr.fmuser.org -> serbisk
sk.fmuser.org -> Slovakisk
sl.fmuser.org -> Slovenian
es.fmuser.org -> spansk
sw.fmuser.org -> Swahili
sv.fmuser.org -> svensk
th.fmuser.org -> Thai
tr.fmuser.org -> tyrkisk
uk.fmuser.org -> ukrainsk
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnamesisk
cy.fmuser.org -> walisisk
yi.fmuser.org -> Yiddish
For noen dager siden brukte jeg litt tid på å studere HTTP live streaming (HLS) teknologi og implementere en HLS-koder, hlsliveencoder, skrevet i C + +. Dens funksjon er å fange kamera og mikrofon, sanntid H.264 videokoding og aac lydkoding, og i henhold til HLS-protokollspesifikasjonen, generere segmentert standard TS-fil og m3u8 indeksfil. Gjennom min hlsliveencoder og tredjeparts HTTP-server (som nginx), realiserte vi vellykket live streaming av HTTP og besto testen på iPhone. Jeg vil skrive noen av gevinstene her.
1. Analyse av HLS-teknologi
HTTP live streaming (HLS) er en transportmedie transportprotokoll basert på HTTP implementert av Apple Inc., som kan realisere live og on-demand streaming media. Den brukes hovedsakelig i IOS-systemet for å tilby live og on-demand-løsninger for lyd og video for IOS-enheter (som iPhone og iPad). HLS on demand er i utgangspunktet en vanlig segmentert HTTP on demand. Forskjellen er at segmentene er veldig små. For å realisere HLS på forespørsel, er nøkkelen å segmentere mediefiler. For tiden er det mange open source-verktøy som kan brukes. Jeg vil ikke diskutere det her, bare snakke om HLS direktesendingsteknologi.
Sammenlignet med vanlige live streaming-protokoller, for eksempel RTMP-protokoll, RTSP-protokoll, MMS-protokoll og så videre, er den største forskjellen i HLS live streaming at live-klienten ikke får en fullstendig datastrøm. HLS-protokoll lagrer live datastrøm som kontinuerlige, kortsiktige og lange mediefiler (mpeg-ts-format) på serversiden, mens klientsiden kontinuerlig laster ned og spiller av disse små filene, fordi serversiden alltid genererer nye små filer fra de siste live dataene, slik at klientsiden bare trenger å spille av filene som er hentet fra serveren for å realisere live. Det kan sees at HLS i utgangspunktet realiserer direktesending ved hjelp av VOD-teknologi. Fordi dataene overføres gjennom HTTP-protokoll, er det ikke nødvendig å vurdere problemet med brannmur eller proxy, og tiden for segmentering av filer er veldig kort. Klienten kan raskt velge og bytte kodehastighet for å tilpasse seg avspillingen under forskjellige båndbreddeforhold. På grunn av de tekniske egenskapene til HLS er forsinkelsen imidlertid alltid høyere enn for vanlig live streaming-protokoll.
I henhold til ovenstående forståelse, for å oppnå HTTP live streaming live, må vi studere og implementere følgende viktige teknologier.
(1) Samle inn data fra videokilde og lydkilde
(2) Originaldataene er kodet av H264 og AAC
(3) Video- og lyddata er pakket som mpeg-ts-pakker
(4) Strategi for generering av HLS-segmentering og m3u8-indeksfil
2. HTTP transportprotokoll
Blant dem har det første og andre punktet blitt nevnt i min forrige artikkel, og det siste punktet er at vi kan bruke den eksisterende HTTP-serveren, så implementeringen av det tredje og fjerde punktet er nøkkelen.
(1) Programramme og gjennomføring
Gjennom den ovennevnte analysen er logikken og prosessen til HLS live-koderen i utgangspunktet klar: start henholdsvis lyd- og videokodingstråden, realiser lyd- og videooppkjøpet gjennom DirectShow (eller annen) teknologi, og ring deretter henholdsvis libx264 og libfaac for video og lydkoding. Etter at de to kodetrådene har kodet lyd- og videodataene i sanntid, lagrer de den i en segmentfil i mpeg-ts-format i henhold til den tilpassede partisjonsstrategien. Når en segmentfil er lagret, oppdateres indeksfilen m3u8. Som vist i figuren nedenfor:
Etter å ha mottatt video- og lyddata i figuren over, må hlsliveencoder først bestemme om den nåværende partisjonen skal avsluttes, og opprette en ny partisjon for å fortsette den kontinuerlige generasjonen av TS-partisjonen. Det skal bemerkes at den nye fragmenteringen skal starte fra nøkkelrammen for å forhindre at spilleren dekoder feil. Kjernekoden er som følger:
Grensesnittet til tsmuxer er også relativt enkelt.
(2) HLS-segmentgenereringsstrategi og m3u8
① Segmenteringsstrategi
Segmenteringsstrategien til HLS anbefales i utgangspunktet å dele hvert 10. sekund. Selvfølgelig bør den spesifikke tiden merkes i henhold til den faktiske lengden på splittelsen
Generelt sett holdes de siste tre fragmentadressene av hensyn til cache og andre grunner i indeksfilen og oppdateres i form av "skyvevindu".
② Introduksjon av m3u8-filen
M3u8 er indeksfilen til HTTP live streaming. M3u8 kan betraktes som. M3U-formatfil er i utgangspunktet forskjellen at m3u8-filen bruker UTF-8-tegnkoding.
Kopier kode
# Extm3u M3U filoverskrift, må plasseres i første linje
# Serienummer for det første TS-segmentet i ext-x-media-sekvensen
# Ext-x-targetduration maksimal varighet for hvert TS-segment
# Tillater ext-x-allow-cache cache
#Slutt på m3u8-filen ext-x-endlist
#Extinf ekstra info, informasjon om split ts, som varighet, båndbredde osv
|
Skriv inn e-post for å få en overraskelse
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albansk
ar.fmuser.org -> arabisk
hy.fmuser.org -> armensk
az.fmuser.org -> aserbajdsjansk
eu.fmuser.org -> baskisk
be.fmuser.org -> hviterussisk
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> katalansk
zh-CN.fmuser.org -> Kinesisk (forenklet)
zh-TW.fmuser.org -> Kinesisk (tradisjonell)
hr.fmuser.org -> Kroatisk
cs.fmuser.org -> tsjekkisk
da.fmuser.org -> dansk
nl.fmuser.org -> Nederlandsk
et.fmuser.org -> estisk
tl.fmuser.org -> filippinsk
fi.fmuser.org -> finsk
fr.fmuser.org -> French
gl.fmuser.org -> galisisk
ka.fmuser.org -> Georgisk
de.fmuser.org -> tysk
el.fmuser.org -> gresk
ht.fmuser.org -> haitisk kreolsk
iw.fmuser.org -> hebraisk
hi.fmuser.org -> hindi
hu.fmuser.org -> Ungarsk
is.fmuser.org -> islandsk
id.fmuser.org -> indonesisk
ga.fmuser.org -> Irsk
it.fmuser.org -> Italiensk
ja.fmuser.org -> japansk
ko.fmuser.org -> koreansk
lv.fmuser.org -> lettisk
lt.fmuser.org -> litauisk
mk.fmuser.org -> makedonsk
ms.fmuser.org -> malaysisk
mt.fmuser.org -> maltesisk
no.fmuser.org -> norsk
fa.fmuser.org -> persisk
pl.fmuser.org -> polsk
pt.fmuser.org -> portugisisk
ro.fmuser.org -> rumensk
ru.fmuser.org -> russisk
sr.fmuser.org -> serbisk
sk.fmuser.org -> Slovakisk
sl.fmuser.org -> Slovenian
es.fmuser.org -> spansk
sw.fmuser.org -> Swahili
sv.fmuser.org -> svensk
th.fmuser.org -> Thai
tr.fmuser.org -> tyrkisk
uk.fmuser.org -> ukrainsk
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnamesisk
cy.fmuser.org -> walisisk
yi.fmuser.org -> Yiddish
FMUSER Wirless Overfør video og lyd enklere!
Kontakt
Adresse:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Kina 510620
Type kategori
Nyhetsbrev