FMUSER bežični prijenos videa i zvuka lakše!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albanski
ar.fmuser.org -> arapski
hy.fmuser.org -> Armenski
az.fmuser.org -> azerbejdžanski
eu.fmuser.org -> baskijski
be.fmuser.org -> bjeloruski
bg.fmuser.org -> Bugarski
ca.fmuser.org -> katalonski
zh-CN.fmuser.org -> kineski (pojednostavljeni)
zh-TW.fmuser.org -> Kineski (tradicionalni)
hr.fmuser.org -> hrvatski
cs.fmuser.org -> češki
da.fmuser.org -> danski
nl.fmuser.org -> Nizozemski
et.fmuser.org -> estonski
tl.fmuser.org -> filipinski
fi.fmuser.org -> finski
fr.fmuser.org -> Francuski
gl.fmuser.org -> galicijski
ka.fmuser.org -> gruzijski
de.fmuser.org -> njemački
el.fmuser.org -> Grčki
ht.fmuser.org -> haićanski kreolski
iw.fmuser.org -> hebrejski
hi.fmuser.org -> hindski
hu.fmuser.org -> Mađarski
is.fmuser.org -> islandski
id.fmuser.org -> indonezijski
ga.fmuser.org -> irski
it.fmuser.org -> Talijanski
ja.fmuser.org -> japanski
ko.fmuser.org -> korejski
lv.fmuser.org -> latvijski
lt.fmuser.org -> Litvanski
mk.fmuser.org -> makedonski
ms.fmuser.org -> malajski
mt.fmuser.org -> malteški
no.fmuser.org -> Norveška
fa.fmuser.org -> perzijski
pl.fmuser.org -> poljski
pt.fmuser.org -> portugalski
ro.fmuser.org -> Rumunjski
ru.fmuser.org -> ruski
sr.fmuser.org -> srpski
sk.fmuser.org -> slovački
sl.fmuser.org -> Slovenski
es.fmuser.org -> španjolski
sw.fmuser.org -> svahili
sv.fmuser.org -> švedski
th.fmuser.org -> Tajlandski
tr.fmuser.org -> turski
uk.fmuser.org -> ukrajinski
ur.fmuser.org -> urdu
vi.fmuser.org -> Vijetnamski
cy.fmuser.org -> velški
yi.fmuser.org -> Jidiš
Prije nekoliko dana proveo sam neko vrijeme proučavajući tehnologiju HTTP streaminga uživo (HLS) i implementirao HLS koder, hlsliveencoder, napisan na C + +. Njegova je funkcija snimanje kamere i mikrofona, kodiranje H.264 video zapisa u stvarnom vremenu i kodiranje zvuka aac, a prema specifikaciji HLS protokola generira segmentiranu standardnu TS datoteku i m3u8 indeksnu datoteku. Kroz moj hlsliveencoder i HTTP poslužitelj treće strane (kao što je nginx) uspješno smo realizirali streaming HTTP-a uživo i prošli test na iPhoneu. Ovdje ću napisati neke dobitke.
1. Analiza HLS tehnologije
HTTP streaming uživo (HLS) protokol je za prijenos streaming medija koji se temelji na HTTP-u, a implementira ga Apple Inc., a koji može realizirati streaming medije uživo i na zahtjev. Uglavnom se koristi u IOS sustavu za pružanje audio i video rješenja uživo i na zahtjev za IOS uređaje (kao što su iPhone i iPad). HLS na zahtjev u osnovi je uobičajeni segmentirani HTTP na zahtjev. Razlika je u tome što su njegovi segmenti vrlo mali. Da bi se HLS realizirao na zahtjev, ključno je segmentiranje medijskih datoteka. Trenutno postoji mnogo alata otvorenog koda koji se mogu koristiti. Neću ovdje raspravljati o tome, samo govorim o HLS tehnologiji emitiranja uživo.
U usporedbi s uobičajenim protokolima za streaming uživo, kao što su RTMP protokol, RTSP protokol, MMS protokol i tako dalje, najveća razlika HLS streaminga uživo je u tome što klijent uživo ne dobiva potpun prijenos podataka. HLS protokol pohranjuje tok podataka uživo kao kontinuirane, kratkoročne i dugotrajne medijske datoteke (mpeg-ts format) na strani poslužitelja, dok klijentska strana kontinuirano preuzima i reproducira te male datoteke, jer na strani poslužitelja uvijek generiraju nove male datoteke iz najnovije podatke uživo, tako da klijentska strana treba samo reproducirati datoteke dobivene s poslužitelja kako bi realizirala live. Može se vidjeti da HLS u osnovi realizira emitiranje uživo pomoću VOD tehnologije. Budući da se podaci prenose putem HTTP protokola, nema potrebe razmatrati problem vatrozida ili proxyja, a vrijeme segmentiranja datoteka vrlo je kratko. Klijent može brzo odabrati i prebaciti brzinu koda kako bi se prilagodio reprodukciji pod različitim uvjetima propusnosti. Međutim, zbog tehničkih karakteristika HLS-a, njegovo je kašnjenje uvijek veće od uobičajenog protokola za streaming uživo.
Prema gore navedenom razumijevanju, da bismo postigli HTTP live streaming uživo, moramo proučiti i implementirati sljedeće ključne tehnologije.
(1) Prikupite podatke video izvora i izvora zvuka
(2) Izvorni podaci kodirani su H264 i AAC
(3) Video i audio podaci pakirani su kao mpeg-ts paketi
(4) HLS strategija generiranja segmentacije i datoteka indeksa m3u8
2. HTTP protokol prijenosa
Među njima su prva i druga točka spomenute u mom prethodnom članku, a posljednja je točka da možemo koristiti postojeći HTTP poslužitelj, pa je ključna implementacija treće i četvrte točke.
(1) Programski okvir i provedba
Kroz gornju analizu logika i postupak kodiranja HLS uživo u osnovi su jasni: pokrenite nit za kodiranje zvuka i videa, ostvarite prikupljanje zvuka i videa putem DirectShow (ili neke druge) tehnologije, a zatim nazovite libx264 odnosno libfaac za video i audio kodiranje. Nakon što dvije niti kodiraju audio i video podatke u stvarnom vremenu, spremaju ih u datoteku segmenta u formatu mpeg-ts prema prilagođenoj strategiji particije. Kada se pohrani datoteka segmenta, datoteka indeksa m3u8 se ažurira. Kao što je prikazano na donjoj slici:
Na gornjoj slici, nakon primanja video i audio podataka, hlsliveencoder mora prvo odrediti treba li trenutna particija završiti i stvoriti novu particiju za nastavak kontinuiranog generiranja TS particije. Treba imati na umu da bi nova fragmentacija trebala započeti s ključnim okvirom kako bi se spriječilo da igrač ne uspije dekodirati. Osnovni kod je sljedeći:
Sučelje tsmuxer-a također je relativno jednostavno.
(2) HLS strategija generiranja segmenta i m3u8
Strategy Strategija segmentacije
U osnovi se preporuča podijeliti strategiju segmentacije HLS-a svakih 10 sekundi. Naravno, određeno vrijeme treba označiti prema stvarnoj duljini razdvajanja
Općenito govoreći, zbog predmemorije i drugih razloga, posljednje tri adrese fragmenata čuvaju se u indeksnoj datoteci i ažuriraju u obliku "kliznog prozora".
Uvođenje datoteke m3u8
M3u8 je indeksna datoteka HTTP streaminga uživo. M3u8 se može smatrati. Datoteka M3U formata u osnovi je razlika u tome što datoteka m3u8 koristi UTF-8 kodiranje znakova.
Kopirajte kod
# Extm3u zaglavlje datoteke M3U, mora se staviti u prvi redak
# Serijski broj prvog TS segmenta ext-x-media-sequence
# Ext-x-targetduration maksimalno trajanje svakog TS segmenta
#Da li ext-x-allow-cache dopušta predmemoriju
# Kraj datoteke ext-x-endlist m3u8
#Extinf dodatne informacije, informacije o podijeljenim TS-ima, kao što su trajanje, širina pojasa, itd
|
Unesite e-poštu da biste dobili iznenađenje
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albanski
ar.fmuser.org -> arapski
hy.fmuser.org -> Armenski
az.fmuser.org -> azerbejdžanski
eu.fmuser.org -> baskijski
be.fmuser.org -> bjeloruski
bg.fmuser.org -> Bugarski
ca.fmuser.org -> katalonski
zh-CN.fmuser.org -> kineski (pojednostavljeni)
zh-TW.fmuser.org -> Kineski (tradicionalni)
hr.fmuser.org -> hrvatski
cs.fmuser.org -> češki
da.fmuser.org -> danski
nl.fmuser.org -> Nizozemski
et.fmuser.org -> estonski
tl.fmuser.org -> filipinski
fi.fmuser.org -> finski
fr.fmuser.org -> Francuski
gl.fmuser.org -> galicijski
ka.fmuser.org -> gruzijski
de.fmuser.org -> njemački
el.fmuser.org -> Grčki
ht.fmuser.org -> haićanski kreolski
iw.fmuser.org -> hebrejski
hi.fmuser.org -> hindski
hu.fmuser.org -> Mađarski
is.fmuser.org -> islandski
id.fmuser.org -> indonezijski
ga.fmuser.org -> irski
it.fmuser.org -> Talijanski
ja.fmuser.org -> japanski
ko.fmuser.org -> korejski
lv.fmuser.org -> latvijski
lt.fmuser.org -> Litvanski
mk.fmuser.org -> makedonski
ms.fmuser.org -> malajski
mt.fmuser.org -> malteški
no.fmuser.org -> Norveška
fa.fmuser.org -> perzijski
pl.fmuser.org -> poljski
pt.fmuser.org -> portugalski
ro.fmuser.org -> Rumunjski
ru.fmuser.org -> ruski
sr.fmuser.org -> srpski
sk.fmuser.org -> slovački
sl.fmuser.org -> Slovenski
es.fmuser.org -> španjolski
sw.fmuser.org -> svahili
sv.fmuser.org -> švedski
th.fmuser.org -> Tajlandski
tr.fmuser.org -> turski
uk.fmuser.org -> ukrajinski
ur.fmuser.org -> urdu
vi.fmuser.org -> Vijetnamski
cy.fmuser.org -> velški
yi.fmuser.org -> Jidiš
FMUSER bežični prijenos videa i zvuka lakše!
Kontakt
Adresa:
Br. 305 Soba HuiLan zgrada br. 273 Huanpu Road Guangzhou Kina 510620
Kategorije
Novosti