FMUSER Wirless överför video och ljud enklare!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanska
sq.fmuser.org -> albanska
ar.fmuser.org -> arabiska
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbajdzjanska
eu.fmuser.org -> Baskiska
be.fmuser.org -> vitryska
bg.fmuser.org -> Bulgariska
ca.fmuser.org -> katalanska
zh-CN.fmuser.org -> Kinesiska (förenklad)
zh-TW.fmuser.org -> Kinesiska (traditionella)
hr.fmuser.org -> kroatiska
cs.fmuser.org -> Tjeckiska
da.fmuser.org -> danska
nl.fmuser.org -> Dutch
et.fmuser.org -> estniska
tl.fmuser.org -> filippinska
fi.fmuser.org -> finska
fr.fmuser.org -> French
gl.fmuser.org -> galiciska
ka.fmuser.org -> Georgiska
de.fmuser.org -> tyska
el.fmuser.org -> Greek
ht.fmuser.org -> Haitisk kreol
iw.fmuser.org -> hebreiska
hi.fmuser.org -> Hindi
hu.fmuser.org -> ungerska
is.fmuser.org -> isländska
id.fmuser.org -> Indonesiska
ga.fmuser.org -> Irländska
it.fmuser.org -> Italian
ja.fmuser.org -> japanska
ko.fmuser.org -> koreanska
lv.fmuser.org -> lettiska
lt.fmuser.org -> Litauiska
mk.fmuser.org -> makedonska
ms.fmuser.org -> Malajiska
mt.fmuser.org -> maltesiska
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiska
pl.fmuser.org -> polska
pt.fmuser.org -> portugisiska
ro.fmuser.org -> rumänska
ru.fmuser.org -> ryska
sr.fmuser.org -> serbiska
sk.fmuser.org -> Slovakiska
sl.fmuser.org -> Slovenska
es.fmuser.org -> spanska
sw.fmuser.org -> Swahili
sv.fmuser.org -> svenska
th.fmuser.org -> Thai
tr.fmuser.org -> Turkiska
uk.fmuser.org -> ukrainska
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamesiskt
cy.fmuser.org -> Walesiska
yi.fmuser.org -> Jiddisch
För några dagar sedan tillbringade jag lite tid på att studera HTTP live streaming (HLS) -teknologi och implementera en HLS-kodare, hlsliveencoder, skriven i C + +. Dess funktion är att fånga kameran och mikrofonen, realtid H.264-videokodning och aac-ljudkodning, och enligt HLS-protokollspecifikationen generera segmenterad standard TS-fil och m3u8-indexfil. Genom min hlsliveencoder och HTTP-server från tredje part (som nginx) insåg vi framgångsrikt livestreaming av HTTP och klarat testet på iPhone. Jag kommer att skriva några av vinsterna här.
1. Analys av HLS-teknik
HTTP-livestreaming (HLS) är ett transportmedietransportprotokoll baserat på HTTP implementerat av Apple Inc., som kan realisera direkt- och on-demand-streamingmedier. Den används främst i IOS-system för att tillhandahålla live- och on-demand-lösningar för ljud och video för IOS-enheter (som iPhone och iPad). HLS on demand är i grunden en vanlig segmenterad HTTP on demand. Skillnaden är att dess segment är mycket små. För att förverkliga HLS på begäran är nyckeln att segmentera mediefiler. För närvarande finns det många open source-verktyg som kan användas. Jag kommer inte att diskutera det här, bara prata om HLS live-sändningsteknik.
Jämfört med vanliga protokoll för livestreaming, såsom RTMP-protokoll, RTSP-protokoll, MMS-protokoll och så vidare, är den största skillnaden mellan HLS-livestreaming att live-klienten inte får en fullständig dataström. HLS-protokollet lagrar live dataströmmen som kontinuerliga, kortvariga och långa mediefiler (mpeg-ts-format) på serversidan, medan klientsidan kontinuerligt laddar ner och spelar upp dessa små filer, eftersom serversidan alltid genererar nya små filer från de senaste liveuppgifterna, så att klientsidan bara behöver spela upp de filer som erhållits från servern för att förverkliga live. Det kan ses att HLS i princip realiserar live-sändningar med hjälp av VOD-teknik. Eftersom data överförs via HTTP-protokoll behöver du inte överväga problemet med brandvägg eller proxy, och tiden för att segmentera filer är mycket kort. Klienten kan snabbt välja och växla kodhastighet för att anpassa sig till uppspelningen under olika bandbreddförhållanden. Men på grund av de tekniska egenskaperna hos HLS är dess fördröjning alltid högre än för vanligt livestreamingsprotokoll.
Enligt ovanstående förståelse, för att uppnå HTTP-livestreaming live, måste vi studera och implementera följande viktiga tekniker.
(1) Samla in data från videokälla och ljudkälla
(2) Originaldata kodas av H264 och AAC
(3) Video- och ljuddata förpackas som mpeg-ts-paket
(4) Strategi för HLS-segmenteringsgenerering och m3u8-indexfil
2. HTTP-transportprotokoll
Bland dem har de första och andra punkterna nämnts i min tidigare artikel, och den sista punkten är att vi kan använda den befintliga HTTP-servern, så implementeringen av den tredje och fjärde punkten är nyckeln.
(1) Programram och genomförande
Genom ovanstående analys är logiken och processen med HLS live-kodare i princip tydlig: starta ljud- och videokodningstråden, realisera ljud- och videoförvärvet genom DirectShow (eller annan) teknik och ring sedan libx264 respektive libfaac för video och ljudkodning. Efter att de två kodande trådarna kodar ljud- och videodata i realtid lagrar de den i en segmentfil i mpeg-ts-format enligt den anpassade partitionsstrategin. När en segmentfil lagras uppdateras m3u8-indexfilen. Som visas i figuren nedan:
I figuren ovan, efter att ha mottagit video- och ljuddata, måste hlsliveencoder först avgöra om den aktuella partitionen ska avslutas och skapa en ny partition för att fortsätta den kontinuerliga generationen av TS-partition. Det bör noteras att den nya fragmenteringen bör börja från nyckelramen för att förhindra att spelaren avkodar fel. Kärnkoden är som följer:
Gränssnittet för tsmuxer är också relativt enkelt.
(2) HLS-segmentgenereringsstrategi och m3u8
① Segmenteringsstrategi
Segmenteringsstrategin för HLS rekommenderas i grunden att delas var 10: e sekund. Naturligtvis bör den specifika tiden markeras enligt delningens faktiska längd
Generellt sett hålls de senaste tre fragmentadresserna i indexfilen och uppdateras i form av "skjutfönster" för cacheminnet och andra orsaker.
② Introduktion av m3u8-filen
M3u8 är indexfilen för HTTP-livestreaming. M3u8 kan betraktas som. M3U-formatfilen i grund och botten är skillnaden att m3u8-filen använder UTF-8-teckenkodning.
Kopiera kod
# Extm3u M3U-filrubrik, måste placeras i första raden
# Serienummer för det första TS-segmentet i ext-x-media-sekvensen
# Ext-x-targetduration den maximala varaktigheten för varje TS-segment
# Tillåter ext-x-allow-cache cache
#Slut på ext-x-endlist m3u8-fil
#Extinf extra info, information om split ts, såsom varaktighet, bandbredd, etc.
|
Ange e-post för att få en överraskning
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanska
sq.fmuser.org -> albanska
ar.fmuser.org -> arabiska
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbajdzjanska
eu.fmuser.org -> Baskiska
be.fmuser.org -> vitryska
bg.fmuser.org -> Bulgariska
ca.fmuser.org -> katalanska
zh-CN.fmuser.org -> Kinesiska (förenklad)
zh-TW.fmuser.org -> Kinesiska (traditionella)
hr.fmuser.org -> kroatiska
cs.fmuser.org -> Tjeckiska
da.fmuser.org -> danska
nl.fmuser.org -> Dutch
et.fmuser.org -> estniska
tl.fmuser.org -> filippinska
fi.fmuser.org -> finska
fr.fmuser.org -> French
gl.fmuser.org -> galiciska
ka.fmuser.org -> Georgiska
de.fmuser.org -> tyska
el.fmuser.org -> Greek
ht.fmuser.org -> Haitisk kreol
iw.fmuser.org -> hebreiska
hi.fmuser.org -> Hindi
hu.fmuser.org -> ungerska
is.fmuser.org -> isländska
id.fmuser.org -> Indonesiska
ga.fmuser.org -> Irländska
it.fmuser.org -> Italian
ja.fmuser.org -> japanska
ko.fmuser.org -> koreanska
lv.fmuser.org -> lettiska
lt.fmuser.org -> Litauiska
mk.fmuser.org -> makedonska
ms.fmuser.org -> Malajiska
mt.fmuser.org -> maltesiska
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiska
pl.fmuser.org -> polska
pt.fmuser.org -> portugisiska
ro.fmuser.org -> rumänska
ru.fmuser.org -> ryska
sr.fmuser.org -> serbiska
sk.fmuser.org -> Slovakiska
sl.fmuser.org -> Slovenska
es.fmuser.org -> spanska
sw.fmuser.org -> Swahili
sv.fmuser.org -> svenska
th.fmuser.org -> Thai
tr.fmuser.org -> Turkiska
uk.fmuser.org -> ukrainska
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamesiskt
cy.fmuser.org -> Walesiska
yi.fmuser.org -> Jiddisch
FMUSER Wirless överför video och ljud enklare!
Kontakta oss
Adress:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Kina 510620
Kategorier
Nyhetsbrev