FMUSER Wirless Trasmetti video e audio più facilmente!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanese
ar.fmuser.org -> Arabo
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaigiano
eu.fmuser.org -> Basco
be.fmuser.org -> bielorusso
bg.fmuser.org -> Bulgaro
ca.fmuser.org -> Catalano
zh-CN.fmuser.org -> Cinese (semplificato)
zh-TW.fmuser.org -> Cinese (Tradizionale)
hr.fmuser.org -> croato
cs.fmuser.org -> ceco
da.fmuser.org -> danese
nl.fmuser.org -> Olandese
et.fmuser.org -> Estone
tl.fmuser.org -> Filippino
fi.fmuser.org -> finlandese
fr.fmuser.org -> Francese
gl.fmuser.org -> Galiziano
ka.fmuser.org -> georgiano
de.fmuser.org -> tedesco
el.fmuser.org -> Greca
ht.fmuser.org -> Creolo haitiano
iw.fmuser.org -> Ebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandese
id.fmuser.org -> Indonesiano
ga.fmuser.org -> Irlandese
it.fmuser.org -> Italiano
ja.fmuser.org -> giapponese
ko.fmuser.org -> coreano
lv.fmuser.org -> Lettone
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedone
ms.fmuser.org -> Malese
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiano
pl.fmuser.org -> polacco
pt.fmuser.org -> portoghese
ro.fmuser.org -> Romeno
ru.fmuser.org -> Russo
sr.fmuser.org -> Serbo
sk.fmuser.org -> slovacco
sl.fmuser.org -> Sloveno
es.fmuser.org -> spagnolo
sw.fmuser.org -> Swahili
sv.fmuser.org -> svedese
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> Ucraino
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> Gallese
yi.fmuser.org -> Yiddish
Qualche giorno fa, ho passato un po 'di tempo a studiare la tecnologia HTTP live streaming (HLS) e ad implementare un codificatore HLS, hlsliveencoder, scritto in C ++. La sua funzione è quella di acquisire la telecamera e il microfono, la codifica video H.264 in tempo reale e la codifica audio aac e, in base alle specifiche del protocollo HLS, generare file TS standard segmentati e file indice m3u8. Attraverso il mio hlsliveencoder e il server HTTP di terze parti (come nginx), abbiamo realizzato con successo il live streaming di HTTP e superato il test su iPhone. Scriverò qui alcuni dei guadagni.
1. Analisi della tecnologia HLS
HTTP live streaming (HLS) è un protocollo di trasporto multimediale in streaming basato su HTTP implementato da Apple Inc., che può realizzare contenuti multimediali in streaming live e su richiesta. Viene utilizzato principalmente nel sistema IOS per fornire soluzioni audio e video live e on-demand per dispositivi IOS (come iPhone e iPad). HLS su richiesta è fondamentalmente un comune HTTP segmentato su richiesta. La differenza è che i suoi segmenti sono molto piccoli. Per realizzare HLS su richiesta, la chiave è segmentare i file multimediali. Al momento, ci sono molti strumenti open source che possono essere utilizzati. Non ne parlerò qui, parlerò solo della tecnologia di trasmissione dal vivo di HLS.
Rispetto ai comuni protocolli di live streaming, come il protocollo RTMP, il protocollo RTSP, il protocollo MMS e così via, la più grande differenza dello streaming live HLS è che il client live non riceve un flusso di dati completo. Il protocollo HLS memorizza il flusso di dati in tempo reale come file multimediali continui, a breve termine e lunghi (formato mpeg-ts) sul lato server, mentre il lato client scarica e riproduce continuamente questi piccoli file, perché il lato server genera sempre nuovi piccoli file da gli ultimi dati live, in modo che il lato client debba solo riprodurre i file ottenuti dal server per realizzare il live. Si può vedere che HLS fondamentalmente realizza trasmissioni in diretta per mezzo della tecnologia VOD. Poiché i dati vengono trasmessi tramite protocollo HTTP, non è necessario considerare il problema del firewall o del proxy e il tempo di segmentazione dei file è molto breve. Il client può selezionare e cambiare rapidamente la velocità del codice per adattarsi alla riproduzione in diverse condizioni di larghezza di banda. Tuttavia, a causa delle caratteristiche tecniche di HLS, il suo ritardo è sempre superiore a quello del normale protocollo di live streaming.
In base alla comprensione di cui sopra, per ottenere il live streaming HTTP dal vivo, dobbiamo studiare e implementare le seguenti tecnologie chiave.
(1) Raccoglie i dati della sorgente video e della sorgente audio
(2) I dati originali sono codificati da H264 e AAC
(3) I dati video e audio sono impacchettati come pacchetti mpeg-ts
(4) Strategia di generazione della segmentazione HLS e file indice m3u8
2. Protocollo di trasporto HTTP
Tra questi, il primo e il secondo punto sono stati menzionati nel mio precedente articolo e l'ultimo punto è che possiamo usare il server HTTP esistente, quindi l'implementazione del terzo e del quarto punto è la chiave.
(1) Quadro del programma e attuazione
Attraverso l'analisi di cui sopra, la logica e il processo del codificatore live HLS sono sostanzialmente chiari: avviare rispettivamente il thread di codifica audio e video, realizzare l'acquisizione audio e video tramite DirectShow (o altra) tecnologia, quindi chiamare libx264 e libfaac rispettivamente per video e codifica audio. Dopo che i due thread di codifica codificano i dati audio e video in tempo reale, li memorizzano in un file di segmento di formato mpeg-ts secondo la strategia di partizione personalizzata. Quando viene memorizzato un file di segmento, il file di indice m3u8 viene aggiornato. Come mostrato nella figura seguente:
Nella figura sopra, dopo aver ricevuto i dati video e audio, hlsliveencoder deve prima determinare se la partizione corrente deve terminare e creare una nuova partizione per continuare la generazione continua della partizione TS. Va notato che la nuova frammentazione dovrebbe iniziare dal fotogramma chiave per evitare che il lettore decodifichi il fallimento. Il codice principale è il seguente:
Anche l'interfaccia di tsmuxer è relativamente semplice.
(2) Strategia di generazione del segmento HLS e m3u8
① Strategia di segmentazione
La strategia di segmentazione di HLS è fondamentalmente raccomandata per dividere ogni 10 secondi. Ovviamente, il tempo specifico dovrebbe essere contrassegnato in base alla durata effettiva della divisione
In generale, per motivi di cache e altri motivi, gli ultimi tre indirizzi di frammento vengono conservati nel file indice e aggiornati sotto forma di "finestra scorrevole".
② Introduzione del file m3u8
M3u8 è il file indice del live streaming HTTP. M3u8 può essere considerato come. Fondamentalmente, il file in formato M3U, la differenza è che il file m3u8 utilizza la codifica dei caratteri UTF-8.
Copia codice
# Extm3u L'intestazione del file M3U, deve essere inserita nella prima riga
# Numero di serie del primo segmento TS di ext-x-media-sequence
# Ext-x-targetduration la durata massima di ogni segmento TS
#Ext-x-allow-cache consente la cache
#Fine del file m3u8 ext-x-endlist
#Extinf informazioni extra, le informazioni di split ts, come durata, larghezza di banda, ecc
|
Inserisci l'email per ricevere una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanese
ar.fmuser.org -> Arabo
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaigiano
eu.fmuser.org -> Basco
be.fmuser.org -> bielorusso
bg.fmuser.org -> Bulgaro
ca.fmuser.org -> Catalano
zh-CN.fmuser.org -> Cinese (semplificato)
zh-TW.fmuser.org -> Cinese (Tradizionale)
hr.fmuser.org -> croato
cs.fmuser.org -> ceco
da.fmuser.org -> danese
nl.fmuser.org -> Olandese
et.fmuser.org -> Estone
tl.fmuser.org -> Filippino
fi.fmuser.org -> finlandese
fr.fmuser.org -> Francese
gl.fmuser.org -> Galiziano
ka.fmuser.org -> georgiano
de.fmuser.org -> tedesco
el.fmuser.org -> Greca
ht.fmuser.org -> Creolo haitiano
iw.fmuser.org -> Ebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandese
id.fmuser.org -> Indonesiano
ga.fmuser.org -> Irlandese
it.fmuser.org -> Italiano
ja.fmuser.org -> giapponese
ko.fmuser.org -> coreano
lv.fmuser.org -> Lettone
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedone
ms.fmuser.org -> Malese
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiano
pl.fmuser.org -> polacco
pt.fmuser.org -> portoghese
ro.fmuser.org -> Romeno
ru.fmuser.org -> Russo
sr.fmuser.org -> Serbo
sk.fmuser.org -> slovacco
sl.fmuser.org -> Sloveno
es.fmuser.org -> spagnolo
sw.fmuser.org -> Swahili
sv.fmuser.org -> svedese
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> Ucraino
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> Gallese
yi.fmuser.org -> Yiddish
FMUSER Wirless Trasmetti video e audio più facilmente!
Contatti
Indirizzo:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Cina 510620
Categorie
Newsletter