FMUSER Wirless transmet la vidéo et l'audio plus facilement!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanais
ar.fmuser.org -> arabe
hy.fmuser.org -> Armenian
az.fmuser.org -> azerbaïdjanais
eu.fmuser.org -> basque
be.fmuser.org -> biélorusse
bg.fmuser.org -> Bulgare
ca.fmuser.org -> catalan
zh-CN.fmuser.org -> chinois (simplifié)
zh-TW.fmuser.org -> Chinois (traditionnel)
hr.fmuser.org -> croate
cs.fmuser.org -> tchèque
da.fmuser.org -> danois
nl.fmuser.org -> Néerlandais
et.fmuser.org -> estonien
tl.fmuser.org -> Philippin
fi.fmuser.org -> finnois
fr.fmuser.org -> Français
gl.fmuser.org -> Galicien
ka.fmuser.org -> géorgien
de.fmuser.org -> allemand
el.fmuser.org -> Grec
ht.fmuser.org -> Créole haïtien
iw.fmuser.org -> hébreu
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hongrois
is.fmuser.org -> islandais
id.fmuser.org -> indonésien
ga.fmuser.org -> irlandais
it.fmuser.org -> Italien
ja.fmuser.org -> japonais
ko.fmuser.org -> coréen
lv.fmuser.org -> letton
lt.fmuser.org -> Lituanien
mk.fmuser.org -> macédonien
ms.fmuser.org -> malais
mt.fmuser.org -> maltais
no.fmuser.org -> Norwegian
fa.fmuser.org -> persan
pl.fmuser.org -> polonais
pt.fmuser.org -> portugais
ro.fmuser.org -> Roumain
ru.fmuser.org -> russe
sr.fmuser.org -> serbe
sk.fmuser.org -> slovaque
sl.fmuser.org -> Slovène
es.fmuser.org -> espagnol
sw.fmuser.org -> Swahili
sv.fmuser.org -> suédois
th.fmuser.org -> Thai
tr.fmuser.org -> turc
uk.fmuser.org -> ukrainien
ur.fmuser.org -> ourdou
vi.fmuser.org -> Vietnamienne
cy.fmuser.org -> Gallois
yi.fmuser.org -> Yiddish
Il y a quelques jours, j'ai passé du temps à étudier la technologie de streaming en direct HTTP (HLS) et à implémenter un encodeur HLS, hlsliveencoder, écrit en C ++. Sa fonction est de capturer la caméra et le microphone, le codage vidéo H.264 en temps réel et le codage audio AAC, et selon la spécification du protocole HLS, de générer un fichier TS standard segmenté et un fichier d'index m3u8. Grâce à mon hlsliveencoder et au serveur HTTP tiers (tel que nginx), nous avons réalisé avec succès la diffusion en direct de HTTP et passé le test sur l'iPhone. Je vais écrire quelques-uns des gains ici.
1. Analyse de la technologie HLS
Le streaming en direct HTTP (HLS) est un protocole de transport multimédia en continu basé sur HTTP mis en œuvre par Apple Inc., qui peut réaliser des contenus multimédias en direct et à la demande. Il est principalement utilisé dans le système IOS pour fournir des solutions audio et vidéo en direct et à la demande pour les appareils IOS (tels que l'iPhone et l'iPad). HLS à la demande est essentiellement un HTTP segmenté commun à la demande. La différence est que ses segments sont très petits. Afin de réaliser HLS à la demande, la clé est de segmenter les fichiers multimédias. À l'heure actuelle, il existe de nombreux outils open source qui peuvent être utilisés. Je n'en parlerai pas ici, je parlerai simplement de la technologie de diffusion en direct HLS.
Par rapport aux protocoles de diffusion en direct courants, tels que le protocole RTMP, le protocole RTSP, le protocole MMS, etc., la plus grande différence de la diffusion en direct HLS est que le client en direct n'obtient pas un flux de données complet. Le protocole HLS stocke le flux de données en direct sous forme de fichiers multimédias continus, à court terme et longs (format mpeg-ts) côté serveur, tandis que le côté client télécharge et lit en permanence ces petits fichiers, car le côté serveur génère toujours de nouveaux petits fichiers à partir de les dernières données en direct, de sorte que le côté client n'a besoin que de lire les fichiers obtenus à partir du serveur afin de réaliser le live. On peut voir que HLS réalise essentiellement la diffusion en direct au moyen de la technologie VOD. Étant donné que les données sont transmises via le protocole HTTP, il n'est pas nécessaire de considérer le problème du pare-feu ou du proxy, et le temps de segmentation des fichiers est très court. Le client peut rapidement sélectionner et changer le débit de code pour s'adapter à la lecture dans différentes conditions de bande passante. Cependant, en raison des caractéristiques techniques du HLS, son délai est toujours supérieur à celui du protocole de diffusion en direct ordinaire.
Selon la compréhension ci-dessus, pour réaliser la diffusion en direct HTTP en direct, nous devons étudier et mettre en œuvre les technologies clés suivantes.
(1) Collectez les données de la source vidéo et de la source audio
(2) Les données d'origine sont codées par H264 et AAC
(3) Les données vidéo et audio sont conditionnées sous forme de paquets mpeg-ts
(4) Stratégie de génération de segmentation HLS et fichier d'index m3u8
2. Protocole de transport HTTP
Parmi eux, les premier et deuxième points ont été mentionnés dans mon article précédent, et le dernier point est que nous pouvons utiliser le serveur HTTP existant, donc la mise en œuvre des troisième et quatrième points est la clé.
(1) Cadre du programme et mise en œuvre
Grâce à l'analyse ci-dessus, la logique et le processus de l'encodeur en direct HLS sont fondamentalement clairs: démarrez respectivement le fil de codage audio et vidéo, réalisez l'acquisition audio et vidéo via la technologie DirectShow (ou autre), puis appelez libx264 et libfaac respectivement pour la vidéo et codage audio. Une fois que les deux threads d'encodage ont encodé les données audio et vidéo en temps réel, ils les stockent dans un fichier segment au format mpeg-ts selon la stratégie de partition personnalisée. Lorsqu'un fichier segment est stocké, le fichier d'index m3u8 est mis à jour. Comme le montre la figure ci-dessous:
Dans la figure ci-dessus, après avoir reçu les données vidéo et audio, hlsliveencoder doit d'abord déterminer si la partition actuelle doit se terminer et créer une nouvelle partition pour continuer la génération continue de la partition TS. Il convient de noter que la nouvelle fragmentation doit commencer à partir de l'image clé pour éviter que le lecteur ne décode l'échec. Le code de base est le suivant:
L'interface de tsmuxer est également relativement simple.
(2) Stratégie de génération du segment HLS et m3u8
① Stratégie de segmentation
La stratégie de segmentation de HLS est fondamentalement recommandée pour fractionner toutes les 10 secondes. Bien sûr, le temps spécifique doit être marqué en fonction de la durée réelle de la séparation
D'une manière générale, pour des raisons de cache et pour d'autres raisons, les trois dernières adresses de fragments sont conservées dans le fichier d'index et mises à jour sous forme de "fenêtre glissante".
② Introduction du fichier m3u8
M3u8 est le fichier d'index de la diffusion en direct HTTP. M3u8 peut être considéré comme. Fichier au format M3U essentiellement, la différence est que le fichier m3u8 utilise le codage de caractères UTF-8.
Copier le code
# En-tête de fichier Extm3u M3U, doit être placé dans la première ligne
# Numéro de série du premier segment TS de ext-x-media-sequence
# Ext-x-targetduration la durée maximale de chaque segment TS
#Ext-x-allow-cache autorise-t-il le cache
#Fin du fichier m3u8 ext-x-endlist
#Extinf informations supplémentaires, les informations de split ts, telles que la durée, la bande passante, etc.
|
Entrez l'email pour avoir une surprise
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanais
ar.fmuser.org -> arabe
hy.fmuser.org -> Armenian
az.fmuser.org -> azerbaïdjanais
eu.fmuser.org -> basque
be.fmuser.org -> biélorusse
bg.fmuser.org -> Bulgare
ca.fmuser.org -> catalan
zh-CN.fmuser.org -> chinois (simplifié)
zh-TW.fmuser.org -> Chinois (traditionnel)
hr.fmuser.org -> croate
cs.fmuser.org -> tchèque
da.fmuser.org -> danois
nl.fmuser.org -> Néerlandais
et.fmuser.org -> estonien
tl.fmuser.org -> Philippin
fi.fmuser.org -> finnois
fr.fmuser.org -> Français
gl.fmuser.org -> Galicien
ka.fmuser.org -> géorgien
de.fmuser.org -> allemand
el.fmuser.org -> Grec
ht.fmuser.org -> Créole haïtien
iw.fmuser.org -> hébreu
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hongrois
is.fmuser.org -> islandais
id.fmuser.org -> indonésien
ga.fmuser.org -> irlandais
it.fmuser.org -> Italien
ja.fmuser.org -> japonais
ko.fmuser.org -> coréen
lv.fmuser.org -> letton
lt.fmuser.org -> Lituanien
mk.fmuser.org -> macédonien
ms.fmuser.org -> malais
mt.fmuser.org -> maltais
no.fmuser.org -> Norwegian
fa.fmuser.org -> persan
pl.fmuser.org -> polonais
pt.fmuser.org -> portugais
ro.fmuser.org -> Roumain
ru.fmuser.org -> russe
sr.fmuser.org -> serbe
sk.fmuser.org -> slovaque
sl.fmuser.org -> Slovène
es.fmuser.org -> espagnol
sw.fmuser.org -> Swahili
sv.fmuser.org -> suédois
th.fmuser.org -> Thai
tr.fmuser.org -> turc
uk.fmuser.org -> ukrainien
ur.fmuser.org -> ourdou
vi.fmuser.org -> Vietnamienne
cy.fmuser.org -> Gallois
yi.fmuser.org -> Yiddish
FMUSER Wirless transmet la vidéo et l'audio plus facilement!
Contactez-Nous
Adresse :
No.305 Chambre HuiLan Building No.273 Huanpu Road Guangzhou Chine 510620
Catégories
Newsletter