Livraison HLS / DASH : l'échelle, le packaging et le manifeste exacts que vous recevez
Cette page est la spécification, pas l'argumentaire. Tout ce qui suit est ce qu'une chaîne de la ligne HLS / DASH adaptatif produit réellement : le conteneur, l'échelle, la structure du manifeste, les pistes audio et de sous-titres, le DRM, l'authentification de l'origine et le comportement en cas de bascule. C'est ce qu'un intégrateur vérifie avant de signer, dans l'ordre où les questions arrivent.
De la source au manifeste
Chaque chaîne est captée une seule fois, sur le site principal le plus proche de sa source : liaison descendante satellite, flux de contribution d'un diffuseur, ou un playout que nous exploitons. Le flux de transport y est normalisé : fréquence d'images, niveau sonore et horloge sont remis au propre avant tout encodage, car c'est une source irrégulière qui casse une échelle adaptative, pas un manque de débit.
Un seul encodage produit toute l'échelle. Les quatre échelons partagent la même structure de GOP et la même cadence d'images IDR, alignée sur la frontière de segment : c'est ce qui permet à un lecteur de changer d'échelon entre deux segments sans coupure visible ni trou audio. L'audio est encodé une fois par langue et référencé par tous les échelons, si bien qu'un changement de vidéo ne remet jamais le son en mémoire tampon.
Le packaging est une passe CMAF unique : les mêmes segments MP4 fragmentés sont décrits par une playlist multivariante HLS et par un manifeste MPEG-DASH. Il n'y a ni second encodage ni seconde copie sur disque pour le DASH, et c'est pourquoi les deux manifestes accompagnent chaque chaîne sans supplément.
Depuis le packager, les segments sont publiés sur l'origine du site principal et servis par le point d'accès le plus proche du spectateur. Le packaging, le chiffrement et l'enregistrement se font tous sur le site principal ; les points d'accès ne font que du cache. C'est la frontière à garder en tête pour la section sur la bascule : un point d'accès est remplaçable à tout instant, une origine va par deux.
L'échelle adaptative
| Échelon | Résolution | IPS | Débit vidéo | Profil de codec |
|---|---|---|---|---|
| 1 | 1920 × 1080 | 25 | 4000 kbps | H.264 High @ L4.0 |
| 2 | 1280 × 720 | 25 | 1800 kbps | H.264 High @ L3.1 |
| 3 | 960 × 540 | 25 | 1100 kbps | H.264 Main @ L3.1 |
| 4 | 640 × 360 | 25 | 600 kbps | H.264 Main @ L3.0 |
L'échelle ci-dessus est celle appliquée par défaut à une chaîne HD à plein débit, des besoins particuliers sont possibles. Les échelons sont à débit constant plafonné plutôt qu'en VBR libre : une scène chargée ne peut donc pas éjecter un spectateur mobile de l'échelon supérieur, et un opérateur comme un établissement peuvent dimensionner un lien à partir du tableau plutôt qu'à partir d'une moyenne.
Rien n’est figé pour autant. Une chaîne destinée à des cabines ou à des liens étroits peut être ramenée aux deux échelons inférieurs, et lorsque tous les appareils cibles savent le décoder, un échelon HEVC peut venir s’ajouter à côté du H.264. Demandez-le par chaîne et nous indiquons l’échelle dans la note de livraison.
L'audio ajoute 128 kbit/s par langue à l'échelon vidéo en cours de lecture, et les sous-titres quelques kbit/s de plus. Un spectateur seul sur l'échelon supérieur avec une seule piste audio consomme donc environ 4,1 Mbit/s, pas 4.
Spécification de packaging et de livraison
| Conteneur | CMAF (fMP4), un seul jeu de segments derrière les deux manifestes ; segments MPEG-TS sur demande |
|---|---|
| Manifestes | HLS (EXT-X-VERSION 7 ou supérieure) et MPEG-DASH (MPD dynamique), depuis un seul packager |
| Codec vidéo | H.264 High et Main, 8 bits 4:2:0 ; un échelon supérieur en HEVC par chaîne sur demande |
| Codec audio | AAC-LC stéréo à 128 kbit/s par langue ; E-AC-3 source conservé lorsque l'ayant droit et les appareils cibles le permettent |
| Segments | 4 s par défaut, 2 s sur demande ; images IDR alignées sur tous les échelons |
| Fenêtre de direct | 3 minutes de segments dans chaque playlist média, EXT-X-PROGRAM-DATE-TIME sur chaque segment |
| Latence | 4 - 8 s de bout en bout en HLS standard avec des segments de 4 s |
| Faible latence | LL-HLS avec EXT-X-PART et rechargement bloquant de la playlist, activé chaîne par chaîne ; la durée des parties et la latence cible qui en résulte sont convenues au regard de la source de la chaîne, et non annoncées de façon générique |
| Replay | Option Cloud DVR : une fenêtre glissante de 7 jours adressable comme une playlist VOD, 30 jours sur demande |
| DRM | Widevine et PlayReady (CENC) et FairPlay (CBCS) depuis notre propre serveur de licences, EUR 19 par chaîne et par mois |
| Authentification | Jeton, URL signée ou mTLS sur l'origine, avec une liste d'autorisation CORS par client |
| Origines | Deux sites principaux par chaîne parmi 6, 99.99% de disponibilité de l'origine |
| Livraison | 195 points de présence dans 121 pays, ou votre propre CDN tirant depuis notre origine |
| Trafic sortant | EUR 0.09 par Go sur notre CDN, rien de mesuré sur le vôtre |
L'espace d'URL
Les points de terminaison sont délivrés par client sur un nom d'hôte qui nous appartient, ou sur le vôtre lorsque votre CDN se place devant l'origine. L'identifiant de chaîne est celui du catalogue : une URL de manifeste se construit donc à partir d'une commande, sans nous demander de liste.
Tout ce qui se trouve sous la playlist multivariante est découvrable depuis celle-ci. Vous n'avez jamais à fabriquer vous-même l'URL d'un échelon, d'une piste audio ou d'un sous-titre. Ces chemins sont documentés parce que les intégrateurs en ont besoin pour leurs règles de cache, leurs règles WAF et l'analyse des journaux, pas parce qu'un lecteur en aurait besoin.
/live/{channel}/master.m3u8Playlist multivariante : tous les échelons vidéo, toutes les pistes audio, tous les groupes de sous-titres./live/{channel}/{rung}/index.m3u8Playlist média par échelon : segment d'initialisation fMP4, puis la fenêtre de direct glissante./live/{channel}/audio/{lang}.m3u8Une piste audio par langue, référencée depuis la playlist multivariante par EXT-X-MEDIA./live/{channel}/text/{lang}.m3u8WebVTT segmenté par langue de sous-titrage, sur les mêmes frontières de segment que la vidéo./live/{channel}/manifest.mpdManifeste MPEG-DASH sur les mêmes segments, pour les lecteurs qui le préfèrent./dvr/{channel}/{from}/{to}.m3u8Fenêtre de replay et de reprise au début sous forme de playlist VOD, avec l'option Cloud DVR./licence/{widevine|playready|fairplay}Points de licence, un par système DRM, appelés avec le jeton que votre plateforme délivre.
Audio, sous-titres et métadonnées
Une chaîne conserve ce que le diffuseur envoie. Chaque piste audio présente à la captation est encodée et publiée comme une piste distincte, avec son code de langue, son rôle et son indicateur par défaut, plutôt que remultiplexée vers une seule langue pour économiser du débit. Lorsque la source porte une audiodescription ou une piste en version originale, elle arrive aussi comme piste sélectionnable.
Les sous-titres sont convertis plutôt que supprimés. Les sous-titres DVB et les pages télétexte deviennent du WebVTT segmenté pour le HLS et de l'IMSC1 pour le DASH ; les sous-titres CEA-608/708 portés dans la vidéo sont en outre transmis tels quels, car certains appareils certifiés ne restituent que ceux-là. Ce qu'une chaîne donnée porte dépend de ce que le diffuseur transmet, et nous le précisons chaîne par chaîne.
Les métadonnées de programmes viennent du même guide que le flux EPG : 14 jours en avant et 7 jours en arrière, dans jusqu'à 9 langues, en XMLTV ou en JSON via REST. Le minutage des segments y est rattaché par EXT-X-PROGRAM-DATE-TIME, et c'est ce qui fait qu'une demande de reprise au début tombe sur une frontière de programme et non sur une frontière de segment.
- Une piste audio par langue, AAC-LC stéréo à 128 kbit/s, avec code de langue
- Conversion des sous-titres DVB et du télétexte en WebVTT pour le HLS et en IMSC1 pour le DASH
- CEA-608/708 transmis tels quels pour les appareils qui l'exigent
- EXT-X-PROGRAM-DATE-TIME sur chaque segment, à l'heure réelle
- EPG dans jusqu'à 9 langues, XMLTV ou JSON, à partir de EUR 9 par chaîne
- Marqueurs SCTE-35 préservés sur demande, pour les chaînes dont la source les porte
DRM, jetons et CORS
Le DRM est appliqué dans le packager, et non ajouté après coup. Les mêmes segments CMAF sont chiffrés pour le CENC (Widevine, PlayReady) et pour le CBCS (FairPlay), les clés tournent selon la période que vous choisissez, et les licences sont délivrées par notre propre serveur de licences : aucun contrat DRM tiers au milieu.
Les droits d'accès restent les vôtres. Votre lecteur présente le jeton que votre plateforme délivre déjà à ses abonnés, ou nous appelons votre point d'autorisation avant de délivrer une licence. La politique de lecture, protection de sortie, niveau HDCP, territoire, flux simultanés, est définie chaîne par chaîne et appliquée à la délivrance de la licence, pas seulement dans le manifeste.
L'accès au manifeste lui-même est une question distincte du DRM, et elle vaut aussi pour les chaînes en clair. Nous prenons en charge un jeton de courte durée sur la playlist accompagné d'un préfixe signé de durée plus longue pour les segments, de simples URL signées, ou du mTLS entre votre CDN et notre origine. Les durées de validité, la rotation du secret et la liste d'autorisation CORS sont réglées par client : contrairement à l'échelle, nous ne publions pas de valeur par défaut, parce qu'une valeur raisonnable dépend de la capacité de votre lecteur à renouveler en cours de session.
- Widevine (L1/L3), PlayReady (SL2000/SL3000) et FairPlay Streaming
- CENC et CBCS depuis une seule passe de packaging CMAF
- Rotation des clés par chaîne et par période
- Licence délivrée contre votre jeton, ou via un rappel vers votre API de droits d'accès
- Chiffrement HLS AES-128 lorsqu'un ayant droit demande du chiffrement plutôt que du DRM
- Access-Control-Allow-Origin limité aux origines applicatives que vous nommez
- Politique géographique appliquée au point d'accès et à la délivrance de la licence, par chaîne
Origines, bascule et lecteurs
Chaque chaîne est packagée sur deux sites principaux, indépendamment, à partir de deux captations. Les deux publient le même espace d'URL : une bascule n'est donc pas un reprovisionnement, la seconde origine répond aux mêmes chemins avec les mêmes noms de segments et les mêmes clés, et un lecteur qui recharge une playlist est simplement servi ailleurs.
Sur notre CDN, la bascule se joue sous l'entrée en anycast et les points d'accès se rattachent au site principal joignable, avec protection de l'origine pour qu'un segment ne soit tiré qu'une fois par point d'accès. Si vous exploitez votre propre CDN, vous configurez les deux noms d'hôte d'origine en primaire et en secours. Les noms de segments concordent, donc un cache rempli depuis une origine reste valable face à l'autre.
Pour les lecteurs qui le gèrent, nous pouvons aussi publier des variantes redondantes dans la playlist multivariante, pointant vers la seconde origine. C'est l'option ceinture et bretelles : elle ne coûte rien mais double la liste des variantes, elle est donc désactivée sauf demande.
| Navigateurs | HLS natif dans Safari, hls.js 1.x ailleurs, Shaka Player pour le DASH |
|---|---|
| Apple | AVPlayer sur iOS, iPadOS et tvOS : HLS natif avec FairPlay. |
| Android | ExoPlayer / Media3 sur téléphones, tablettes, Android TV, Google TV et Fire TV, avec Widevine |
| Smart TV | Samsung Tizen et LG webOS via AVPlay, avec PlayReady ou Widevine selon l'année du modèle |
| Décodeurs | Tout boîtier doté d'un client HLS ou DASH ; nos applications en marque blanche couvrent Tizen, webOS, Android TV, Apple TV et Roku |
| Lecteurs commerciaux | Rien de propriétaire n'est requis : THEOplayer, JW Player, Bitmovin et Video.js lisent ces manifestes avec leur configuration d'origine |
Comment le commander
Le HLS / DASH adaptatif est une ligne de livraison, pas un projet : EUR 200 par chaîne et par mois, sans frais de mise en service. Le MultiDRM à EUR 19, le Cloud DVR à EUR 29, le redémarrage à EUR 15 et le flux EPG à EUR 9 sont eux aussi facturés par chaîne et par mois : une offre supérieure ne vous coûte donc que sur les chaînes où vous la vendez réellement.
Les remises de volume commencent à dix chaînes et atteignent 20 % ; un engagement de 12 mois retire 10 % de plus, 24 mois 15 %. Les deux sont appliquées par la commande elle-même, si bien que la grille tarifaire et la facture concordent. Le trafic sortant sur notre CDN est mesuré à EUR 0.09 par Go, sans engagement ni minimum, et n'est pas facturé du tout lorsque vous servez depuis le vôtre.
Les manifestes sont délivrés sous 12 heures dès que les droits sont confirmés pour votre territoire et votre plateforme, clés DRM comprises. Avant cela, l'essai gratuit de trois jours délivre un manifeste HLS / DASH et un point de terminaison SRT pour la même chaîne, à plein débit et avec le guide réel, sans carte bancaire.
Les questions que les ingénieurs posent en premier
Vers quoi pointons-nous exactement notre lecteur ?
Vers une seule URL de playlist multivariante par chaîne. Tous les échelons, toutes les langues audio et tous les sous-titres y sont décrits : la configuration de votre application se réduit à cette URL et, lorsque le DRM est activé, au point de licence et à votre jeton. Il n'y a rien d'autre à construire.
Proposez-vous du HLS à faible latence ?
Oui, chaîne par chaîne, avec EXT-X-PART et rechargement bloquant de la playlist. Nous ne publions volontairement pas une latence cible unique pour toute la plateforme, car elle dépend de la source de la chaîne. Dites-nous quelles chaînes comptent, nous les mesurons et nous annonçons le chiffre que nous tiendrons, à côté des 4 à 8 secondes que le HLS standard vous donne déjà.
Pouvons-nous utiliser notre propre CDN ?
Oui. Vous tirez les mêmes manifestes en HTTPS depuis notre origine, avec authentification par jeton, URL signée ou mTLS, et nous protégeons l'origine pour que votre CDN ne récupère chaque segment qu'une fois. Le nommage des segments et les en-têtes Cache-Control sont documentés pour votre configuration, le packaging et le DRM sont identiques, et il n'y a aucune ligne de trafic sortant chez nous.
Quels systèmes DRM, et quel serveur de licences ?
Widevine, PlayReady et FairPlay, depuis notre propre serveur de licences, sous forme de l'option MultiDRM à EUR 19 par chaîne et par mois. Si vous exploitez déjà un serveur de licences, nous pouvons packager avec vos clés et ne facturer que le packaging.
Comment arrivent concrètement les sous-titres envoyés par le diffuseur ?
En WebVTT segmenté pour le HLS et en IMSC1 pour le DASH, convertis depuis les sous-titres DVB ou la page télétexte de la source, avec les CEA-608/708 également transmis tels quels. Ce qu'une chaîne donnée porte dépend de ce qui est transmis : nous le précisons chaîne par chaîne plutôt que de promettre les trois partout.
Pouvons-nous prendre le HLS / DASH et le SRT pour la même chaîne ?
Oui, et beaucoup de clients le font : SRT vers la tête de réseau, HLS / DASH adaptatif pour les applications. Les deux sont facturés par chaîne et par mois : EUR 150 pour le SRT et EUR 200 pour le HLS / DASH adaptatif. L'essai gratuit livre les deux modes de remise pour la même chaîne, si bien que les deux équipes testent en même temps.