OTT et DVR

Le sous-système OTT diffuse les flux au moyen de protocoles fondés sur HTTP : HLS (sur MPEG-TS), MPEG-DASH et Low-Latency HLS (sur CMAF — MP4 fragmenté), ainsi que MPEG-TS over HTTP. HTTPS et HTTP/3 (QUIC) sont pris en charge. La diffusion s’active dans l’onglet « OTT » de l’éditeur de flux (Configurer le flux) et n’est disponible que pour les flux SPTS ; un programme de multiplex est extrait en flux SPTS par le démultiplexeur (Démultiplexeur).

Le DVR est une archive permanente du flux sur disque. Elle est écrite en parallèle de la diffusion OTT — aucun service d’enregistrement distinct n’est requis — et se lit au moyen des mêmes URL que la diffusion en direct ; seuls les paramètres de requête diffèrent (DVR : archive du flux).

Modes de diffusion

La diffusion progressive MPEG-TS sur HTTP s’active par le paramètre « Service HTTP » (valeur Live) : transmission continue du flux de transport source dans une seule réponse HTTP.

La diffusion segmentée est commandée par le paramètre « Service HLS » (valeurs telles qu’affichées dans l’interface) :

Peering / HLS

Segmentation simple. Ce mode est destiné au transfert d’un flux entre nœuds Perfect Streamer : le nœud émetteur diffuse du HLS sur MPEG-TS, le nœud récepteur se connecte avec une entrée de type HLS. Les sous-titres WebVTT et le DRM ne sont pas disponibles dans ce mode, et l’enregistrement DVR n’y est pas configurable.

OTT / HLS

Segmentation optimisée pour un démarrage rapide des lecteurs en diffusion OTT (la charge CPU est plus élevée). Le HLS est diffusé sur MPEG-TS ; l’alignement des segments sur les GOP s’applique (Segmenteur).

OTT / LL-HLS / DASH

Diffusion sur CMAF : le flux produit des segments fMP4 au-dessus desquels sont diffusés MPEG-DASH et Low-Latency HLS. Lorsque le paramètre « Chunks MPEG-TS HLS hérités » est activé (activé par défaut), du HLS classique sur MPEG-TS est diffusé en complément ; sa désactivation économise le disque et le CPU. MPEG-DASH et Low-Latency HLS ne sont disponibles que dans ce mode.

Low-Latency HLS découpe la playlist média en segments partiels (parts) : le lecteur commence la lecture sans attendre le segment complet ; le rechargement bloquant de la playlist et l’indication de préchargement sont mis en œuvre. La durée cible d’une part est définie par le paramètre « Durée cible de la part LL (ms) » (paramètre avancé ; 500 ms par défaut, appliqué à chaud, elle doit être inférieure à l’intervalle minimal de chunk). Pour une faible latence précise, le manifeste DASH contient la correspondance entre le temps média et UTC, et les segments CMAF portent les horodatages de référence du producteur.

Note

L’encapsulation CMAF ne transporte que les pistes audio AAC et AC-3 ; les pistes dans d’autres codecs sont écartées, ce qui déclenche une alerte (Alertes (alerter)).

Segmenteur

Dans les modes OTT, le flux est analysé d’après les tables PAT/PMT et les images clés, et les segments sont découpés selon un critère de démarrage rapide des lecteurs. Le découpage est commandé par les paramètres « Intervalle min. de chunk (s) » et « Intervalle max. de chunk (s) » : l’analyse débute à l’intervalle minimal et, si aucun point de découpe n’est trouvé, le segment est clos de force à l’intervalle maximal.

« Segments alignés sur les GOP » (activé par défaut ; effectif dans le mode OTT / HLS) — le segmenteur aligne les frontières des segments sur les points d’accès aléatoire et distingue une image IDR d’une image I ordinaire. Pour les sources à GOP fermé (closed-GOP), chaque segment commence à coup sûr par SPS/PPS/IDR — un point d’entrée complet ; la « queue » du GOP précédent est retirée. Cela élimine l’image noire au démarrage des sessions VOD et met la diffusion en conformité avec les exigences HLS (RFC 8216). Le type de structure GOP de la source est visible dans les métriques de l’analyseur (Analyses avancées). En raison de l’alignement, la durée réelle d’un segment peut dépasser l’intervalle minimal — la durée cible déclarée dans la playlist reflète le maximum réel.

URL et autorisation

La diffusion est assurée par le serveur HTTP de diffusion du nœud (Serveur HTTP de diffusion). L’URL est construite selon le schéma:

http://host:port/hls/<flux>/<identifiant>/<mot-de-passe>/index.m3u8
http://host:port/hls/<flux>/<identifiant>          — autorisation par jeton
http://host:port/hls/<flux>/                       — autorisation par IP

À la place de /hls/ on substitue /dash/, /llhls/ ou /http/ ; pour les ensembles adaptatifs — /hls/adaptive/ et analogues (Ensembles adaptatifs). <flux> est l’identifiant du flux ou le nom défini par le paramètre « Nom du flux dans l’URL ». L’accès non autorisé est interdit : les identifiants et les permissions des clients se configurent dans l’interface web (Utilisateurs / Identifiants).

Des modèles d’URL prêts à l’emploi, correspondant aux modes de diffusion actifs, sont affichés dans la fenêtre de statistiques du flux — la section « URL de diffusion », avec un bouton de copie (Statistiques du flux). Les sessions clientes actives sont visibles sur l’écran « Clients » (Clients).

HTTP/3 (QUIC)

Le serveur HTTP de diffusion sait servir les routes OTT (HLS, DASH, LL-HLS, MPEG-TS over HTTP) sur QUIC. HTTP/3 s’active dans les paramètres du serveur HTTP de diffusion (Serveur HTTP de diffusion) ; le certificat utilisé est le même que pour HTTPS, mais il n’est pas obligatoire d’activer HTTPS lui-même — QUIC écoute séparément et lit directement les fichiers du certificat. Ce sont précisément eux qui sont nécessaires : sans certificat ni clé, l’écouteur HTTP/3 ne démarre pas.

Les clients navigateur basculent vers QUIC au moyen de l’annonce standard Alt-Svc : l’annonce est émise sur demande explicite du client — le paramètre ?h3 sur l’URL maîtresse. Si la connexion QUIC ne s’établit pas (port UDP fermé, certificat non approuvé), le client reste de manière transparente sur HTTPS — la diffusion n’est pas interrompue. Les requêtes d’administration ne sont servies que sur TCP. Low-Latency HLS et DASH sur QUIC sont diffusés de manière incrémentale — les parts sont envoyées au client au fur et à mesure qu’elles sont prêtes.

Sous-titres WebVTT

Le paramètre « Sous-titres télétexte vers WebVTT » (activé par défaut, effectif dans les modes OTT) convertit les sous-titres DVB Teletext / DVB Subtitling du flux d’entrée en pistes WebVTT : une piste de sous-titres est ajoutée à la playlist maîtresse HLS et un ensemble d’adaptation textuel au manifeste DASH. La présence de sous-titres dans la source apparaît dans les informations média de la fenêtre de statistiques. Les sous-titres sont archivés dans le DVR en parallèle des segments média et sont disponibles lors de la lecture de l’archive ; ils ne sont pas chiffrés par la protection DRM. Le paramètre « Journaliser les messages de sous-titres » (paramètre avancé) sert au diagnostic.

Ensembles adaptatifs

Un ensemble adaptatif réunit plusieurs flux OTT d’une même chaîne, à des débits différents, sous une seule playlist maîtresse HLS ou un seul manifeste DASH — le lecteur bascule lui-même entre les variantes en fonction de la bande passante.

L’ensemble se crée comme un flux de type « Adaptatif » (Nouveau flux, éditeur de l’ensemble — Ensemble adaptatif). Les membres sont des flux SPTS dont le mode OTT est activé : OTT / HLS pour le HLS adaptatif sur MPEG-TS, OTT / LL-HLS / DASH pour le DASH et le Low-Latency HLS adaptatifs. Le débit peut être défini manuellement pour chaque membre ; la valeur 0 signifie que le débit mesuré est utilisé.

Les URL maîtresses de l’ensemble sont construites selon les schémas /hls/adaptive/, /dash/adaptive/, /llhls/adaptive/, avec les mêmes variantes d’autorisation. L’accès accordé à un client sur un ensemble adaptatif s’étend automatiquement à tous les flux qu’il contient.

Protection du contenu (DRM)

La diffusion OTT d’un flux peut être chiffrée. Le chiffrement est effectué une seule fois, au moment de la production du segment : la diffusion en direct et l’archive DVR reçoivent les mêmes données chiffrées ; l’archive est conservée sur disque sous forme chiffrée. Les paramètres sont regroupés dans la section « Protection du contenu » de l’onglet « OTT » ; l’application de l’un quelconque d’entre eux redémarre la diffusion OTT du flux.

Modes (champ « DRM », valeurs telles qu’affichées dans l’interface) :

HLS AES-128

Chiffrement du segment entier pour les segments TS ; le déchiffrement est effectué par tout lecteur HLS standard. Nécessite « Service HLS » = OTT / HLS.

CENC cenc (DASH), CENC cbcs (DASH)

Chiffrement image par image selon MPEG Common Encryption (ISO/IEC 23001-7) — schéma cenc (AES-CTR) ou cbcs (AES-CBC par motif, écosystème Apple FairPlay). Ils nécessitent le mode OTT / LL-HLS / DASH avec la diffusion des chunks TS désactivée ; la diffusion se fait uniquement en MPEG-DASH.

Tout mode de protection exige que le « Service HTTP » soit désactivé — la diffusion progressive contourne le chiffrement. Le serveur rejette une combinaison de paramètres incompatible en en indiquant la raison.

Clés et distribution :

  • « Clé de contenu (32 hex) » — la clé de chiffrement (pour l’AES-128 statique et pour CENC). « ID de clé (CENC KID) » — l’identifiant de clé CENC ; si le champ est vide, l’identifiant est dérivé de manière déterministe de l’identifiant du flux.

  • « Distribution de la clé » (AES-128, valeurs telles qu’affichées dans l’interface) : Built-in (PSS serves the key) — le serveur distribue lui-même la clé au moyen d’une URL de session soumise à la même autorisation que les segments ; External key server — la balise de clé de la playlist pointe vers « URI de la clé (EXT-X-KEY) » et la distribution intégrée est désactivée. Pour CENC, le serveur ne délivre pas de clé aux lecteurs — la distribution des clés est assurée par l’infrastructure DRM (serveurs de licences).

  • Rotation des clés (AES-128 uniquement) : « Source de la clé » = Derived (rotating), « Secret de rotation » (au moins 16 caractères) et « Fenêtre de clé (minutes) ». La clé de chaque fenêtre est calculée à partir du secret par une fonction à sens unique ; l’archive DVR se lit à travers un nombre quelconque de rotations — le numéro de la fenêtre est reconstitué d’après l’heure d’enregistrement du segment.

Avertissement

Le changement de l”« identité de clé » d’un flux — clé de contenu, secret ou paramètres de rotation — rend illisible l’archive chiffrée enregistrée auparavant ; l’interface web demande la confirmation de telles modifications. Les clés sont conservées en clair dans la configuration du serveur — restreignez l’accès aux fichiers de configuration et aux sauvegardes.

DVR : archive du flux

L’enregistrement s’active dans l’onglet « OTT », section « DVR » (visible dans les modes OTT) :

« Stockage DVR »

Le stockage dans lequel l’archive est écrite (Stockages DVR). La valeur « Aucun » signifie que l’enregistrement est désactivé.

« Rétention (heures) »

La profondeur de l’archive du flux, de 1 heure à 90 jours. Les segments plus anciens sont supprimés par le nettoyage régulier.

« Minimum protégé (heures) »

Le seuil inférieur de protection : le nettoyage ne supprime jamais les enregistrements plus récents que cette valeur, même en cas de manque d’espace disque.

L’enregistrement démarre automatiquement dès que le flux passe à l’état de fonctionnement. La dissociation du stockage arrête l’enregistrement (les fichiers restent sur le disque, la lecture de l’archive cesse) ; lors d’un changement de stockage, l’enregistrement reprend à zéro et les fichiers ne sont pas transférés. L’interface web confirme les modifications destructrices par la boîte de dialogue « Confirmer les modifications DVR ».

Stockages DVR

Les stockages se configurent sur l’écran « Stockages DVR » (Stockages DVR). Pour chacun d’eux sont définis le chemin du répertoire (non modifiable après la création), la limite d’utilisation du disque en pourcentage et — dans les paramètres avancés — l’intervalle de nettoyage, le délai de grâce et la portion de troncature en cas de saturation, la réserve d’espace d’urgence et l’hystérésis. Un seul stockage par disque est recommandé : plusieurs stockages sur un même disque se disputent l’espace libre. La suppression d’un stockage de la configuration ne supprime pas les fichiers du disque.

Le nettoyage de l’archive opère à plusieurs niveaux :

  • par profondeur — les segments plus anciens que la valeur « Rétention (heures) » de chaque flux ;

  • par espace — en cas de dépassement durable de la limite d’utilisation du disque, les segments les plus anciens sont supprimés proportionnellement sur tous les flux, mais jamais ceux plus récents que le minimum protégé ;

  • d’urgence — en cas de manque critique d’espace, l’enregistrement est arrêté jusqu’au rétablissement de l’espace libre ;

  • le nettoyage des fichiers orphelins à l’intérieur des archives des flux en cours d’enregistrement s’effectue automatiquement ; les répertoires d’archives laissés par des flux supprimés ne sont retirés que manuellement — par le bouton « Effacer les archives orphelines » de l’écran « Moniteur DVR » (Moniteur DVR).

L’état des stockages et des flux enregistrés — remplissage, volume de l’archive, latences d’écriture et de lecture, tâches de nettoyage actives — est affiché sur ce même écran « Moniteur DVR ». L’archive d’un flux donné peut être supprimée irrémédiablement par le bouton « Effacer l’archive DVR » de la fenêtre de statistiques du flux ; l’enregistrement se poursuit alors.

Lecture de l’archive (VOD)

L’archive se lit au moyen des mêmes URL que la diffusion en direct HLS / DASH — seuls les paramètres de requête diffèrent :

t=<temps>

Le début de la fenêtre VOD (temps Unix, secondes). t=0 — depuis le début de l’archive. La présence du paramètre t active le mode VOD.

d=<secondes>

La durée de la fenêtre VOD. Sans le paramètre (ou avec d=0) — jusqu’à l’instant courant. N’est effectif qu’avec t.

epg=<temps>

VOD selon le guide des programmes : le serveur recherche l’événement EPG actif à l’instant indiqué et prend son début et sa durée comme bornes de la fenêtre. Cela exige que le flux soit rattaché à une source EPG — les champs « Source EPG » et « Canal EPG » de l’onglet « Flux » (Modification du flux, Générateur EIT) ; les paramètres t et d sont alors ignorés. Pour un catalogue de programmes, il suffit que l’interface fournisse l’heure de l’événement — les bornes exactes sont calculées par le serveur.

Particularités de la lecture :

  • Les bornes de la fenêtre sont normalisées : une requête antérieure au début de l’archive est ramenée au premier segment disponible ; une fenêtre située entièrement hors de l’archive renvoie une playlist vide mais valide.

  • La playlist HLS VOD est close (elle porte l’indication de fin) ; le manifeste DASH est statique. Les interruptions d’enregistrement dans DASH sont rendues par des périodes distinctes — les lecteurs se déplacent au-delà de la frontière sans réglages particuliers.

  • Si le client atteint la borne droite de la fenêtre, les segments manquants sont servis depuis la mémoire du flux en direct — sans redirections ni nouvelle autorisation.

  • Une session VOD ouverte protège sa fenêtre du nettoyage régulier jusqu’à la fermeture de la session ; le nettoyage d’urgence et le minimum protégé restent prioritaires.

  • Les sous-titres WebVTT sont également restitués depuis l’archive (Sous-titres WebVTT).

  • Les ensembles adaptatifs prennent en charge les mêmes paramètres VOD. Seules les variantes rattachées à un stockage DVR figurent dans le manifeste DASH ; la playlist maîtresse HLS contient toutes les variantes, mais celles dépourvues d’archive répondent par une erreur à une requête d’archive et le lecteur les ignore.