FMUSER Bezdrôtové vysielanie videa a zvuku je jednoduchšie!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánčina
sq.fmuser.org -> albánsky
ar.fmuser.org -> arabčina
hy.fmuser.org -> Arménsky
az.fmuser.org -> azerbajdžanský
eu.fmuser.org -> baskičtina
be.fmuser.org -> bieloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> katalánčina
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> čínština (tradičná)
hr.fmuser.org -> chorvátčina
cs.fmuser.org -> čeština
da.fmuser.org -> dánčina
nl.fmuser.org -> Dutch
et.fmuser.org -> estónčina
tl.fmuser.org -> filipínsky
fi.fmuser.org -> fínčina
fr.fmuser.org -> French
gl.fmuser.org -> galícijčina
ka.fmuser.org -> gruzínsky
de.fmuser.org -> nemčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolčina
iw.fmuser.org -> hebrejčina
hi.fmuser.org -> hindčina
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandský
id.fmuser.org -> indonézština
ga.fmuser.org -> írsky
it.fmuser.org -> Italian
ja.fmuser.org -> japončina
ko.fmuser.org -> kórejčina
lv.fmuser.org -> lotyšský
lt.fmuser.org -> litovčina
mk.fmuser.org -> macedónsky
ms.fmuser.org -> malajčina
mt.fmuser.org -> maltčina
no.fmuser.org -> Norwegian
fa.fmuser.org -> perzský
pl.fmuser.org -> poľština
pt.fmuser.org -> portugalčina
ro.fmuser.org -> rumunčina
ru.fmuser.org -> ruština
sr.fmuser.org -> srbčina
sk.fmuser.org -> slovenčina
sl.fmuser.org -> slovinčina
es.fmuser.org -> španielčina
sw.fmuser.org -> svahilčina
sv.fmuser.org -> švédčina
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinčina
ur.fmuser.org -> urdčina
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> waleština
yi.fmuser.org -> jidiš
Pred pár dňami som strávil nejaký čas štúdiom technológie HTTP live streaming (HLS) a implementáciou kodéra HLS, hlsliveencoder, napísaného v jazyku C + +. Jeho funkciou je snímanie kamery a mikrofónu, kódovanie videa H.264 v reálnom čase a kódovanie zvuku aac a podľa špecifikácie protokolu HLS generovanie segmentovaného štandardného súboru TS a indexového súboru m3u8. Prostredníctvom môjho hlsliveencoder a HTTP servera tretej strany (napríklad nginx) sme úspešne realizovali živé vysielanie HTTP a prešli testom na iPhone. Niektoré zisky sem napíšem.
1. Analýza technológie HLS
Živé vysielanie HTTP (HLS) je protokol prenosu mediálnych údajov založený na protokole HTTP implementovaný spoločnosťou Apple Inc., ktorý umožňuje realizovať živé prenosy a médiá na požiadanie. Používa sa hlavne v systéme IOS na poskytovanie zvukových a obrazových riešení naživo a na požiadanie pre zariadenia IOS (napríklad iPhone a iPad). HLS na požiadanie je v zásade bežný segmentovaný protokol HTTP na požiadanie. Rozdiel je v tom, že jeho segmenty sú veľmi malé. Kľúčom k realizácii HLS na požiadanie je segmentácia mediálnych súborov. V súčasnosti existuje veľa nástrojov otvoreného zdroja, ktoré je možné použiť. Nebudem to tu rozoberať, iba hovoriť o technológii živého vysielania HLS.
V porovnaní s bežnými protokolmi živého vysielania, ako sú protokol RTMP, protokol RTSP, protokol MMS a tak ďalej, je najväčším rozdielom živého vysielania HLS ten, že živý klient nedostane úplný dátový tok. Protokol HLS ukladá živý dátový tok ako nepretržité, krátkodobé a dlhé mediálne súbory (formát mpeg-ts) na strane servera, zatiaľ čo strana klienta tieto malé súbory nepretržite sťahuje a prehráva, pretože strana servera vždy generuje nové malé súbory z najnovšie živé dáta, takže strane klienta na spustenie živého vysielania stačí prehrať súbory získané zo servera. Je vidieť, že HLS v podstate realizuje živé vysielanie pomocou technológie VOD. Pretože sa údaje prenášajú prostredníctvom protokolu HTTP, nie je potrebné brať do úvahy problém brány firewall alebo servera proxy a čas segmentácie súborov je veľmi krátky. Klient môže rýchlo zvoliť a prepnúť rýchlosť kódovania, aby sa prispôsobil prehrávaniu pri rôznych podmienkach šírky pásma. Avšak vzhľadom na technické vlastnosti HLS je jeho oneskorenie vždy väčšie ako oneskorenie bežného protokolu živého vysielania.
Podľa vyššie uvedeného chápania na to, aby sme dosiahli živé vysielanie HTTP naživo, musíme študovať a implementovať nasledujúce kľúčové technológie.
(1) Zhromažďujte údaje zdroja videa a zvuku
(2) Originálne údaje sú kódované kódmi H264 a AAC
(3) Video a audio dáta sú zabalené ako pakety mpeg-ts
(4) Stratégia generovania segmentácie HLS a indexový súbor m3u8
2. HTTP transportný protokol
Medzi nimi bol prvý a druhý bod spomenutý v mojom predchádzajúcom článku a posledným bodom je, že môžeme použiť existujúci server HTTP, takže implementácia tretieho a štvrtého bodu je kľúčová.
(1) Rámec programu a implementácia
Prostredníctvom vyššie uvedenej analýzy je logika a proces živého kódovacieho zariadenia HLS v zásade jasný: spustite kódovacie vlákno zvuku a videa, vykonajte akvizíciu zvuku a videa pomocou technológie DirectShow (alebo inej) a potom zavolajte libx264 a libfaac pre video a zvukové kódovanie. Potom, čo dve kódovacie vlákna zakódujú zvukové a obrazové údaje v reálnom čase, uložia ich do segmentového súboru vo formáte mpeg-ts podľa prispôsobenej stratégie oddielov. Keď je uložený súbor segmentu, aktualizuje sa indexový súbor m3u8. Ako je znázornené na obrázku nižšie:
Na obrázku vyššie po prijatí obrazových a zvukových údajov musí server hlsliveencoder najskôr určiť, či má aktuálny oddiel skončiť, a vytvoriť nový oddiel, aby mohol pokračovať v nepretržitom generovaní oddielu TS. Je potrebné poznamenať, že nová fragmentácia by mala vychádzať z kľúčového rámca, aby sa zabránilo zlyhaniu prehrávača. Základný kód je nasledovný:
Rozhranie programu tsmuxer je tiež pomerne jednoduché.
(2) Stratégia generovania segmentov HLS a m3u8
① Segmentačná stratégia
Segmentačná stratégia HLS sa v zásade odporúča rozdeliť každých 10 sekúnd. Konkrétny čas by sa mal samozrejme označiť podľa skutočnej dĺžky rozdelenia
Všeobecne povedané, z dôvodu medzipamäte a iných dôvodov sa posledné tri adresy fragmentov uchovávajú v indexovom súbore a aktualizujú sa vo forme „posuvného okna“.
② Predstavenie súboru m3u8
M3u8 je indexový súbor živého vysielania HTTP. M3u8 možno považovať za. Súbor vo formáte M3U je v podstate rozdiel v tom, že súbor m3u8 používa kódovanie znakov UTF-8.
Skopírujte kód
# Hlavička súboru Extm3u M3U, musí byť umiestnená v prvom riadku
# Sériové číslo prvého segmentu TS sekvencie ext-x-media
# Ext-x-targetduration maximálne trvanie každého segmentu TS
# Umožňuje ext-x-allow-cache vyrovnávaciu pamäť
# Koniec súboru ext-x-endlist m3u8
#Extinf extra informácie, informácie o rozdelených údajoch, ako sú trvanie, šírka pásma atď
|
Zadajte e-mail, aby ste dostali prekvapenie
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánčina
sq.fmuser.org -> albánsky
ar.fmuser.org -> arabčina
hy.fmuser.org -> Arménsky
az.fmuser.org -> azerbajdžanský
eu.fmuser.org -> baskičtina
be.fmuser.org -> bieloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> katalánčina
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> čínština (tradičná)
hr.fmuser.org -> chorvátčina
cs.fmuser.org -> čeština
da.fmuser.org -> dánčina
nl.fmuser.org -> Dutch
et.fmuser.org -> estónčina
tl.fmuser.org -> filipínsky
fi.fmuser.org -> fínčina
fr.fmuser.org -> French
gl.fmuser.org -> galícijčina
ka.fmuser.org -> gruzínsky
de.fmuser.org -> nemčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolčina
iw.fmuser.org -> hebrejčina
hi.fmuser.org -> hindčina
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandský
id.fmuser.org -> indonézština
ga.fmuser.org -> írsky
it.fmuser.org -> Italian
ja.fmuser.org -> japončina
ko.fmuser.org -> kórejčina
lv.fmuser.org -> lotyšský
lt.fmuser.org -> litovčina
mk.fmuser.org -> macedónsky
ms.fmuser.org -> malajčina
mt.fmuser.org -> maltčina
no.fmuser.org -> Norwegian
fa.fmuser.org -> perzský
pl.fmuser.org -> poľština
pt.fmuser.org -> portugalčina
ro.fmuser.org -> rumunčina
ru.fmuser.org -> ruština
sr.fmuser.org -> srbčina
sk.fmuser.org -> slovenčina
sl.fmuser.org -> slovinčina
es.fmuser.org -> španielčina
sw.fmuser.org -> svahilčina
sv.fmuser.org -> švédčina
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinčina
ur.fmuser.org -> urdčina
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> waleština
yi.fmuser.org -> jidiš
FMUSER Bezdrôtové vysielanie videa a zvuku je jednoduchšie!
Kontakt
adresa:
Budova č. 305 Izba HuiLan č. 273 Huanpu Road Kanton Čína 510620
Kategórie
Prihlás sa na odber Newslettra