FMUSER Wirless Transmet vídeo i àudio més fàcil!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> Albanès
ar.fmuser.org -> Àrab
hy.fmuser.org -> Armeni
az.fmuser.org -> Azerbaidjanès
eu.fmuser.org -> basc
be.fmuser.org -> bielorús
bg.fmuser.org -> Bulgària
ca.fmuser.org -> català
zh-CN.fmuser.org -> Xinès (simplificat)
zh-TW.fmuser.org -> Xinès (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> txec
da.fmuser.org -> Danès
nl.fmuser.org -> Holandès
et.fmuser.org -> estonià
tl.fmuser.org -> filipí
fi.fmuser.org -> finès
fr.fmuser.org -> Francès
gl.fmuser.org -> gallec
ka.fmuser.org -> georgià
de.fmuser.org -> alemany
el.fmuser.org -> Grec
ht.fmuser.org -> crioll haitià
iw.fmuser.org -> Hebreu
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandès
id.fmuser.org -> indonesi
ga.fmuser.org -> irlandès
it.fmuser.org -> Italià
ja.fmuser.org -> japonès
ko.fmuser.org -> coreà
lv.fmuser.org -> Letó
lt.fmuser.org -> Lituània
mk.fmuser.org -> macedoni
ms.fmuser.org -> Malai
mt.fmuser.org -> maltès
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> Polonès
pt.fmuser.org -> Portuguès
ro.fmuser.org -> Romanès
ru.fmuser.org -> rus
sr.fmuser.org -> serbi
sk.fmuser.org -> Eslovac
sl.fmuser.org -> Eslovènia
es.fmuser.org -> Castellà
sw.fmuser.org -> Suahili
sv.fmuser.org -> Suec
th.fmuser.org -> Tai
tr.fmuser.org -> turc
uk.fmuser.org -> ucraïnès
ur.fmuser.org -> urdú
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> gal·lès
yi.fmuser.org -> Yiddish
Fa uns dies, vaig dedicar una estona a estudiar la tecnologia de transmissió en directe HTTP (HLS) i implementar un codificador HLS, hlsliveencoder, escrit en C + +. La seva funció és capturar la càmera i el micròfon, la codificació de vídeo H.264 en temps real i la codificació d’àudio aac i, d’acord amb l’especificació del protocol HLS, generar un fitxer TS estàndard segmentat i un fitxer d’índex m3u8. A través del meu hlsliveencoder i del servidor HTTP de tercers (com ara nginx), vam realitzar correctament la transmissió en directe d’HTTP i vam passar la prova a l’iPhone. Aquí escriuré alguns dels guanys.
1. Anàlisi de la tecnologia HLS
La transmissió en directe HTTP (HLS) és un protocol de transport de mitjans de transmissió basat en HTTP implementat per Apple Inc., que pot realitzar multimèdia de transmissió en directe i sota demanda. S’utilitza principalment en el sistema IOS per proporcionar solucions d’àudio i vídeo en directe i sota demanda per a dispositius IOS (com iPhone i iPad). HLS sota demanda és bàsicament un HTTP segmentat comú sota demanda. La diferència és que els seus segments són molt reduïts. Per tal de realitzar HLS sota demanda, la clau és segmentar els fitxers multimèdia. Actualment, hi ha moltes eines de codi obert que es poden utilitzar. No ho parlaré aquí, només parlaré de tecnologia de transmissió en directe HLS.
En comparació amb els protocols de transmissió en directe comuns, com ara el protocol RTMP, el protocol RTSP, el protocol MMS, etc., la diferència més gran de la transmissió en directe HLS és que el client en directe no obté un flux de dades complet. El protocol HLS emmagatzema el flux de dades en directe com a fitxers multimèdia continus, a curt termini i llargs (format mpeg-ts) al costat del servidor, mentre que el costat del client descarrega i reprodueix contínuament aquests fitxers petits, ja que el servidor sempre genera fitxers petits nous a partir de les últimes dades en directe, de manera que el costat del client només necessita reproduir els fitxers obtinguts del servidor per poder realitzar-los. Es pot veure que HLS realitza bàsicament retransmissions en directe mitjançant tecnologia VOD. Com que les dades es transmeten a través del protocol HTTP, no cal tenir en compte el problema del tallafoc o del servidor intermediari, i el temps de segmentació dels fitxers és molt curt. El client pot seleccionar i canviar ràpidament la velocitat del codi per adaptar-se a la reproducció en diferents condicions d’amplada de banda. No obstant això, a causa de les característiques tècniques de HLS, el seu retard sempre és superior al del protocol de transmissió en directe ordinari.
Segons l'enteniment anterior, per aconseguir una transmissió en directe HTTP en directe, hem d'estudiar i implementar les següents tecnologies clau.
(1) Recopileu les dades de la font de vídeo i la font d'àudio
(2) Les dades originals estan codificades per H264 i AAC
(3) Les dades de vídeo i àudio s’envien com a paquets mpeg-ts
(4) Estratègia de generació de segmentació HLS i fitxer d'índex m3u8
2. Protocol de transport HTTP
Entre ells, el primer i el segon punt s’han esmentat al meu article anterior, i l’últim punt és que podem utilitzar el servidor HTTP existent, de manera que la implementació del tercer i quart punt és la clau.
(1) Marc i implementació del programa
Mitjançant l’anàlisi anterior, la lògica i el procés del codificador en viu HLS són bàsicament clars: inicieu el fil de codificació d’àudio i vídeo respectivament, realitzeu l’adquisició d’àudio i vídeo mitjançant la tecnologia DirectShow (o una altra) i, a continuació, truqueu libx264 i libfaac respectivament per a vídeo i codificació d'àudio. Després que els dos fils de codificació codifiquen les dades d'àudio i vídeo en temps real, les emmagatzemen en un fitxer de segment en format mpeg-ts segons l'estratègia de partició personalitzada. Quan s'emmagatzema un fitxer de segment, s'actualitza el fitxer d'índex m3u8. Com es mostra a la figura següent:
A la figura anterior, després de rebre les dades de vídeo i àudio, hlsliveencoder primer ha de determinar si ha de finalitzar la partició actual i crear una nova partició per continuar la generació contínua de partició TS. Cal tenir en compte que la nova fragmentació hauria de començar des del marc clau per evitar que el jugador fallés en la descodificació. El codi bàsic és el següent:
La interfície de tsmuxer també és relativament senzilla.
(2) Estratègia de generació de segments HLS i m3u8
① Estratègia de segmentació
Es recomana bàsicament dividir l'estratègia de segmentació de HLS cada 10 segons. Per descomptat, el temps específic s’ha de marcar d’acord amb la durada real de la divisió
En termes generals, per motius de memòria cau i altres motius, les tres darreres adreces de fragments es conserven al fitxer d'índex i s'actualitzen en forma de "finestra lliscant".
② Introducció del fitxer m3u8
M3u8 és el fitxer d'índex de transmissió en directe HTTP. M3u8 es pot considerar com. El fitxer en format M3U bàsicament, la diferència és que el fitxer m3u8 utilitza la codificació de caràcters UTF-8.
Còpia de codi
La capçalera del fitxer # Extm3u M3U s'ha de col·locar a la primera línia
# Número de sèrie del primer segment TS de ext-x-media-sequence
# Ext-x-targetduration: la durada màxima de cada segment de TS
#Dext ext-x-allow-cache permet la memòria cau
#Fin del fitxer m3u8 ext-x-endlist
#Extinf informació addicional, la informació de ts dividits, com ara durada, amplada de banda, etc.
|
Introduïu el correu electrònic per obtenir una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> Albanès
ar.fmuser.org -> Àrab
hy.fmuser.org -> Armeni
az.fmuser.org -> Azerbaidjanès
eu.fmuser.org -> basc
be.fmuser.org -> bielorús
bg.fmuser.org -> Bulgària
ca.fmuser.org -> català
zh-CN.fmuser.org -> Xinès (simplificat)
zh-TW.fmuser.org -> Xinès (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> txec
da.fmuser.org -> Danès
nl.fmuser.org -> Holandès
et.fmuser.org -> estonià
tl.fmuser.org -> filipí
fi.fmuser.org -> finès
fr.fmuser.org -> Francès
gl.fmuser.org -> gallec
ka.fmuser.org -> georgià
de.fmuser.org -> alemany
el.fmuser.org -> Grec
ht.fmuser.org -> crioll haitià
iw.fmuser.org -> Hebreu
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandès
id.fmuser.org -> indonesi
ga.fmuser.org -> irlandès
it.fmuser.org -> Italià
ja.fmuser.org -> japonès
ko.fmuser.org -> coreà
lv.fmuser.org -> Letó
lt.fmuser.org -> Lituània
mk.fmuser.org -> macedoni
ms.fmuser.org -> Malai
mt.fmuser.org -> maltès
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> Polonès
pt.fmuser.org -> Portuguès
ro.fmuser.org -> Romanès
ru.fmuser.org -> rus
sr.fmuser.org -> serbi
sk.fmuser.org -> Eslovac
sl.fmuser.org -> Eslovènia
es.fmuser.org -> Castellà
sw.fmuser.org -> Suahili
sv.fmuser.org -> Suec
th.fmuser.org -> Tai
tr.fmuser.org -> turc
uk.fmuser.org -> ucraïnès
ur.fmuser.org -> urdú
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> gal·lès
yi.fmuser.org -> Yiddish
FMUSER Wirless Transmet vídeo i àudio més fàcil!
Contacte
Adreça:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Xina 510620
Categories
Newsletter