FMUSER Bezdrátový přenos videa a zvuku snadnější!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánština
sq.fmuser.org -> albánština
ar.fmuser.org -> arabština
hy.fmuser.org -> Arménský
az.fmuser.org -> Ázerbájdžánština
eu.fmuser.org -> baskičtina
be.fmuser.org -> běloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalánština
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> Čínsky (zjednodušeně)
hr.fmuser.org -> chorvatština
cs.fmuser.org -> čeština
da.fmuser.org -> dánština
nl.fmuser.org -> Dutch
et.fmuser.org -> estonština
tl.fmuser.org -> filipínský
fi.fmuser.org -> finština
fr.fmuser.org -> French
gl.fmuser.org -> galicijština
ka.fmuser.org -> gruzínština
de.fmuser.org -> němčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolština
iw.fmuser.org -> hebrejština
hi.fmuser.org -> hindština
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandština
id.fmuser.org -> Indonéština
ga.fmuser.org -> Irština
it.fmuser.org -> Italian
ja.fmuser.org -> japonština
ko.fmuser.org -> korejština
lv.fmuser.org -> lotyština
lt.fmuser.org -> Litevština
mk.fmuser.org -> makedonština
ms.fmuser.org -> Malajština
mt.fmuser.org -> maltština
no.fmuser.org -> Norwegian
fa.fmuser.org -> perština
pl.fmuser.org -> polština
pt.fmuser.org -> portugalština
ro.fmuser.org -> Rumunština
ru.fmuser.org -> ruština
sr.fmuser.org -> srbština
sk.fmuser.org -> slovenština
sl.fmuser.org -> Slovinština
es.fmuser.org -> španělština
sw.fmuser.org -> svahilština
sv.fmuser.org -> švédština
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinština
ur.fmuser.org -> urdština
vi.fmuser.org -> Vietnamská
cy.fmuser.org -> velština
yi.fmuser.org -> Jidiš
Před několika dny jsem strávil nějaký čas studiem technologie HTTP live streaming (HLS) a implementací kodéru HLS, hlsliveencoder, napsaného v C + +. Jeho funkcí je zachytit kameru a mikrofon, kódování videa H.264 v reálném čase a kódování zvuku aac a podle specifikace protokolu HLS generovat segmentovaný standardní soubor TS a indexový soubor m3u8. Prostřednictvím mého hlsliveencoder a HTTP serveru třetí strany (například nginx) jsme úspěšně realizovali živé streamování HTTP a prošli testem na iPhone. Zde napíšu některé zisky.
1. Analýza technologie HLS
HTTP live streaming (HLS) je protokol pro přenos streamovacích médií založený na protokolu HTTP implementovaný společností Apple Inc., který umožňuje realizovat živá a streamovaná média na vyžádání. Používá se hlavně v systému IOS k poskytování audio a video živých a na vyžádání řešení pro zařízení IOS (například iPhone a iPad). HLS na vyžádání je v zásadě běžný segmentovaný HTTP na vyžádání. Rozdíl je v tom, že jeho segmenty jsou velmi malé. Klíčem k realizaci HLS na vyžádání je segmentace mediálních souborů. V současné době existuje mnoho open source nástrojů, které lze použít. Nebudu to zde rozebírat, jen mluvím o technologii živého vysílání HLS.
Ve srovnání s běžnými protokoly živého vysílání, jako je protokol RTMP, protokol RTSP, protokol MMS atd., Je největším rozdílem živého streamování HLS to, že živý klient nedostane kompletní datový proud. Protokol HLS ukládá živý datový proud jako spojité, krátkodobé a dlouhé mediální soubory (formát mpeg-ts) na straně serveru, zatímco strana klienta tyto malé soubory průběžně stahuje a přehrává, protože strana serveru vždy generuje nové malé soubory z nejnovější živá data, takže klientská strana potřebuje k provedení živého přehrávání pouze soubory získané ze serveru. Je vidět, že HLS v zásadě realizuje živé vysílání pomocí technologie VOD. Protože jsou data přenášena prostřednictvím protokolu HTTP, není třeba brát v úvahu problém brány firewall nebo serveru proxy a čas segmentace souborů je velmi krátký. Klient může rychle vybrat a přepnout rychlost kódování, aby se přizpůsobil přehrávání za různých podmínek šířky pásma. Kvůli technickým vlastnostem HLS je však jeho zpoždění vždy vyšší než u běžného protokolu živého přenosu.
Podle výše uvedeného porozumění, abychom dosáhli živého streamování HTTP živě, musíme studovat a implementovat následující klíčové technologie.
(1) Shromažďujte data zdroje videa a zdroje zvuku
(2) Původní data jsou kódována pomocí H264 a AAC
(3) Video a audio data jsou zabalena jako pakety mpeg-ts
(4) Strategie generování segmentace HLS a indexový soubor m3u8
2. Protokol přenosu HTTP
Mezi nimi byl první a druhý bod zmíněn v mém předchozím článku a posledním bodem je, že můžeme použít existující server HTTP, takže implementace třetího a čtvrtého bodu je klíčem.
(1) Rámec programu a jeho provádění
Prostřednictvím výše uvedené analýzy je logika a proces živého kodéru HLS v zásadě jasný: spusťte podproces kódování zvuku a videa, proveďte akvizici zvuku a videa pomocí technologie DirectShow (nebo jiné) a poté zavolejte libx264 a libfaac pro video a zvukové kódování. Poté, co dvě kódovací vlákna zakódují zvuková a obrazová data v reálném čase, uloží je do souboru segmentu ve formátu mpeg-ts podle vlastní strategie oddílů. Když je uložen soubor segmentu, aktualizuje se indexový soubor m3u8. Jak je znázorněno na obrázku níže:
Na výše uvedeném obrázku musí hlsliveencoder po přijetí obrazových a zvukových dat nejprve určit, zda má aktuální oddíl skončit, a vytvořit nový oddíl, aby pokračovalo v nepřetržitém generování oddílu TS. Je třeba poznamenat, že nová fragmentace by měla začít od klíčového rámce, aby se zabránilo selhání dekódování přehrávače. Základní kód je následující:
Rozhraní tsmuxer je také relativně jednoduché.
(2) Strategie generování segmentů HLS a m3u8
Strategy Segmentační strategie
Strategie segmentace HLS se v zásadě doporučuje rozdělit každých 10 sekund. Konkrétní čas by měl být samozřejmě označen podle skutečné délky rozdělení
Obecně řečeno, z důvodu mezipaměti a dalších důvodů jsou poslední tři fragmentové adresy uchovávány v indexovém souboru a aktualizovány ve formě „posuvného okna“.
② Představení souboru m3u8
M3u8 je indexový soubor živého streamování HTTP. M3u8 lze považovat za. Soubor ve formátu M3U je v podstatě rozdílem v tom, že soubor m3u8 používá kódování znaků UTF-8.
Zkopírujte kód
# Záhlaví souboru Extm3u M3U, musí být umístěno v prvním řádku
# Sériové číslo prvního segmentu TS sekvence ext-x-media
# Ext-x-targetduration maximální doba trvání každého segmentu TS
# Povoluje ext-x-allow-cache mezipaměť
# Konec souboru ext-x-endlist m3u8
#Extinf extra informace, informace o rozdělení, jako je doba trvání, šířka pásma atd
|
Zadejte e-mail a získejte překvapení
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánština
sq.fmuser.org -> albánština
ar.fmuser.org -> arabština
hy.fmuser.org -> Arménský
az.fmuser.org -> Ázerbájdžánština
eu.fmuser.org -> baskičtina
be.fmuser.org -> běloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalánština
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> Čínsky (zjednodušeně)
hr.fmuser.org -> chorvatština
cs.fmuser.org -> čeština
da.fmuser.org -> dánština
nl.fmuser.org -> Dutch
et.fmuser.org -> estonština
tl.fmuser.org -> filipínský
fi.fmuser.org -> finština
fr.fmuser.org -> French
gl.fmuser.org -> galicijština
ka.fmuser.org -> gruzínština
de.fmuser.org -> němčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolština
iw.fmuser.org -> hebrejština
hi.fmuser.org -> hindština
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandština
id.fmuser.org -> Indonéština
ga.fmuser.org -> Irština
it.fmuser.org -> Italian
ja.fmuser.org -> japonština
ko.fmuser.org -> korejština
lv.fmuser.org -> lotyština
lt.fmuser.org -> Litevština
mk.fmuser.org -> makedonština
ms.fmuser.org -> Malajština
mt.fmuser.org -> maltština
no.fmuser.org -> Norwegian
fa.fmuser.org -> perština
pl.fmuser.org -> polština
pt.fmuser.org -> portugalština
ro.fmuser.org -> Rumunština
ru.fmuser.org -> ruština
sr.fmuser.org -> srbština
sk.fmuser.org -> slovenština
sl.fmuser.org -> Slovinština
es.fmuser.org -> španělština
sw.fmuser.org -> svahilština
sv.fmuser.org -> švédština
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinština
ur.fmuser.org -> urdština
vi.fmuser.org -> Vietnamská
cy.fmuser.org -> velština
yi.fmuser.org -> Jidiš
FMUSER Bezdrátový přenos videa a zvuku snadnější!
Kontakt
Adresa:
Budova č. 305 Room HuiLan No.273 Huanpu Road Guangzhou Čína 510620
Kategorie
Newsletter