„FMUSER Wirless“ perduoda vaizdo ir garso įrašus lengviau!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanų kalba
sq.fmuser.org -> albanų
ar.fmuser.org -> arabų
hy.fmuser.org -> armėnas
az.fmuser.org -> azerbaidžanietis
eu.fmuser.org -> baskų
be.fmuser.org -> baltarusių
bg.fmuser.org -> bulgarų
ca.fmuser.org -> katalonų
zh-CN.fmuser.org -> kinų (supaprastinta)
zh-TW.fmuser.org -> kinų (tradicinė)
hr.fmuser.org -> kroatų
cs.fmuser.org -> čekų
da.fmuser.org -> danų
nl.fmuser.org -> Olandų
et.fmuser.org -> estų
tl.fmuser.org -> filipinietis
fi.fmuser.org -> suomių
fr.fmuser.org -> prancūzų
gl.fmuser.org -> Galisų
ka.fmuser.org -> gruzinų
de.fmuser.org -> vokiečių kalba
el.fmuser.org -> graikų
ht.fmuser.org -> Haičio kreolis
iw.fmuser.org -> hebrajų
hi.fmuser.org -> hindi
hu.fmuser.org -> vengrų
is.fmuser.org -> islandų
id.fmuser.org -> indoneziečių
ga.fmuser.org -> airių
it.fmuser.org -> italų kalba
ja.fmuser.org -> japonų
ko.fmuser.org -> korėjiečių
lv.fmuser.org -> latvių
lt.fmuser.org -> lietuvis
mk.fmuser.org -> makedonų
ms.fmuser.org -> malajiečių
mt.fmuser.org -> maltiečių
no.fmuser.org -> norvegų
fa.fmuser.org -> persų
pl.fmuser.org -> lenkų
pt.fmuser.org -> portugalų
ro.fmuser.org -> rumunų
ru.fmuser.org -> rusų
sr.fmuser.org -> serbų
sk.fmuser.org -> slovakų
sl.fmuser.org -> slovėnų
es.fmuser.org -> ispanų
sw.fmuser.org -> svahili kalba
sv.fmuser.org -> švedų
th.fmuser.org -> Tailando
tr.fmuser.org -> turkų
uk.fmuser.org -> ukrainietis
ur.fmuser.org -> urdu
vi.fmuser.org -> vietnamiečių
cy.fmuser.org -> Valų kalba
yi.fmuser.org -> jidiš
Prieš kelias dienas praleidau šiek tiek laiko mokytis HTTP tiesioginio srauto (HLS) technologijos ir įdiegti HLS kodavimo priemonę „hlsliveencoder“, parašytą C + +. Jo funkcija yra užfiksuoti kamerą ir mikrofoną, realiu laiku H.264 vaizdo kodavimą ir aac garso kodavimą ir pagal HLS protokolo specifikaciją generuoti segmentuotą standartinį TS failą ir m3u8 indekso failą. Per mano „hlsliveencoder“ ir trečiosios šalies HTTP serverį (pvz., „Nginx“) mes sėkmingai realizavome tiesioginį HTTP srautą ir išlaikėme „iPhone“ testą. Kai kuriuos laimėjimus parašysiu čia.
1. HLS technologijos analizė
HTTP tiesioginis srautas (HLS) yra srautinės medijos perdavimo protokolas, pagrįstas HTTP, kurį įdiegė „Apple Inc.“, kuris gali realizuoti tiesioginę ir pagal pareikalavimą transliuojamą laikmeną. Jis daugiausia naudojamas IOS sistemoje teikiant garso ir vaizdo tiesioginius ir pagal pareikalavimą sprendimus IOS įrenginiams (pvz., „IPhone“ ir „iPad“). „HLS on demand“ iš esmės yra įprastas segmentuotas HTTP pagal pareikalavimą. Skirtumas tas, kad jo segmentai yra labai maži. Norint realizuoti HLS pagal pareikalavimą, svarbiausia yra suskaidyti medijos failus. Šiuo metu yra daug atvirojo kodo įrankių, kuriuos galima naudoti. Aš čia neaptarinėsiu, tiesiog pakalbėkime apie HLS tiesioginės transliacijos technologiją.
Palyginti su įprastais tiesioginio srauto perdavimo protokolais, tokiais kaip RTMP protokolas, RTSP protokolas, MMS protokolas ir pan., Didžiausias HLS tiesioginio srauto skirtumas yra tas, kad tiesioginis klientas negauna pilno duomenų srauto. HLS protokolas saugo tiesioginį duomenų srautą kaip nuolatinius, trumpalaikius ir ilgus daugialypės terpės failus (mpeg-ts formatas) serverio pusėje, o kliento pusė nuolat atsisiunčia ir atkuria šiuos mažus failus, nes serverio pusė visada generuoja naujus mažus failus iš naujausius tiesioginius duomenis, kad klientas galėtų atkurti tik failus, gautus iš serverio, kad galėtų realizuoti tiesioginius duomenis. Galima pastebėti, kad HLS iš esmės realizuoja tiesiogines transliacijas, naudodama VOD technologijas. Kadangi duomenys perduodami per HTTP protokolą, nereikia svarstyti užkardos ar tarpinio serverio problemos, o failų segmentavimo laikas yra labai trumpas. Klientas gali greitai pasirinkti ir perjungti kodo greitį, kad prisitaikytų prie atkūrimo esant skirtingoms pralaidumo sąlygoms. Tačiau dėl HLS techninių savybių jos vėlavimas visada yra didesnis nei įprasto tiesioginio srauto protokolo.
Pagal pirmiau pateiktą supratimą, kad pasiektume tiesioginį HTTP srautą, turime ištirti ir įdiegti šias pagrindines technologijas.
(1) Surinkite vaizdo šaltinio ir garso šaltinio duomenis
(2) Originalius duomenis užkoduoja H264 ir AAC
(3) Vaizdo ir garso duomenys yra supakuoti kaip „mpeg-ts“ paketai
(4) HLS segmentavimo generavimo strategija ir m3u8 indekso byla
2. HTTP perdavimo protokolas
Tarp jų pirmasis ir antrasis punktai buvo paminėti ankstesniame mano straipsnyje, o paskutinis dalykas yra tas, kad mes galime naudoti esamą HTTP serverį, taigi trečiojo ir ketvirtojo punktų įgyvendinimas yra pagrindinis.
(1) Programos struktūra ir įgyvendinimas
Atlikus aukščiau pateiktą analizę, HLS tiesioginio kodavimo įrenginio logika ir procesas iš esmės yra aiškūs: pradėkite atitinkamai garso ir vaizdo kodavimo gijas, realizuokite garso ir vaizdo gavimą naudodami „DirectShow“ (ar kitą) technologiją, tada vaizdo ir garso kodavimas. Po to, kai abi kodavimo gijos realiuoju laiku užkoduoja garso ir vaizdo duomenis, jie juos saugo segmento faile „mpeg-ts“ formatu pagal pritaikytą skaidinio strategiją. Kai segmento failas yra saugomas, m264u3 indekso failas atnaujinamas. Kaip parodyta toliau pateiktame paveikslėlyje:
Aukščiau pateiktame paveikslėlyje, gavęs vaizdo ir garso duomenis, „hlsliveencoder“ pirmiausia turi nustatyti, ar dabartinis skaidinys turėtų baigtis, ir sukurti naują skaidinį, kad būtų tęsiamas nuolatinis TS skaidinio generavimas. Reikėtų pažymėti, kad naujas fragmentas turėtų prasidėti nuo pagrindinio kadro, kad grotuvas negalėtų iššifruoti. Pagrindinis kodas yra toks:
„Tsmuxer“ sąsaja taip pat yra gana paprasta.
(2) HLS segmento generavimo strategija ir m3u8
① Segmentavimo strategija
HLS segmentavimo strategiją iš esmės rekomenduojama padalyti kas 10 sekundžių. Be abejo, konkretus laikas turėtų būti pažymėtas pagal faktinį padalijimo ilgį
Paprastai kalbant, dėl talpyklos ir kitų priežasčių paskutiniai trys fragmentų adresai laikomi indekso faile ir atnaujinami „slankiojo lango“ forma.
② m3u8 failo įvedimas
M3u8 yra HTTP tiesioginio srauto indekso failas. M3u8 galima laikyti. Iš esmės M3U formato failas skiriasi tuo, kad m3u8 failas naudoja UTF-8 simbolių kodavimą.
Kopijuoti kodą
# Extm3u M3U failo antraštė turi būti dedama į pirmąją eilutę
# Pirmojo „ext-x-media-sec“ TS segmento serijos numeris
# Ext-x-targetduration maksimali kiekvieno TS segmento trukmė
# Ar „ext-x-allow-cache“ leidžia talpyklą
#End of ext-x-endlist m3u8 failas
Papildoma informacija, informacija apie padalijimus, pvz., Trukmė, pralaidumas ir kt
|
Įveskite el. Pašto adresą, kad gautumėte staigmeną
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanų kalba
sq.fmuser.org -> albanų
ar.fmuser.org -> arabų
hy.fmuser.org -> armėnas
az.fmuser.org -> azerbaidžanietis
eu.fmuser.org -> baskų
be.fmuser.org -> baltarusių
bg.fmuser.org -> bulgarų
ca.fmuser.org -> katalonų
zh-CN.fmuser.org -> kinų (supaprastinta)
zh-TW.fmuser.org -> kinų (tradicinė)
hr.fmuser.org -> kroatų
cs.fmuser.org -> čekų
da.fmuser.org -> danų
nl.fmuser.org -> Olandų
et.fmuser.org -> estų
tl.fmuser.org -> filipinietis
fi.fmuser.org -> suomių
fr.fmuser.org -> prancūzų
gl.fmuser.org -> Galisų
ka.fmuser.org -> gruzinų
de.fmuser.org -> vokiečių kalba
el.fmuser.org -> graikų
ht.fmuser.org -> Haičio kreolis
iw.fmuser.org -> hebrajų
hi.fmuser.org -> hindi
hu.fmuser.org -> vengrų
is.fmuser.org -> islandų
id.fmuser.org -> indoneziečių
ga.fmuser.org -> airių
it.fmuser.org -> italų kalba
ja.fmuser.org -> japonų
ko.fmuser.org -> korėjiečių
lv.fmuser.org -> latvių
lt.fmuser.org -> lietuvis
mk.fmuser.org -> makedonų
ms.fmuser.org -> malajiečių
mt.fmuser.org -> maltiečių
no.fmuser.org -> norvegų
fa.fmuser.org -> persų
pl.fmuser.org -> lenkų
pt.fmuser.org -> portugalų
ro.fmuser.org -> rumunų
ru.fmuser.org -> rusų
sr.fmuser.org -> serbų
sk.fmuser.org -> slovakų
sl.fmuser.org -> slovėnų
es.fmuser.org -> ispanų
sw.fmuser.org -> svahili kalba
sv.fmuser.org -> švedų
th.fmuser.org -> Tailando
tr.fmuser.org -> turkų
uk.fmuser.org -> ukrainietis
ur.fmuser.org -> urdu
vi.fmuser.org -> vietnamiečių
cy.fmuser.org -> Valų kalba
yi.fmuser.org -> jidiš
„FMUSER Wirless“ perduoda vaizdo ir garso įrašus lengviau!
Susisiekite su mumis
Adresas:
Nr. 305 kambarys „HuiLan“ pastatas Nr. 273 Huanpu Road Guangdžou, Kinija 510620
Kategorijos
Naujienlaiškis