Provient d'un site partenaire. Cliquez sur le titre pour accéder à l'article original complet
toujours voulu savoir sur H.264 – H.265… sans jamais oser le demander !
Avec l’avènement de la DATV à bas débit, il est devenu crucial d’utiliser avec efficience la bande passante disponible pour transmettre de la vidéo et du son. Les codecs H.264 et H.265 sont là, à notre disposition pour atteindre ce but.
Par où commencer ?
Ce document, sans prétention vous donnera, je l’espère, quelques pistes pour maîtriser ces outils sur la plateforme multimédia OBS Studio.
OBS STUDIO supporte de nombreux codecs, dans cette 1er partie, nous allons nous attaquer à l’utilisation du codec H.264 dans sa version encodage « logiciel » (libx264).
Chaque codec implémente de nombreux praramètes pour optimaliser son codage en fonction du but rechercher : par exemple, la meilleure résolution avec une latence minimum pour le débit disponible.
Pour la version « logiciel » du codec H.264 (libx264), les principales options pour gérer l’encodage sont :
Rate control
C’est ce que fait un encodeur vidéo lorsqu’il décide du nombre de bits à « dépenser » pour une image donnée. L’objectif de l’encodage vidéo est d’enregistrer autant de bits que possible, en réduisant la taille du fichier par rapport au fichier d’entrée original, tout en conservant autant de qualité que possible. Le contrôle du débit est une étape cruciale pour déterminer ce compromis entre la taille et la qualité.
Plusieurs modes sont disponibles :
- ABR – Average Bit Rate
- CBR – Constant Bit Rate
- CRF – Constant Rate Factor
- VBR – Variable Bit Rate
Dans notre cas, nous désirons dans la mesure du possible avoir un débit constant pour notre TS. Le mode retenu est donc : CBR.
Il est bon de noter qu’il n’existe pas de mode CBR natif, mais vous pouvez “simuler” un réglage de débit binaire constant en réglant les paramètres au moyen des options suivantes (en format OBS ):
x264-params=”nal-hrd=cbr” minrate=1M maxrate=1M bufsize=2M
Dans l’exemple ci-dessus, bufsize est le “buffer de contrôle de débit”, il appliquera donc la “moyenne” demandée (1 MBit/s dans ce cas) sur chaque tranche de 2 MBit/s de vidéo.
Les codages CBR sont généralement inefficaces si la vidéo est facile à coder (par exemple, images vides ou noires).
Preset
C’est un ensemble d’options qui fourniront un certain ratio vitesse de codage/compression. Un préréglage plus lent fournira une meilleure compression. Cela signifie que, par exemple, si vous ciblez une certaine taille de fichier ou un débit binaire constant, vous obtiendrez une meilleure qualité avec un préréglage plus lent. De même, pour un encodage de qualité constante, vous économiserez simplement le débit en choisissant un préréglage plus lent.
Les préréglages disponibles par ordre décroissant de vitesse sont:
- ultrafast
- superfast
- veryfast
- faster
- fast
- medium (default preset)
- slow
- slower
- veryslow
- placebo (à ignorer)
Profile
Cette option limite la sortie à un profil H.264 spécifique. Certains appareils (pour la plupart très anciens ou obsolètes) ne prennent en charge que les profils Constrained Baseline ou Main, plus limités. Vous pouvez définir ces profils avec l’option baseline ou main.
La plupart des appareils modernes prennent en charge le profil High, plus avancé. À moins que vous ne deviez prendre en charge des dispositifs limités, il est recommandé de ne pas définir le profil, ce qui permettra à libx264 de sélectionner automatiquement le profil approprié.
Tune
Vous pouvez éventuellement utiliser l’option tune pour modifier les paramètres en fonction des spécificités de votre entrée. Les réglages actuels incluent:
- film – utilisation pour un contenu de film de haute qualité
- animation – bon pour les dessins animés
- grain – préserve la structure du grain dans les vieux films
- image fixe – idéal pour le contenu de type diaporama
- fastdecode – permet un décodage plus rapide en désactivant certains filtres
- zerolatency – idéal pour un encodage rapide et un streaming à faible latence
Voilà pour la partie théorique. Passons à la pratique !
Configuration d’OBS Studio pour son utilisation avec l’ADALM-PLUTO DATV Controller d’Evariste F5OEO.
Dans l’exemple ci-dessous, le débit disponible du TS est de 441.130 kb/s (QPSK, SR 333KS/s, FEC 2/3, Pilot off).
Deux façon de faire sont possibles pour piloter le Pluto par OBS : Streaming et Recording.
Output mode Streaming
Configurer l’onglet Stream selon la documentation en line sur le Pluto.
Configurer l’onglet Streaming dans Output
Output Mode = Advanced
Encoder = x264
Rate Control = CBR (implémente les options pour simuler un débit constant)
Bitrate = 280 Kbps (comme point de départ : env. 70 % du débit disponible du TS)
Use Custom Buffer Size = oui
Buffer Size = 560 Kbps (comme point de départ : env. 2x le Bitrate)
Keyframe Interval = 2
Ce paramètre fait partie du codec H.264. Fondamentalement, une “Keyframe” est une image entièrement compressée, comme un jpeg. L’image suivante n’est qu’un ensemble de données qui indique ce qui est différent de l’image précédente. Lorsque la différence est trop importante, quelques “Keyframes” sont envoyées. Les “Keyframes” sont également envoyées périodiquement pour que la compression ne soit pas trop mauvaise après un certain temps.
Un intervalle plus court entre les “Keyframes” signifie que vous enverrez plus d’images, ce qui nécessite un débit binaire plus élevé. La recherche du réglage optimal dépend du type de vidéo que vous diffusez. Il semble qu’une valeur de 2 secondes soit un bon compromis entre qualité et bitrate.
CPU Usage Preset = selon les performances de votre PC
Profile = (None)
Tune = film
x264 Options = vide
Pour contrôler que le Transport Stream (TS) que vous générez est correct, l’ADALM-PLUTO DATV Controller, dans son onglet Analysis, vous permet d’analyser la répartition du débit disponible de votre TS entre les différents éléments le composant, en particulier, la quantité de Null packets qui seraient mieux utilisés par la vidéo si trop nombreux…
Dans la même fenêtre, on peut également visualiser l’utilisation du buffer vidéo de l’application. Cela vous permettra de vérifier que le débit vidéo est adéquat ainsi que la qualité de son débit constant.
Regardez ce qui se passe lorsque que vous changez les différents paramètres de l’encodeur H.264 pour un même stream vidéo en entrée ou pour les mêmes paramètres d’encodage mais avec un stream vidéo plus ou moins dynamique. C’est fort intéressant !
Output mode Recording
à suivre…