FMUSER Wirless Transmit video și audio mai ușor!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albaneză
ar.fmuser.org -> arabă
hy.fmuser.org -> Armeană
az.fmuser.org -> azeră
eu.fmuser.org -> bască
be.fmuser.org -> bielorusă
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> catalană
zh-CN.fmuser.org -> Chineză (simplificată)
zh-TW.fmuser.org -> Chineză (tradițională)
hr.fmuser.org -> croată
cs.fmuser.org -> cehă
da.fmuser.org -> Daneză
nl.fmuser.org -> Dutch
et.fmuser.org -> estonă
tl.fmuser.org -> filipinez
fi.fmuser.org -> finlandeză
fr.fmuser.org -> Franceză
gl.fmuser.org -> Galeză
ka.fmuser.org -> Georgiană
de.fmuser.org -> germană
el.fmuser.org -> greacă
ht.fmuser.org -> Creole haitian
iw.fmuser.org -> ebraică
hi.fmuser.org -> Hindi
hu.fmuser.org -> Maghiară
is.fmuser.org -> islandeză
id.fmuser.org -> indoneziană
ga.fmuser.org -> irlandeză
it.fmuser.org -> Italiană
ja.fmuser.org -> japoneză
ko.fmuser.org -> coreeană
lv.fmuser.org -> letonă
lt.fmuser.org -> lituaniană
mk.fmuser.org -> macedoneană
ms.fmuser.org -> Malay
mt.fmuser.org -> malteză
no.fmuser.org -> norvegiană
fa.fmuser.org -> persană
pl.fmuser.org -> poloneză
pt.fmuser.org -> portugheză
ro.fmuser.org -> Română
ru.fmuser.org -> rusă
sr.fmuser.org -> sârbă
sk.fmuser.org -> slovacă
sl.fmuser.org -> Slovenă
es.fmuser.org -> spaniolă
sw.fmuser.org -> Swahili
sv.fmuser.org -> suedeză
th.fmuser.org -> Thai
tr.fmuser.org -> turcă
uk.fmuser.org -> ucraineană
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnameză
cy.fmuser.org -> galeză
yi.fmuser.org -> idiș
Acum câteva zile, am petrecut ceva timp să studiez tehnologia HTTP live streaming (HLS) și să implementez un codificator HLS, hlsliveencoder, scris în C + +. Funcția sa este de a captura camera și microfonul, codarea video H.264 în timp real și codificarea audio aac și, conform specificațiilor protocolului HLS, genera fișier TS standard segmentat și fișier index m3u8. Prin intermediul hlsliveencoder și al serverului HTTP terță parte (cum ar fi nginx), am realizat cu succes transmiterea live a HTTP și am trecut testul pe iPhone. Voi scrie câteva dintre câștiguri aici.
1. Analiza tehnologiei HLS
HTTP live streaming (HLS) este un protocol de transport media bazat pe HTTP implementat de Apple Inc., care poate realiza media live streaming și la cerere. Este utilizat în principal în sistemul IOS pentru a oferi soluții audio și video live și la cerere pentru dispozitive IOS (cum ar fi iPhone și iPad). HLS la cerere este în esență un HTTP segmentat comun la cerere. Diferența este că segmentele sale sunt foarte mici. Pentru a realiza HLS la cerere, cheia este segmentarea fișierelor media. În prezent, există multe instrumente open source care pot fi utilizate. Nu voi discuta aici, ci doar să vorbesc despre tehnologia de difuzare în direct HLS.
În comparație cu protocoalele comune de streaming live, cum ar fi protocolul RTMP, protocolul RTSP, protocolul MMS și așa mai departe, cea mai mare diferență a fluxului live HLS este că clientul live nu obține un flux de date complet. Protocolul HLS stochează fluxul de date live ca fișiere media continue, pe termen scurt și lungi (format mpeg-ts) pe partea server, în timp ce partea client descarcă și redă continuu aceste fișiere mici, deoarece partea serverului generează întotdeauna fișiere mici noi din cele mai recente date live, astfel încât partea clientului trebuie doar să redea fișierele obținute de pe server pentru a realiza live. Se poate observa că HLS realizează practic difuzarea live prin intermediul tehnologiei VOD. Deoarece datele sunt transmise prin protocolul HTTP, nu este necesar să se ia în considerare problema firewall-ului sau a proxy-ului, iar timpul de segmentare a fișierelor este foarte scurt. Clientul poate selecta și schimba rapid rata de cod pentru a se adapta la redare în diferite condiții de lățime de bandă. Cu toate acestea, datorită caracteristicilor tehnice ale HLS, întârzierea acestuia este întotdeauna mai mare decât cea a protocolului obișnuit de streaming live.
Conform înțelegerii de mai sus, pentru a realiza streaming live HTTP în direct, trebuie să studiem și să implementăm următoarele tehnologii cheie.
(1) Colectați datele sursei video și a sursei audio
(2) Datele originale sunt codificate de H264 și AAC
(3) Datele video și audio sunt ambalate ca pachete mpeg-ts
(4) Strategia de generare a segmentării HLS și fișierul index m3u8
2. Protocol de transport HTTP
Dintre acestea, primul și al doilea punct au fost menționate în articolul meu anterior, iar ultimul punct este că putem folosi serverul HTTP existent, astfel încât implementarea celui de-al treilea și al patrulea punct este cheia.
(1) Cadrul și implementarea programului
Prin analiza de mai sus, logica și procesul codificatorului live HLS sunt practic clare: porniți respectiv firul de codare audio și video, realizați achiziția audio și video prin tehnologia DirectShow (sau alta), apoi apelați libx264 și respectiv libfaac pentru video și codare audio. După ce cele două fire de codare codifică datele audio și video în timp real, acestea le stochează într-un fișier segment în format mpeg-ts în conformitate cu strategia de partiție personalizată. Când este stocat un fișier segment, fișierul index m3u8 este actualizat. Așa cum se arată în figura de mai jos:
În figura de mai sus, după primirea datelor video și audio, hlsliveencoder trebuie mai întâi să determine dacă partiția curentă ar trebui să se termine și să creeze o nouă partiție pentru a continua generația continuă de partiție TS. Trebuie remarcat faptul că noua fragmentare ar trebui să înceapă de la cadrul cheie pentru a împiedica jucătorul să decodeze. Codul de bază este după cum urmează:
Interfața tsmuxer este, de asemenea, relativ simplă.
(2) Strategia de generare a segmentului HLS și m3u8
① Strategia de segmentare
Strategia de segmentare a HLS este practic recomandată să se împartă la fiecare 10 secunde. Desigur, timpul specific ar trebui marcat în funcție de lungimea reală a împărțirii
În general, din motive de cache și alte motive, cele mai recente trei adrese de fragmente sunt păstrate în fișierul index și actualizate sub forma „ferestrei glisante”.
② Introducerea fișierului m3u8
M3u8 este fișierul index al fluxului live HTTP. M3u8 poate fi considerat ca. Fișierul format M3U practic, diferența este că fișierul m3u8 folosește codarea caracterelor UTF-8.
Copiați codul
# Antetul fișierului Extm3u M3U, trebuie plasat în prima linie
#Număr de serie al primului segment TS al secvenței ext-x-media
# Ext-x-targetduration durata maximă a fiecărui segment TS
#Dext-x-allow-cache permite cache
#Sfârșitul fișierului ext-x-endlist m3u8
#Extinf informații suplimentare, informații despre divizarea ts, cum ar fi durata, lățimea de bandă etc.
|
Introduceți adresa de e-mail pentru a primi o surpriză
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albaneză
ar.fmuser.org -> arabă
hy.fmuser.org -> Armeană
az.fmuser.org -> azeră
eu.fmuser.org -> bască
be.fmuser.org -> bielorusă
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> catalană
zh-CN.fmuser.org -> Chineză (simplificată)
zh-TW.fmuser.org -> Chineză (tradițională)
hr.fmuser.org -> croată
cs.fmuser.org -> cehă
da.fmuser.org -> Daneză
nl.fmuser.org -> Dutch
et.fmuser.org -> estonă
tl.fmuser.org -> filipinez
fi.fmuser.org -> finlandeză
fr.fmuser.org -> Franceză
gl.fmuser.org -> Galeză
ka.fmuser.org -> Georgiană
de.fmuser.org -> germană
el.fmuser.org -> greacă
ht.fmuser.org -> Creole haitian
iw.fmuser.org -> ebraică
hi.fmuser.org -> Hindi
hu.fmuser.org -> Maghiară
is.fmuser.org -> islandeză
id.fmuser.org -> indoneziană
ga.fmuser.org -> irlandeză
it.fmuser.org -> Italiană
ja.fmuser.org -> japoneză
ko.fmuser.org -> coreeană
lv.fmuser.org -> letonă
lt.fmuser.org -> lituaniană
mk.fmuser.org -> macedoneană
ms.fmuser.org -> Malay
mt.fmuser.org -> malteză
no.fmuser.org -> norvegiană
fa.fmuser.org -> persană
pl.fmuser.org -> poloneză
pt.fmuser.org -> portugheză
ro.fmuser.org -> Română
ru.fmuser.org -> rusă
sr.fmuser.org -> sârbă
sk.fmuser.org -> slovacă
sl.fmuser.org -> Slovenă
es.fmuser.org -> spaniolă
sw.fmuser.org -> Swahili
sv.fmuser.org -> suedeză
th.fmuser.org -> Thai
tr.fmuser.org -> turcă
uk.fmuser.org -> ucraineană
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnameză
cy.fmuser.org -> galeză
yi.fmuser.org -> idiș
FMUSER Wirless Transmit video și audio mai ușor!
Contact
Adresa:
Nr. 305 Clădirea HuiLan nr. 273 Huanpu Road Guangzhou China 510620
Categorii
Stiri lunare via e-mail