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
fond
MP4 est notre format vidéo courant et, souvent, lorsque nous lisons des vidéos de serveur, il s'agit directement de la source vidéo MP4 demandée. Mais en fait, ce n'est pas bon. Le fichier d'en-tête MP4 [ftyp + moov] est volumineux, et la lecture initiale doit télécharger le fichier d'en-tête complet et l'analyser, puis télécharger une certaine longueur de clip vidéo lisible à lire. De plus, à mesure que la taille de la vidéo augmente, le fichier d'en-tête continuera de croître et la durée de lecture initiale sera plus longue. Au vu de cette situation, une méthode qui peut accélérer l'analyse initiale de la vidéo est nécessaire. HLS est la solution proposée par Apple pour résoudre ce problème.
HLS
HLS est l'abréviation de HTTP Live Streaming. Il s'agit d'un protocole de transmission réseau multimédia en continu basé sur HTTP proposé par Apple. Il peut prendre en charge en même temps en direct et à la demande, ainsi que la multi-définition, la double piste audio et vidéo, les sous-titres et d'autres fonctions. Son principe est de diviser une vidéo entière en plusieurs petites vidéos, et la lecture complète est formée en épissant ces segments.
HLS est largement utilisé sur les terminaux mobiles. Les clients actuels qui prennent en charge le protocole HLS comprennent:
iOS 3.0 et supérieur, AVPlayer prend en charge nativement HLS
Android 3.0 et au-dessus
Adobe Flash Player 11.0 et supérieur
Son principe général est le suivant:
1. Collectez l'audio et la vidéo
2. Encodez l'audio et la vidéo sur le serveur
3. Après l'encodage, remettez-le au Stream Segmenter sous forme de flux de transport MPEG-2
4. Le slicer crée un fichier d'index et une liste de lecture ts, le fichier d'index est utilisé pour indiquer la position de l'audio et de la vidéo, et ts est un véritable clip multimédia
5. Mettez les ressources de l'étape précédente sur le serveur HTTP
6. Le client demande le fichier d'index pour la lecture, et le contenu de lecture peut être trouvé via le fichier d'index
M3U8
Une étape clé pour réaliser HLS est la quatrième étape ci-dessus, à savoir l'organisation des fichiers d'index et des listes de lecture ts. Le format M3U8 est utilisé ici. M3U8 est la version Unicode de M3U, 8 signifie que le codage UTF-8 est utilisé, et M3U et M3U8 sont des formats de fichier pour les listes multimédia.
Description du format M3U8
Parfois, nous pouvons avoir besoin de modifier manuellement le contenu du fichier M3U8 à des fins de test ou dans certains cas particuliers, nous devons donc avoir une certaine compréhension de son format. La définition de ce format est écrite dans le document RFC 8216. Voici quelques remarques:
Les fichiers M3U8 doivent être encodés en UTF-8 et ne peuvent pas utiliser l'ordre des octets de la marque d'ordre des octets (BOM) et ne peuvent pas contenir de caractères de contrôle utf-8 (U + 0000 ~ U_001F et U + 007F ~ u + 009F)
Chaque ligne du contenu du fichier M3U8 est soit une ligne vide, un URI ou une chaîne commençant par #, et aucun caractère vide ne peut apparaître.
Les balises intégrées sont toutes des chaînes commençant par #EXT et sont sensibles à la casse.
URI est le chemin du contenu, qui peut être un chemin relatif ou un chemin absolu
Fichier de liste maître M3U8
Le fichier d'index principal M3U8 est généralement utilisé pour spécifier plusieurs sources d'index. Analysons d'abord le contenu du fichier principal m3u8 hls_vod_mvp.m3u8, sa tête est comme ça
Format d'en-tête
#EXTM3U
# VERSION EXT-X: 7
# EXT-X-INDEPENDENT-SEGMENTSCopier le code
# EXTM3U indique que le fichier est au format M3U et que tous les fichiers au format M3U doivent placer le contenu sur la première ligne.
# EXT-X-VERSIOn indique la version compatible de la playlist, qui est actuellement 7.
# EXT-X-INDEPENDENT-SEGMENTS Cette balise indique que tous les échantillons de média d'un segment de média peuvent être décodés indépendamment sans s'appuyer sur d'autres informations de segment de média.
Format des sous-titres
Le contenu ci-dessous est quelques légendes, le contenu des légendes n'est pas nécessaire.
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / eng / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / engc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpn / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpnc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zho / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zhoc / prog_index.m3u8 "Copier le code
# EXT-X-MEDIA est utilisé pour spécifier des ressources de liste de médias multilingues du même contenu.
TYPE est le type de ressource et les contenus facultatifs sont: AUDIO, VIDEO, SOUS-TITRES, CLOSED-CAPTIONS.
Le contenu ci-dessus définit TYPE = SUBTITLES, qui est le type de sous-titre.
GROUP-ID est le groupe auquel appartient la traduction multilingue et est un paramètre obligatoire
NAME correspond aux informations de description lisibles du flux de traduction, et cette valeur correspond au displayName de AVMediaSelectionOption.
DEFAULT, AUTOSELECT, FORCED sont trois valeurs BOOL correspondant au fait que le flux de traduction est sélectionné par défaut si les informations nécessaires sont manquantes. Le flux de lecture est lu lorsque l'utilisateur n'affiche pas les paramètres. FORCED n'est valide que pour le type de sous-titre et est utilisé pour marquer la sélection automatique actuelle du flux de traduction. .
LANGUAGE est utilisé pour spécifier le type de langue, qui est défini en fonction du [code de langue ISO 639] (https://www.w3.org/WAI/ER/WD-AERT/iso639.htm "Code de langue ISO 639"). Lorsque le lecteur par défaut du système sélectionne les sous-titres, le nom de la liste de sous-titres affichée est défini en fonction de cette valeur.
L'URI correspond aux informations de localisation de la ressource, où elles correspondent à un fichier M3U8 sous-titré. subtitles / fra / prog_index.m3u8 est un chemin relatif,
Grâce aux informations ci-dessus, nous pouvons analyser la signification du contenu ci-dessus comme suit: La vidéo actuelle prend en charge trois sous-titres: anglais, japonais et chinois. Mais chaque langue a deux messages EXT-X-MEDIA. La différence entre eux est le regroupement, l'un est groupé en sous-marins et l'autre est groupé en sous-C. Pourquoi y a-t-il deux groupes? J'en parlerai plus tard.
Format vidéo
Regardez à nouveau, pour l'index du contenu vidéo:
#EXT-X-STREAM-INF:BANDWIDTH=827299,AVERAGE-BANDWIDTH=747464,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970,AUDIO="program_audio",SUBTITLES=" subs"
0640 / 0640.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=360849,AVERAGE-BANDWIDTH=320932,CODECS="avc1.64001f",RESOLUTION=640x360,URI="0640/0640_I-Frame.m3u8"Copy code
EXT-X-STREAM-INF: cet attribut spécifie une source de sauvegarde, c'est-à-dire le chemin de lecture vidéo et certaines informations vidéo. Voici la configuration du contenu correspondant: BANDWIDTH est le débit binaire maximal, 827299 est 827299bit / s, qui est le temps de pointe le plus élevé Consomme 101 Ko de trafic par seconde.
MOYENNE-BANDWIDTH est le débit binaire moyen, 747464
CODECS est des informations de codage, avc1.64001f, mp4a.40.2, avc représente le format de codage h264, le 64001f suivant est le paramètre de codage représenté par hexadécimal, 64, 00, 1f représentent respectivement trois valeurs de paramètres différentes. mp4a est un format de codage audio, et le 40.2 suivant représente les paramètres de codage audio.
RESOLUTION est la résolution vidéo. La résolution actuelle de la source vidéo est de 640x360.
FRAME-RATE est la fréquence d'images maximale, 29.970 représente la fréquence d'images maximale de la lecture en cours est de 29.970 images par seconde.
AUDIO est le groupe audio et program_audio est le nom du groupe audio correspondant.
SUBTITLES indique le groupe de sous-titres correspondant et subs est le nom du groupe de sous-titres correspondant. Les informations de sous-titres ci-dessus ont un ID de GROUPE, et cette valeur lui correspond.
URI est le chemin du contenu, 0640 / 0640.m3u8 correspond au chemin du fichier m3u8 de la source vidéo. Cela peut être vu dans les informations de capture de paquets.
Sous EXT-X-STREAM-INF se trouve EXT-XI-FRAME-STREAM-INF, qui représente l'image I (image clé) de la ressource multimédia contenue dans le fichier de liste de lecture. Étant donné que l'image I n'est qu'une image, elle ne contient pas de contenu audio et les paramètres restants sont cohérents avec le format du contenu vidéo.
Après cela, il existe des sources vidéo correspondant à différentes résolutions, 1920x1080, 1280x720, 960x540, 480x270. Étant donné que HLS changera automatiquement la résolution en fonction de la situation du réseau, plusieurs résolutions sont généralement préparées pour la sélection. Selon l'analyse des données capturées, le premier segment joué a une résolution de 640, le second à 8 segments après cela ont une résolution de 480, puis il est commuté à une résolution de 640.
format audio
En regardant vers le bas se trouve l'index de l'audio correspondant
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio", LANGUAGE = "eng", NAME = "Alternate Audio", AUTOSELECT = YES, DEFAULT = YES, URI = "audio1 / audio1.m3u8" Copier Code
# EXT-X-MEDIA est apparu ci-dessus, mais n'a pas mentionné la liste pour plusieurs langues.
TYPE = AUDIO, cette fois le type est audio.
GROUP-ID est l'ID de groupe, correspondant au contenu AUDIO dans EXT-X-STREAM-INF.
URI = audio1 / audio1.m3u8 correspond au chemin audio.
Sources alternatives de différents formats d'encodage
Dans le fichier principal M3U8, nous pouvons également voir une source vidéo de résolution 640, qui n'est pas la même que la résolution 640 ci-dessus. Son contenu est comme ceci:
#EXT-X-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,VIDEO-RANGE=SDR,CODECS="hvc1.2.4.H150.B0,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970 ,AUDIO="program_audio_0",SUBTITLES="subsC"
0640c / prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,CODECS="hvc1.2.4.H150.B0",RESOLUTION=640x360,URI="0640c/iframe_index.m3u8"
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio_0", LANGUAGE = "eng", NAME = "Alternate Audio", AUTOSELECT = YES, DEFAULT = YES, URI = "audioc / prog_index.m3u8" Copier Code
Le format d'encodage CODECS est hvc1.2.4.H150.B0, mp4a.40.2, le format d'encodage audio n'a pas changé, mais le format d'encodage vidéo a changé. hvc1 est l'un des formats d'encodage HEVC (H265). Il s'agit d'un format d'encodage vidéo de nouvelle génération lancé par Apple. En raison de problèmes de compatibilité, de nombreux clients ne peuvent pas analyser ce format, il n'est donc pas très populaire. Les sources vidéo de ce format apparaissent. Cela devrait être une sauvegarde ici. En comparant deux contenus de même résolution, on constate que le débit binaire du format hvc1 est supérieur à celui du format avc1, ce qui montre que le contenu de hvc1 est plus grand et que le taux de compression de avc1 est plus élevé sous la même résolution.
Correspondant à la source vidéo au format hvc1, son regroupement du contenu des sous-titres et le regroupement du contenu audio ont également changé, c'est pourquoi les sous-titres ci-dessus ont deux copies de la même langue, et ils correspondent aux sources vidéo aux formats avc1 et hvc1.
Ceci est la liste principale de M3U8. L'audio et la vidéo de ce contenu sont traités séparément, mais ils peuvent également être combinés.
Fichier M3u8 contenant des informations sur le média
Prenons le fichier 0640.m3u8 comme exemple
#EXTM3U
# VERSION EXT-X: 4
# EXT-X-TARGETDURATION: 7
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-PLAYLIST-TYPE: VOD
#EXTINF: 6.006,
0640_00001.ts
#EXTINF: 6.006,
0640_00002.ts
#EXTINF: 6.006,
0640_00003.ts
....
# EXT-X-ENDLISTCopier le code
# EXTM3U et # EXT-X-VERSION sont respectivement l'en-tête du fichier M3U et le numéro de version compatible. Ce format est une version antérieure, donc le numéro de version est inférieur au fichier principal.
EXT-X-TARGETDURATION représente la durée maximale de chaque segment de lecture, 7 représente 7 secondes, et les segments de ce répertoire ne peuvent pas dépasser 7 s.
EXT-X-MEDIA-SEQUENCE représente le numéro de séquence du premier segment de la liste de lecture, et 1, signifie que le segment de lecture commence à 1.
#EXTINF représente la durée du segment, 6.006 signifie que le segment actuel est 6.006s. Les informations sur la durée totale de la vidéo sont obtenues en accumulant cette valeur.
0640_00001.ts est le chemin relatif du clip. Le fichier ts représente un morceau de vidéo ou audio, et il peut être au format ts, mp4, aac et autres. Parce qu'il a été spécifié pour ouvrir à partir de 1
|
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