Transcodeurs¶
Les transcodeurs réencodent la vidéo et l’audio d’un flux : ils abaissent le débit pour l”OTT ou pour un multiplex, changent le codec et la résolution, et préparent les déclinaisons des ensembles adaptatifs. Chaque transcodeur s’exécute comme un processus distinct du nœud ; le schéma « un vers plusieurs » est pris en charge : un seul décodeur permet d’obtenir plusieurs flux de sortie avec des réglages d’encodage différents. Le transcodage n’est disponible que pour les flux SPTS ; le flux source doit contenir à la fois de la vidéo et de l’audio.
Architecture du transcodeur : un décodeur (commun) et N branches indépendantes « traitement + encodeur » ; les pistes audio sont traitées séparément de la vidéo, les sous-titres et le télétexte transitent sans modification.¶
Raccordement¶
Un transcodeur relie deux flux ou plus :
Sur le flux source, une sortie de type transcoder est ajoutée : c’est le décodeur. Ses réglages permettent de choisir le backend de transcodage (voir ci-dessous).
Sur le flux résultant, une entrée de type transcoder est ajoutée : c’est l’encodeur. Ses réglages permettent de choisir le décodeur source en fonctionnement (champ Decoder).
L’étape 2 est répétée pour chaque déclinaison supplémentaire — toutes utilisent le décodeur commun.
Ensuite, le flux résultant fonctionne comme un flux SPTS ordinaire : il peut être diffusé en OTT, enregistré en DVR ou fourni au multiplexeur.
Backends et codecs¶
Le backend se choisit sur le décodeur (champ Transcoder backend ; les valeurs sont celles de l’interface) :
- Video pass-through
La vidéo transite sans réencodage ; seul l’audio est transcodé. Ce mode est exécuté par le transcodeur logiciel, le paquet de transcodage logiciel doit donc être installé (Transcodeurs).
- Software (CPU)
Transcodage logiciel sur le processeur.
- NVidia (GPU)
Transcodage matériel sur les processeurs graphiques NVIDIA.
- Intel VPL (GPU)
Transcodage matériel sur les processeurs graphiques Intel.
Pour les backends GPU, le périphérique se choisit dans le champ GPU device selector (paramètre avancé). C’est nécessaire sur les serveurs équipés de plusieurs cartes. Les paquets de transcodeurs s’installent séparément (Transcodeurs) ; les backends installés, leurs versions et les périphériques détectés sont affichés sur l’écran « À propos » (À propos).
Le décodeur accepte la vidéo MPEG-2, H.264, HEVC et l’audio MPEG (Layer 1–3), AAC, AC-3. L’encodeur produit de la vidéo H.264 et HEVC (l’encodeur NVIDIA ne prend pas en charge MPEG-2 ; MPEG-2 est encodé par les backends Software et Intel VPL) et de l’audio MPEG Layer II et AAC.
Particularités du décodeur :
les flux entrelacés (interlace) sont pris en charge en entrée comme en sortie ; pour H.264 et HEVC, le format interlace alternate (trames séparées) est converti en interleaved ;
pour HEVC, le profil Main10 avec BT.709 (SDR) et BT.2020 (HDR) est pris en charge ; l’encodeur HEVC utilise toujours le profil Main avec BT.709 ;
la fréquence d’images variable (VFR) est convertie en fréquence constante ;
les flux dépourvus d’images IDR sont pris en charge.
Paramètres du décodeur¶
Ils se règlent sur la sortie de type transcoder du flux source (les intitulés sont ceux de l’interface ; tous les paramètres énumérés ci-dessous sont avancés) :
- Fix PAR (N/D), Fix frame rate (N/D)
Indications servant à corriger les données du flux d’entrée : elles ne transforment pas le flux, elles rectifient les paramètres lorsque la source ne les signale pas ou les signale de façon erronée. Fix PAR — le rapport d’aspect des pixels sous forme de fraction (par exemple, 16/9 pour le Wide SD) ; Fix frame rate — la fréquence d’images sous forme de fraction, si elle est absente du flux (PAL — 25/1, NTSC — 30000/1001, cinéma — 24/1).
- Convert to BT.709
Conversion des formats colorimétriques SD (BT.470-2 PAL, SMPTE 170M NTSC) en BT.709.
- Watchdog timeout
Délai du redémarrage du processus du transcodeur par le chien de garde (watchdog).
Le processus du transcodeur tient toujours un journal détaillé ; aucun réglage de traçage distinct n’est nécessaire (Supervision). Le journal n’est conservé que dans la mémoire du nœud ; la façon de le sauvegarder pour l’analyse est décrite dans Journaux du transcodeur.
Paramètres de l’encodeur¶
Ils se règlent sur l”entrée de type transcoder du flux résultant :
- Encoder
Codec vidéo : MPEG-2, H.264 (par défaut) ou HEVC.
- Video profile (H.264)
Profil d’encodage H.264 : Main ou High.
- Video rate control
Le mode de contrôle du débit vidéo : débit constant — CBR (constant) ; variable avec débit moyen — VBR (average bitrate) ; variable avec plafond — VBR (maximum bitrate). Par défaut, le débit constant.
Dans les deux modes variables, l’encodeur cesse de bourrer son propre flux élémentaire ; l’économie de bande passante n’est donc obtenue que là où le flux récepteur ne réaligne pas le débit : le bourrage se définit par le champ « Mode de débit » de l’onglet « MPEG-TS » de ce flux (Gestion du débit). Ne pas confondre ces deux champs : « Mode de débit » concerne le flux de transport dans son ensemble, Video rate control uniquement l’encodeur vidéo.
Le mode est apparu en 2.0.2.334. Sur un nœud d’une version antérieure, le champ est absent, et un transcodeur d’une version antérieure ne le lit pas et encode toujours à débit constant.
- Video bitrate (kbps)
Le débit vidéo est un seul nombre pour les trois modes ; ce qu’il signifie est défini par Video rate control, et le libellé du champ change avec le mode. À débit constant, le nombre est à la fois la cible et le plafond de la mémoire tampon. En débit moyen, le nombre est le débit moyen, tandis que les pics atteignent une fois et demie cette valeur. En plafond, le nombre est la borne supérieure que la vidéo ne franchit pas, et le débit moyen représente les deux tiers de celle-ci. Dans tous les cas, l’encodeur déduit lui-même la seconde limite d’un rapport pic/moyenne fixe de 1,5 ; le maximum n’est donc pas défini par un champ distinct. Le débit total du flux sera plus élevé du fait des pistes audio.
- Resize
Redimensionnement de l’image : réduction proportionnelle par 2 ou par 4 ; conversion en SD — options SD, SD PAL et SD NTSC, toutes au format large 16:9 ; mise à l’échelle du SD vers le HD ; définition de la largeur ou de la hauteur (l’autre côté est recalculé proportionnellement). Une taille arbitraire n’est pas prise en charge : elle fausserait les proportions.
- Deinterlace
Conversion de la vidéo entrelacée en vidéo progressive (activée par défaut ; appliquée automatiquement lors de la mise à l’échelle du SD vers le HD).
Paramètres de qualité et de structure du flux (paramètres avancés) :
- GOP interval
Intervalle entre images clés, exprimé en images. La valeur par défaut est 25, soit une seconde en 25p. Cet intervalle est recommandé lorsque les lecteurs se connectent au flux à un instant quelconque.
- B-frames, Lookahead
Ils améliorent la qualité d’encodage ; les valeurs recommandées sont respectivement 3 et 20–50 images.
- Speed preset
Préréglage de la vitesse d’encodage, de 1 à 7 ; plus la valeur est faible, meilleure est la qualité et plus la charge est élevée. Valeur par défaut : 4.
- Frame rate resample
Décimation de la fréquence d’images par 2 ou par 4.
- Encoder PMT PID, PAT/PMT interval (90kHz)
PID de la table PMT et intervalle de répétition des tables PAT/PMT dans le flux de sortie ; on les définit lorsque le flux doit s’inscrire dans le plan du réseau.
L’enregistrement de n’importe quel paramètre de l’encodeur redémarre le processus du transcodeur. Une mention au-dessus de la liste des champs en avertit. Le redémarrage rouvre chaque entrée qui reçoit des données de cette instance de transcodeur, y compris les entrées d’autres flux : chaque sortie transcodée subira une brève coupure, et un flux doté d”entrées de secours peut basculer sur un secours pendant ce temps (Redondance des sources et diffusion).
Il est possible de définir une combinaison de paramètres incompatible ; les erreurs sont visibles dans le journal du transcodeur (Supervision).
Logo dans l’image¶
Depuis la version 2.0.2.413, un logo issu d’un fichier PNG peut être incrusté dans l’image du flux de sortie. Le logo est dessiné par le backend NVidia (GPU) et, depuis la version 2.0.2.415, par le backend logiciel (CPU) ; le backend Intel n’a pas de logo, et la version de démonstration n’offre pas non plus cette possibilité. Le backend logiciel nécessite le transcodeur logiciel (paquet tcsw) en version 1.2.0.126 ou plus récente. Le nœud détermine la version du transcodeur au démarrage du service ; après une mise à jour de tcsw, redémarrez donc le service et ne définissez le logo qu’ensuite. Le réglage se fait sur l”entrée de type transcoder du flux résultant, dans le bloc « Logo » placé après le champ Deinterlace, séparément pour chaque encodeur : chaque déclinaison peut avoir son propre logo avec sa propre position, ou ne pas en avoir du tout. Les déclinaisons sans logo ne changent pas.
Le logo est dessiné à sa propre taille, sans mise à l’échelle ni recadrage : il doit tenir entièrement dans l’image de sortie. Pour une déclinaison de résolution inférieure, on prépare un logo plus petit.
- Fichiers de logos
Le bouton « Téléverser un PNG… » téléverse le fichier sur le nœud et le sélectionne aussitôt dans le champ « Fichier du logo » ; les fichiers téléversés auparavant se choisissent dans la liste de ce même champ, avec leur taille. Tout PNG jusqu’à 4096×4096 pixels et 16 Mo est accepté ; la transparence est prise en compte. Téléverser de nouveau le même fichier ne crée pas de nouvelle entrée. La fenêtre « Fichiers de logos… » affiche tous les fichiers du nœud avec leur taille et les flux qui les utilisent ; le bouton « Supprimer » n’existe que pour les fichiers inutilisés.
- Position
« X depuis le bord gauche (px) » et « Y depuis le bord supérieur (px) » définissent le coin supérieur gauche du logo dans l’image de sortie, c’est-à-dire après le redimensionnement. Les deux nombres doivent être pairs.
- Opacité
« Opacité (%) » : de 0 à 100, 100 par défaut. La valeur est multipliée par la transparence propre du PNG.
- Flou de l’arrière-plan
« Flou de l’arrière-plan (px) » rend floue l’image sous le logo ; le nombre définit le rayon, de 0 à 50, 0 signifiant désactivé (par défaut). « Zone de flou » choisit ce qui est flouté : « Tout le rectangle du logo » (par défaut) ou « Uniquement sous la forme du logo », c’est-à-dire sous ses pixels opaques.
L’image dans laquelle le logo doit tenir est celle obtenue après le réglage Resize :
sans redimensionnement — l’image de la source ;
SD et SD PAL — 720×576, SD NTSC — 720×480 ;
SD->HD — 1920×1080 si la hauteur de la source ne dépasse pas 720 ; pour une source de plus de 720 lignes, la taille ne change pas ;
/2 et /4, ainsi qu’une largeur ou une hauteur imposée — la taille recalculée à partir de l’image de la source. Avec le backend NVidia, la largeur est alors arrondie au multiple de 32 supérieur, la hauteur au multiple de 4 supérieur ; avec le backend logiciel, les deux côtés sont arrondis à des valeurs paires. Ainsi, une hauteur de 720 pour une source 1920×1080 donne une image 1280×720 avec les deux backends, et une largeur de 1000 une image 1024×564 avec NVidia et 1000×562 avec le backend logiciel.
C’est pourquoi, à réglages de taille identiques, l’image des deux backends peut différer de quelques pixels. La fenêtre et la vérification à l’enregistrement calculent l’image du backend choisi.
Sous les champs, la fenêtre indique aussitôt si le logo tient dans l’image et, sinon, de quel côté et de combien il dépasse le bord. Le bouton « Aperçu » montre l’image et le logo sous forme de rectangles à l’échelle, sans le contenu vidéo, avec des chiffres : la taille de l’image et son origine, la taille du logo, la position et les marges jusqu’aux bords droit et inférieur. Si la taille de l’image dépend de la source et que la source ne fonctionne pas en ce moment, la fenêtre indique que la taille sera connue après le démarrage du transcodeur. La vérification est alors faite par le transcodeur lui-même au démarrage : si le logo ne tient pas, le transcodeur ne démarre pas et signale une erreur avec les mêmes chiffres (Supervision).
Le nœud refuse d’enregistrer le logo si :
le décodeur fonctionne en mode Video pass-through : la vidéo n’est pas décodée, et il n’y a rien sur quoi dessiner ;
le backend du décodeur est Intel ; dans ce cas, le bloc « Logo » affiche une indication au lieu des champs ;
le backend est logiciel et le transcodeur logiciel installé est antérieur à 1.2.0.126 ;
les coordonnées sont impaires ou le logo ne tient pas dans une image de taille connue.
Le backend d’un décodeur avec logo peut être basculé entre NVidia et logiciel. Si, après le basculement, le logo ne tient pas dans la nouvelle image, le transcodeur ne démarre pas et signale la taille de l’image. Un tel décodeur ne peut pas être basculé sur Intel ni en mode Video pass-through tant qu’un encodeur avec logo y est raccordé.
Particularités :
Les fichiers de logos ne sont stockés que sur leur propre nœud. Ils ne font pas partie de la sauvegarde des paramètres et ne sont pas transmis aux autres nœuds Meshwork : pour un flux déplacé sur un autre nœud, le logo doit y être téléversé aussi, sinon le transcodeur ne démarrera pas.
Toute modification du logo, y compris le choix d’un autre fichier, redémarre le transcodeur, comme la modification des autres paramètres de l’encodeur.
Si un logo est défini sur au moins un encodeur, le transcodeur NVidia marque la couleur de toutes ses sorties comme BT.709 et y convertit les sources SD BT.470-2 et SMPTE 170M, comme le paramètre Convert to BT.709 du décodeur. Les couleurs visibles ne changent pas pour autant ; une source SD sans indication d’espace colorimétrique est considérée comme déjà en BT.709 et n’est pas recalculée. Le transcodeur logiciel produit toujours toutes ses sorties en BT.709, avec ou sans logo, si bien que le logo n’influe pas sur sa couleur.
Pour une sortie entrelacée, on donne aux lignes horizontales fines du logo au moins deux pixels d’épaisseur : une ligne d’un pixel scintille à la fréquence des trames.
Traitement de l’audio¶
Par défaut, toutes les pistes audio transitent de l’entrée vers la sortie sans réencodage. Les pistes superflues sont supprimées par les filtres PID sur l”entrée du flux (Filtrage MPEG-TS).
Le réencodage de l’audio se configure par des règles, séparément pour chaque codec source (paramètres avancés) : une piste peut transiter sans modification, être réencodée (MPEG — en AAC ; AAC — en MPEG Layer II ; AC-3 — en MPEG Layer II ou AAC) ou être supprimée (valeur Skip). On définit en outre le débit audio (Audio bitrate, 128 kbit/s par défaut) et le volume du mixage réducteur 5.1 (5.1 downmix volume). Si, après application des règles, aucune piste audio ne subsiste dans le flux de sortie, l’encodeur signale une erreur dans le journal.
PCR et débit du flux de sortie¶
Le multiplexeur du transcodeur génère de nouvelles marques PCR cohérentes. Par défaut, le flux de sortie est transmis en VBR : le débit total varie avec le débit réel de la vidéo et de l’audio, et la précision des PCR selon TR 101 290 n’est pas garantie du côté réception. Si le flux transcodé est destiné à la diffusion DVB, activez le mode CBR sur le flux récepteur : le bourrage égalisera le débit et recalculera les PCR (Gestion du débit). Un mode d’encodage variable accentue l’irrégularité : le débit vidéo varie avec le contenu et, sans bourrage côté récepteur, le flux de transport est d’autant plus irrégulier.
Supervision¶
L’écran « Transcodeurs » (Transcodeurs) affiche toutes les instances. Chaque ligne décrit une instance distincte (un décodeur et les encodeurs qui lui sont raccordés) : état, type de backend, temps de fonctionnement, charge CPU et mémoire. La fenêtre « Instance de transcodeur » (Instance de transcodeur) détaille la source, la liste des encodeurs avec les paramètres de la vidéo de sortie, les ressources du processus ainsi que les journaux de l’exécution courante et de la précédente. C’est par cette fenêtre que commence le diagnostic. Le journal d’une exécution terminée est effacé dès le deuxième redémarrage du processus ; en cas de défaillance, on le copie donc immédiatement (Journaux du transcodeur).
La charge des périphériques GPU est affichée sur l’écran « Moniteur système » (Moniteur système). Le dépassement des seuils de charge CPU, de mémoire et de charge GPU, ainsi que l’indisponibilité du backend configuré, déclenchent des alertes (Catalogue des codes d’alerte).