Az FMUSER Wirless könnyebben továbbítja a videót és a hangot!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albán
ar.fmuser.org -> arab
hy.fmuser.org -> örmény
az.fmuser.org -> azerbajdzsán
eu.fmuser.org -> baszk
be.fmuser.org -> belorusz
bg.fmuser.org -> bolgár
ca.fmuser.org -> katalán
zh-CN.fmuser.org -> kínai (egyszerűsített)
zh-TW.fmuser.org -> kínai (hagyományos)
hr.fmuser.org -> horvát
cs.fmuser.org -> cseh
da.fmuser.org -> dán
nl.fmuser.org -> holland
et.fmuser.org -> észt
tl.fmuser.org -> filippínó
fi.fmuser.org -> finn
fr.fmuser.org -> francia
gl.fmuser.org -> galíciai
ka.fmuser.org -> grúz
de.fmuser.org -> német
el.fmuser.org -> Görög
ht.fmuser.org -> haiti kreol
iw.fmuser.org -> héber
hi.fmuser.org -> hindi
hu.fmuser.org -> magyar
is.fmuser.org -> izlandi
id.fmuser.org -> indonéz
ga.fmuser.org -> ír
it.fmuser.org -> olasz
ja.fmuser.org -> japán
ko.fmuser.org -> koreai
lv.fmuser.org -> lett
lt.fmuser.org -> litván
mk.fmuser.org -> macedón
ms.fmuser.org -> maláj
mt.fmuser.org -> máltai
no.fmuser.org -> norvég
fa.fmuser.org -> perzsa
pl.fmuser.org -> lengyel
pt.fmuser.org -> portugál
ro.fmuser.org -> román
ru.fmuser.org -> orosz
sr.fmuser.org -> szerb
sk.fmuser.org -> szlovák
sl.fmuser.org -> Szlovén
es.fmuser.org -> spanyol
sw.fmuser.org -> szuahéli
sv.fmuser.org -> svéd
th.fmuser.org -> Thai
tr.fmuser.org -> török
uk.fmuser.org -> ukrán
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnámi
cy.fmuser.org -> walesi
yi.fmuser.org -> jiddis
Néhány napja egy kis időt töltöttem a HTTP élő streaming (HLS) technológia tanulmányozásával és egy HLS kódoló, hlsliveencoder megvalósításával, amelyet C + + nyelven írtunk. Feladata a kamera és a mikrofon rögzítése, valós idejű H.264 videokódolás és aac audiokódolás, valamint a HLS protokoll specifikációjának megfelelően szegmentált szabványos TS fájl és m3u8 index fájl előállítása. A hlsliveencoder és a harmadik féltől származó HTTP szerver (például az nginx) révén sikeresen megvalósítottuk a HTTP élő közvetítését, és letettük a tesztet az iPhone készüléken. A nyereségek egy részét ide írom.
1. A HLS technológia elemzése
A HTTP live streaming (HLS) az Apple Inc. által megvalósított HTTP-n alapuló streaming média szállítási protokoll, amely valós és igény szerinti streaming médiát valósíthat meg. Főleg az IOS rendszerben használják audio és video élő és igény szerinti megoldások biztosítására az IOS eszközökhöz (például iPhone és iPad). Az igény szerinti HLS alapvetően gyakori szegmentált HTTP igény szerint. A különbség az, hogy szegmensei nagyon kicsiek. A HLS igény szerinti megvalósítása érdekében a legfontosabb a médiafájlok szegmentálása. Jelenleg számos nyílt forráskódú eszköz használható. Itt nem tárgyalom, csak a HLS élő közvetítés technológiájáról beszélek.
Összehasonlítva a gyakori élő streaming protokollokkal, például RTMP protokoll, RTSP protokoll, MMS protokoll és így tovább, a HLS élő streaming legnagyobb különbsége az, hogy az élő kliens nem kap teljes adatfolyamot. A HLS protokoll az élő adatfolyamot folyamatos, rövid távú és hosszú médiafájlokként (mpeg-ts formátumban) tárolja a szerver oldalon, míg a kliens oldal folyamatosan tölti le és játssza le ezeket a kis fájlokat, mert a szerver oldal mindig új kis fájlokat generál a legfrissebb élő adatok, így az ügyféloldalnak csak a szerverről kapott fájlokat kell lejátszania az élő megvalósításához. Látható, hogy a HLS alapvetően az élő közvetítést valósítja meg a VOD technológia segítségével. Mivel az adatokat HTTP protokollon keresztül továbbítják, nem szükséges figyelembe venni a tűzfal vagy a proxy problémáját, és a fájlok szegmentálásának ideje nagyon rövid. Az ügyfél gyorsan kiválaszthatja és átválthatja a kódsebességet, hogy alkalmazkodjon a lejátszáshoz különböző sávszélességi viszonyok között. A HLS technikai jellemzői miatt azonban késése mindig nagyobb, mint a szokásos élő streaming protokollé.
A fenti megértés szerint a HTTP élő közvetítés élő eléréséhez a következő kulcsfontosságú technológiákat kell tanulmányoznunk és megvalósítanunk.
(1) Gyűjtse össze a videó és az audio forrás adatait
(2) Az eredeti adatokat a H264 és az AAC kódolja
(3) A video- és hangadatokat MPEG-TS csomagként csomagolják
(4) HLS szegmentálási stratégia és m3u8 indexfájl
2. HTTP átviteli protokoll
Ezek közül az első és a második pontot már említettem előző cikkemben, az utolsó pont az, hogy használhatjuk a meglévő HTTP szervert, tehát a harmadik és a negyedik pont megvalósítása a kulcs.
(1) A program kerete és végrehajtása
A fenti elemzés révén a HLS élő kódoló logikája és folyamata alapvetően világos: indítsa el az audio- és videokódoló szálat, valósítsa meg a hang- és videokészítést a DirectShow (vagy más) technológián keresztül, majd hívja meg a libx264-et, illetve a libfaac-ot videó, ill. hangkódolás. Miután a két kódoló szál valós időben kódolja az audio és video adatokat, azokat az egyéni partíciós stratégia szerint mpeg-ts formátumú szegmensfájlban tárolják. Szegmensfájl tárolásakor az m3u8 indexfájl frissül. Az alábbi ábrán látható módon:
A fenti ábrán a video- és hangadatok vétele után a hlsliveencodernek először meg kell határoznia, hogy az aktuális partíciónak véget kell-e érnie, és egy új partíciót kell létrehoznia a TS partíció folyamatos generálásának folytatásához. Meg kell jegyezni, hogy az új töredezettségnek a kulcskeretből kell indulnia, hogy megakadályozza a lejátszó dekódolási hibáját. Az alapkód a következő:
A tsmuxer kezelőfelülete szintén viszonylag egyszerű.
(2) HLS szegmensgenerációs stratégia és m3u8
① Szegmentálási stratégia
A HLS szegmentálási stratégiája alapvetően 10 másodpercenként javasolt. Természetesen az adott időt a felosztás tényleges hosszának megfelelően kell megjelölni
Általánosságban elmondható, hogy a gyorsítótár és egyéb okokból a legfrissebb három töredékcímet az indexfájlban őrzik és frissítik "csúszó ablak" formájában.
② Az m3u8 fájl bemutatása
Az M3u8 a HTTP élő közvetítés indexfájlja. Az M3u8-nak tekinthető. Az M3U formátumú fájl alapvetően az a különbség, hogy az m3u8 fájl UTF-8 karakterkódolást használ.
Másolja a kódot
# Az Extm3u M3U fájlfejlécet az első sorba kell helyezni
# Az ext-x-media-szekvencia első TS szegmensének sorszáma
# Ext-x-targetduration az egyes TS szegmensek maximális időtartama
# Az ext-x-allow-cache engedélyezi a gyorsítótárat
Az ext-x-endlist m3u8 fájl # vége
#Extinf extra információk, a split ts információi, például időtartam, sávszélesség stb
|
Írja be az e-mail címet a meglepetéshez
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albán
ar.fmuser.org -> arab
hy.fmuser.org -> örmény
az.fmuser.org -> azerbajdzsán
eu.fmuser.org -> baszk
be.fmuser.org -> belorusz
bg.fmuser.org -> bolgár
ca.fmuser.org -> katalán
zh-CN.fmuser.org -> kínai (egyszerűsített)
zh-TW.fmuser.org -> kínai (hagyományos)
hr.fmuser.org -> horvát
cs.fmuser.org -> cseh
da.fmuser.org -> dán
nl.fmuser.org -> holland
et.fmuser.org -> észt
tl.fmuser.org -> filippínó
fi.fmuser.org -> finn
fr.fmuser.org -> francia
gl.fmuser.org -> galíciai
ka.fmuser.org -> grúz
de.fmuser.org -> német
el.fmuser.org -> Görög
ht.fmuser.org -> haiti kreol
iw.fmuser.org -> héber
hi.fmuser.org -> hindi
hu.fmuser.org -> magyar
is.fmuser.org -> izlandi
id.fmuser.org -> indonéz
ga.fmuser.org -> ír
it.fmuser.org -> olasz
ja.fmuser.org -> japán
ko.fmuser.org -> koreai
lv.fmuser.org -> lett
lt.fmuser.org -> litván
mk.fmuser.org -> macedón
ms.fmuser.org -> maláj
mt.fmuser.org -> máltai
no.fmuser.org -> norvég
fa.fmuser.org -> perzsa
pl.fmuser.org -> lengyel
pt.fmuser.org -> portugál
ro.fmuser.org -> román
ru.fmuser.org -> orosz
sr.fmuser.org -> szerb
sk.fmuser.org -> szlovák
sl.fmuser.org -> Szlovén
es.fmuser.org -> spanyol
sw.fmuser.org -> szuahéli
sv.fmuser.org -> svéd
th.fmuser.org -> Thai
tr.fmuser.org -> török
uk.fmuser.org -> ukrán
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnámi
cy.fmuser.org -> walesi
yi.fmuser.org -> jiddis
Az FMUSER Wirless könnyebben továbbítja a videót és a hangot!
Kapcsolat
Cím:
No. 305 szoba HuiLan épület No.273 Huanpu Road Guangzhou, Kína 510620
Kategóriák
Hírlevél