HLS ou MP4 ?
Lorsque vous utilisez le nouveau Brightcove Player, nous vous recommandons de choisir ou de créer un profil d'ingeste avec des formats associés HLS et MP4 afin d'atteindre le plus grand nombre d'appareils et de navigateurs. Ce tableau montre comment le joueur détermine, au moment de l'exécution, quel format associé sera joué sur un navigateur particulier.
Type de navigateur | Technologie de lecture utilisée par défaut |
---|---|
Desktop Chrome 34+, Desktop Firefox 42+, Edge et Chrome 34+ sur Android 5.0+ | HLS basé sur HTML (utilisant MSE) |
Ordinateur de bureau (macOS) Safari, Mobile (iOS) Safari | HLS natif (implémenté par navigateur) |
Les anciens Firefox et Chrome | HLS basé sur Flash ; nécessite Flash 10.3+ (reviendra à MP4 si Flash est désactivé) |
IE 11 sur Windows 8.1+ | HLS basé sur HTML (utilisant MSE) |
Sélection de rendu HLS et DASH
HLS et TIRET la vidéo est divisée en segments. Elles durent généralement environ 10 secondes, mais elles peuvent être plus longues ou plus courtes. Si la bande passante et la résolution sont connues, le joueur choisira le rendu en fonction de ces critères. Si la résolution ou la bande passante est inconnue (par exemple, lors de la création d'un lecteur avec display:none
), le lecteur démarrera avec le rendu le plus proche de 0,5 Mo / s (équivalent à 4000 kbs). Sur les limites du segment, il passe à un format associé supérieur ou inférieur décrit dans le texte et les images ci-dessous.
HLS et DASH essaient d'assurer la meilleure qualité d'expérience de visualisation possible, compte tenu de la bande passante et des encodages disponibles, tout en tenant compte de la taille du joueur. Cela ne signifie pas toujours que l'on utilise le rendu le plus élevé disponible. Par exemple, si le lecteur est 300px par 150px, ce serait un gaspillage de bande passante pour télécharger un flux 4k.
Par défaut, le joueur tente de charger la variante de débit le plus élevé qui est inférieure à la bande passante du segment la plus récente, avec une condition : s'il existe plusieurs variantes dont les dimensions sont supérieures à la taille actuelle du lecteur, il ne changera qu'une taille supérieure à la taille actuelle du lecteur.
Pendant la lecture, le joueur passe à un rendu supérieur ou inférieur basé sur l'algorithme suivant. Les entrées de cet algorithme sont les suivantes :
- Bande passante disponible
- Dimensions du joueur
Présentation de l'algorithme de haut niveau
- Supprimez tous les formats associés dont le débit est supérieur à la bande passante mesurée.
- Trier les formats associés restants par résolution (nombre de lignes horizontales) de haut à bas.
- Pointez sur celui qui est le plus proche des dimensions du joueur.
- Choisissez celui qui est supérieur à celui-ci.
Le processus est illustré ci-dessous :
- Chaque fois qu'un nouveau segment est téléchargé, le débit de téléchargement est calculé en fonction de la taille du segment et du temps nécessaire au téléchargement :
- Tous les formats associés ayant un débit binaire supérieur à la nouvelle mesure sont filtrés :
- Tous les formats associés qui sont plus grands que les dimensions du lecteur actuel sont filtrés :
- Une baisse de qualité significative n'est pas souhaitée simplement parce que votre joueur est un pixel trop petit, donc nous ajoutons à la prochaine résolution la plus élevée. Le rendu de débit le plus élevé qui reste est celui qui est utilisé :
S'il s'avère qu'aucun format associé n'est acceptable sur la base du filtrage décrit ci-dessus, le premier codage répertorié dans la liste de lecture principale sera utilisé.
Si vous souhaitez que votre joueur utilise un ensemble de priorités différent, il est possible de remplacer complètement la logique de sélection du rendu. Par exemple, vous pouvez toujours choisir le rendu le plus approprié par résolution, même si cela peut signifier plus de décrochages pendant la lecture. Voir la documentation sur player.hls.selectPlaylist pour plus de détails.
Sélection du rendu MP4
Si vous exécutez sur un appareil mobile et jouez un MP4 (selon les règles énumérées ci-dessus), le lecteur choisira le MP4 dont le débit binaire est le plus proche de 0,5 Mo/s. Si sur un ordinateur de bureau ou un ordinateur portable, il choisira celui qui est le plus proche de 3 Mo/s.
Sélection de piste audio
Le manifeste détermine la piste audio à charger en fonction de la piste vidéo choisie.
Exemple
playlist-1.m3u8
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="stereo",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="audio/stereo/en/128kbit.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="stereo",LANGUAGE="dubbing",NAME="Dubbing",DEFAULT=NO,AUTOSELECT=YES,URI="audio/stereo/none/128kbit.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="surround",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="audio/surround/en/320kbit.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="surround",LANGUAGE="dubbing",NAME="Dubbing",DEFAULT=NO,AUTOSELECT=YES,URI="audio/stereo/none/128kbit.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Deutsch",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="de",URI="subtitles_de.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",URI="subtitles_en.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Espanol",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="es",URI="subtitles_es.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Français",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="fr",URI="subtitles_fr.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=258157,CODECS="avc1.4d400d,mp4a.40.2",AUDIO="stereo",RESOLUTION=422x180,SUBTITLES="subs"
video/250kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=520929,CODECS="avc1.4d4015,mp4a.40.2",AUDIO="stereo",RESOLUTION=638x272,SUBTITLES="subs"
video/500kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=831270,CODECS="avc1.4d4015,mp4a.40.2",AUDIO="stereo",RESOLUTION=638x272,SUBTITLES="subs"
video/800kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1144430,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="surround",RESOLUTION=958x408,SUBTITLES="subs"
video/1100kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1558322,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="surround",RESOLUTION=1277x554,SUBTITLES="subs"
video/1500kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4149264,CODECS="avc1.4d4028,mp4a.40.2",AUDIO="surround",RESOLUTION=1921x818,SUBTITLES="subs"
video/4000kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=6214307,CODECS="avc1.4d4028,mp4a.40.2",AUDIO="surround",RESOLUTION=1921x818,SUBTITLES="subs"
video/6000kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=10285391,CODECS="avc1.4d4033,mp4a.40.2",AUDIO="surround",RESOLUTION=4096x1744,SUBTITLES="subs"
video/10000kbit.m3u8
Dans l'exemple ci-dessus, il existe deux groupes audio, stéréo et entourer. Il existe également 6 résolutions vidéo en 8 débits binaires:
- Les 3 débits inférieurs utilisent le stéréo groupe audio
- Les 5 débits plus élevés utilisent le entourer groupe audio
Les deux groupes audio ont deux flux avec une langue et des noms différents. Lorsque cela est présent, il apparaît comme une piste audio alternative dans un menu sur le lecteur.
Remarques
-
HLS ne permet pas d'adapter les flux audio dans un scénario audio démultiplexé. Ainsi, si vous avez différents groupes audio ou audio alternatif comme dans l'exemple ci-dessus, il n'est pas possible de spécifier plusieurs rendus de qualité de la stéréo ou des pistes surround.
Cependant, si la liste de lecture est uniquement audio, il est possible de le faire si l'audio est fourni via le
EXT-X-STREAM-INF
étiqueter. - Pour DASH, vous pouvez avoir de l'audio adaptatif, mais nous ne prenons actuellement pas en charge son adaptation, à moins qu'il ne s'agisse d'un manifeste audio uniquement. Nous choisissons un seul rendu associé au rendu vidéo. C'est le premier rendu audio que nous trouvons.