FMUSER brezžični prenos video in zvoka lažje!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanščina
sq.fmuser.org -> albanski
ar.fmuser.org -> arabščina
hy.fmuser.org -> Armenščina
az.fmuser.org -> azerbajdžanski
eu.fmuser.org -> baskovščina
be.fmuser.org -> belorusko
bg.fmuser.org -> bolgarščina
ca.fmuser.org -> katalonščina
zh-CN.fmuser.org -> kitajščina (poenostavljena)
zh-TW.fmuser.org -> kitajščina (tradicionalno)
hr.fmuser.org -> hrvaški
cs.fmuser.org -> češčina
da.fmuser.org -> danski
nl.fmuser.org -> nizozemščina
et.fmuser.org -> estonščina
tl.fmuser.org -> filipinsko
fi.fmuser.org -> finski
fr.fmuser.org -> francosko
gl.fmuser.org -> galicijščina
ka.fmuser.org -> gruzijski
de.fmuser.org -> nemščina
el.fmuser.org -> grščina
ht.fmuser.org -> haitijska kreolščina
iw.fmuser.org -> hebrejščina
hi.fmuser.org -> hindujščina
hu.fmuser.org -> madžarščina
is.fmuser.org -> islandski
id.fmuser.org -> indonezijski
ga.fmuser.org -> irski
it.fmuser.org -> italijanščina
ja.fmuser.org -> japonski
ko.fmuser.org -> korejski
lv.fmuser.org -> latvijski
lt.fmuser.org -> litovščina
mk.fmuser.org -> makedonščina
ms.fmuser.org -> malajščina
mt.fmuser.org -> malteščina
no.fmuser.org -> norveščina
fa.fmuser.org -> perzijski
pl.fmuser.org -> poljščina
pt.fmuser.org -> portugalščina
ro.fmuser.org -> romunščina
ru.fmuser.org -> ruščina
sr.fmuser.org -> srbščina
sk.fmuser.org -> slovaški
sl.fmuser.org -> slovenščina
es.fmuser.org -> španščina
sw.fmuser.org -> svahili
sv.fmuser.org -> švedščina
th.fmuser.org -> tajska
tr.fmuser.org -> turški
uk.fmuser.org -> ukrajinski
ur.fmuser.org -> urdujščina
vi.fmuser.org -> Vietnamščina
cy.fmuser.org -> valižanščina
yi.fmuser.org -> jidiš
Pred nekaj dnevi sem nekaj časa preučeval tehnologijo pretakanja HTTP v živo (HLS) in uvedel kodirnik HLS, hlsliveencoder, napisan v jeziku C + +. Njegova funkcija je zajemanje kamere in mikrofona, kodiranje videa H.264 v realnem času in kodiranje zvoka aac ter v skladu s specifikacijami protokola HLS generiranje segmentirane standardne datoteke TS in indeksne datoteke m3u8. Prek mojega hlsliveencoderja in neodvisnega strežnika HTTP (kot je nginx) smo uspešno realizirali pretakanje HTTP v živo in opravili preizkus na iPhoneu. Nekaj dobičkov bom zapisal tukaj.
1. Analiza tehnologije HLS
Pretakanje HTTP v živo (HLS) je protokol za prenos pretočnih medijev, ki temelji na protokolu HTTP, ki ga izvaja Apple Inc. Uporablja se predvsem v sistemu IOS za zagotavljanje avdio in video rešitev v živo in na zahtevo za naprave IOS (kot sta iPhone in iPad). HLS na zahtevo je v bistvu običajni segmentirani HTTP na zahtevo. Razlika je v tem, da so njeni segmenti zelo majhni. Za uresničitev HLS na zahtevo je ključno segmentiranje predstavnostnih datotek. Trenutno je na voljo veliko odprtokodnih orodij. Tu ne bom razpravljal o tem, samo govorim o tehnologiji HLS v živo.
V primerjavi s običajnimi protokoli pretakanja v živo, kot so protokol RTMP, protokol RTSP, protokol MMS in tako naprej, je največja razlika v pretakanju HLS v živo ta, da odjemalec v živo ne dobi popolnega prenosa podatkov. Protokol HLS shranjuje tok podatkov v živo kot neprekinjene, kratkoročne in dolge predstavnostne datoteke (format mpeg-ts) na strežniški strani, medtem ko odjemalska stran te majhne datoteke neprestano prenaša in predvaja, ker strežniška stran vedno ustvari nove majhne datoteke iz najnovejše podatke v živo, tako da mora odjemalska stran predvajati samo datoteke, pridobljene s strežnika, da lahko realizira v živo. Vidimo, da HLS oddajanje v živo v bistvu uresničuje s pomočjo tehnologije VOD. Ker se podatki prenašajo po protokolu HTTP, ni treba upoštevati težave požarnega zidu ali proxyja, čas segmentiranja datotek pa je zelo kratek. Naročnik lahko hitro izbere in preklopi hitrost kode, da se prilagodi predvajanju pod različnimi pogoji pasovne širine. Vendar pa je zaradi tehničnih značilnosti HLS njegova zamuda vedno večja kot pri običajnem protokolu pretakanja v živo.
V skladu z zgornjim razumevanjem moramo za dosego HTTP pretočnega predvajanja v živo preučiti in uporabiti naslednje ključne tehnologije.
(1) Zberite podatke video in avdio vira
(2) Izvirni podatki so kodirani s H264 in AAC
(3) Video in zvočni podatki so pakirani kot paketi mpeg-ts
(4) Strategija generiranja segmentacije HLS in indeksna datoteka m3u8
2. Prenosni protokol HTTP
Med njimi sta bili v prejšnjem članku omenjeni prva in druga točka, zadnja točka pa je, da lahko uporabimo obstoječi strežnik HTTP, zato je ključna izvedba tretje in četrte točke.
(1) Okvir in izvajanje programa
Z zgornjo analizo sta logika in postopek dajalnika HLS v živo jasna: zaženite nit za kodiranje zvoka in videa, izvedite pridobivanje zvoka in videa s tehnologijo DirectShow (ali drugo) in nato pokličite libx264 oziroma libfaac za video in avdio kodiranje. Ko obe niti za kodiranje sproti kodirata avdio in video podatke, ju shranita v segmentno datoteko v formatu mpeg-ts v skladu s prilagojeno particijsko strategijo. Ko je datoteka segmenta shranjena, se indeksna datoteka m3u8 posodobi. Kot je prikazano na spodnji sliki:
Na zgornji sliki mora hlsliveencoder po prejemu video in zvočnih podatkov najprej ugotoviti, ali naj se trenutna particija konča, in ustvariti novo particijo za nadaljevanje neprekinjenega ustvarjanja particije TS. Upoštevati je treba, da se mora nova fragmentacija začeti s ključnim okvirjem, da prepreči predvajalniku neuspešno dekodiranje. Osnovna koda je naslednja:
Tudi vmesnik tsmuxerja je razmeroma preprost.
(2) HLS strategija generiranja segmentov in m3u8
Strategy Strategija segmentacije
V osnovi je priporočljivo, da se strategija segmentacije HLS deli vsakih 10 sekund. Seveda je treba določen čas označiti glede na dejansko dolžino delitve
Na splošno so zaradi predpomnilnika in drugih razlogov zadnji trije naslovi fragmentov shranjeni v indeksni datoteki in posodobljeni v obliki "drsnega okna".
② Predstavitev datoteke m3u8
M3u8 je indeksna datoteka pretakanja HTTP v živo. M3u8 lahko štejemo za. Datoteka formata M3U je v bistvu razlika v tem, da datoteka m3u8 uporablja kodiranje znakov UTF-8.
Kopirajte kodo
# Extm3u glava datoteke M3U mora biti postavljena v prvo vrstico
# Serijska številka prvega segmenta TS ext-x-media-sequence
# Ext-x-targetduration največje trajanje vsakega segmenta TS
# Ali ext-x-allow-cache dovoli predpomnilnik
# Konec datoteke ext-x-endlist m3u8
#Extinf dodatne informacije, informacije o delih, kot so trajanje, pasovna širina itd
|
Vnesite e-pošto, da dobite presenečenje
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanščina
sq.fmuser.org -> albanski
ar.fmuser.org -> arabščina
hy.fmuser.org -> Armenščina
az.fmuser.org -> azerbajdžanski
eu.fmuser.org -> baskovščina
be.fmuser.org -> belorusko
bg.fmuser.org -> bolgarščina
ca.fmuser.org -> katalonščina
zh-CN.fmuser.org -> kitajščina (poenostavljena)
zh-TW.fmuser.org -> kitajščina (tradicionalno)
hr.fmuser.org -> hrvaški
cs.fmuser.org -> češčina
da.fmuser.org -> danski
nl.fmuser.org -> nizozemščina
et.fmuser.org -> estonščina
tl.fmuser.org -> filipinsko
fi.fmuser.org -> finski
fr.fmuser.org -> francosko
gl.fmuser.org -> galicijščina
ka.fmuser.org -> gruzijski
de.fmuser.org -> nemščina
el.fmuser.org -> grščina
ht.fmuser.org -> haitijska kreolščina
iw.fmuser.org -> hebrejščina
hi.fmuser.org -> hindujščina
hu.fmuser.org -> madžarščina
is.fmuser.org -> islandski
id.fmuser.org -> indonezijski
ga.fmuser.org -> irski
it.fmuser.org -> italijanščina
ja.fmuser.org -> japonski
ko.fmuser.org -> korejski
lv.fmuser.org -> latvijski
lt.fmuser.org -> litovščina
mk.fmuser.org -> makedonščina
ms.fmuser.org -> malajščina
mt.fmuser.org -> malteščina
no.fmuser.org -> norveščina
fa.fmuser.org -> perzijski
pl.fmuser.org -> poljščina
pt.fmuser.org -> portugalščina
ro.fmuser.org -> romunščina
ru.fmuser.org -> ruščina
sr.fmuser.org -> srbščina
sk.fmuser.org -> slovaški
sl.fmuser.org -> slovenščina
es.fmuser.org -> španščina
sw.fmuser.org -> svahili
sv.fmuser.org -> švedščina
th.fmuser.org -> tajska
tr.fmuser.org -> turški
uk.fmuser.org -> ukrajinski
ur.fmuser.org -> urdujščina
vi.fmuser.org -> Vietnamščina
cy.fmuser.org -> valižanščina
yi.fmuser.org -> jidiš
FMUSER brezžični prenos video in zvoka lažje!
Kontakt
naslov:
No.305 Soba HuiLan stavba št.273 Huanpu Road Guangzhou Kitajska 510620
Kategorije
Novice