top of page
Page d’accueil de XSplit

Réglages de qualité, de tampon VBV et de presets XSplit

Melvin Dichoso
2 mars 2016
6 min de lecture

Dernière mise à jour : 11 oct.

XSplit utilise l’encodeur x264. Commençons donc par préciser que les paramètres mentionnés dans le titre, à l’exception des paramètres de qualité, correspondent aux paramètres du wiki x264 ici.


Qualité

Puisque la qualité est différente, commençons précisément par elle. Dans x264, la qualité est appelée facteur CRF ou Constant Rate Factor. L’encodeur accepte toute valeur de CRF=0 (sans perte) à CRF=51 (qualité terrible).

Pour encoder un flux vidéo, vous pouvez généralement appliquer différents systèmes de contrôle du débit. XSplit utilise un contrôle fondé sur la qualité, qui vise une qualité particulière de la vidéo encodée tout en respectant une limite supérieure de débit (vbv-maxrate). Les différences de débit nécessaire entre les niveaux de qualité sont énormes (et NON linéaires). La plupart des gens ne verraient même pas de différence entre CRF=18 et CRF=0, sauf qu’un enregistrement CRF=0 occupe énormément d’espace sur le disque dur.

Dans XSplit, nous utilisons un réglage général de qualité compris entre 0 et 10 pour le streaming, 10 étant la valeur la plus élevée. La qualité 10 correspond à CRF=25, généralement considéré comme une très bonne qualité. La qualité 0 correspond à CRF=35, ce qui peut être acceptable dans certains cas, même si le résultat est moins agréable.

Cela peut se discuter, mais XSplit a néanmoins pour convention d’utiliser son propre paramètre de qualité et de le convertir en CRF en interne. Nous pensons que les gens comprennent la qualité et sont habitués à une échelle de 0 à 10, le dernier étant le plus élevé. Mais tout cela se personnalise facilement pour ceux qui souhaitent suivre cette voie.

Vous remarquerez que, pour l’enregistrement local, XSplit vous propose seulement de définir une qualité, sans vbv-maxrate ni vbv-buffer particulier. L’idée est qu’un enregistrement local ne nécessite généralement pas de se préoccuper de la bande passante. Un enregistrement visant une qualité donnée sera donc créé et sa taille variera selon la qualité choisie, pour une même source, ce qui est logique.

Dans les scènes complexes (images), davantage de bits sont utilisés pour garantir une qualité visuelle constante ; dans les scènes moins complexes, moins de bits sont utilisés. L’encodeur x264 tente d’interpréter l’importance des changements dans l’image et d’optimiser la qualité visuelle selon les réglages (CRF, autrement dit le réglage de qualité). La base pour la qualité est de 25 images par seconde. x264 adapte sa qualité à la fréquence d’images, donc un réglage donné fournit une qualité par image inférieure pour un flux à 60 FPS par rapport à 25 FPS. La raison est simple : une image à 25 FPS est plus importante qu’une image à 60 FPS lorsque l’objectif global est de conserver la même qualité visuelle pour les deux flux.

Pour un enregistrement local, il peut rester souhaitable de contrôler la bande passante maximale utilisée. L’interface de XSplit permet donc toujours de définir vbv-maxrate et vbv-buffer. Nous y reviendrons bientôt.


VBV-buffer et VBV-maxrate

Les deux principaux mécanismes de contrôle du débit de données utilisés par l’encodeur x264 sont

- Mode débit moyen- Mode qualité moyenne

Dans l’interface de XSplit, nous n’autorisons que le mode qualité moyenne décrit plus haut, car il est souvent beaucoup plus efficace.

Cependant, les deux systèmes principaux utilisent souvent un contrôle complémentaire du débit, qui est même nécessaire pour réussir un livestream avec XSplit : le contrôle VBV. L’encodage fondé sur la qualité garantit une qualité donnée, mais pas une utilisation donnée de la bande passante. En direct, il est important de ne pas dépasser votre débit d’envoi disponible, ni la vitesse de téléchargement des spectateurs.

Diffuser avec une bande passante constante est une option utilisée par certains encodeurs, mais ce mécanisme de contrôle du débit (ou son absence) gaspille de la bande passante et exige souvent une connexion de meilleure qualité pour le diffuseur comme pour les spectateurs.

XSplit utilise au contraire un encodage fondé sur la qualité et définit un VBV-maxrate ainsi qu’un VBV-buffer. Cela signifie que l’encodeur x264 de XSplit essaie de maintenir une qualité constante du flux et peut utiliser moins de bande passante dans les scènes moins complexes ou moins importantes. Le VBV-maxrate fixe un plafond à la bande passante que l’encodeur peut utiliser, par rapport au VBV-buffer.

Si vous définissez VBV-maxrate=2000 et VBV-buffer=4000, votre tampon VBV (tampon de décodage) sera rempli à un débit maximal de 2000 Kbps. Votre débit vidéo peut donc toujours dépasser la valeur ponctuelle de 2000 Kbps, MAIS vous ne dépasserez pas 4000 Kbit sur une période de 2 secondes. Autrement dit, VBV-maxrate n’est pas réellement le débit de pointe qui peut exister dans le flux : c’est seulement le débit maximal qui peut entrer dans le tampon.

Si vous comprenez ce concept, vous comprendrez aussi la souplesse offerte par vbv-buffer. Il permet à l’encodeur de regarder à l’avance une série d’images et d’utiliser davantage de bits pour certaines et moins pour d’autres, tant que le tampon n’est pas dépassé.

Il faut maintenant comprendre que vbv-buffer est réellement un tampon du côté du décodage et dépend donc du décodeur, principalement Flash Player dans notre cas. On peut configurer Flash Player avec un tampon allant de 0 seconde à, hmm, n’importe quelle durée, je suppose. Mais la plupart des fournisseurs fixent ces réglages à 1 ou 2 secondes. C’est pourquoi les plugins de streaming XSplit ajustent généralement vbv-buffer automatiquement à X ou 2 * X kilobits lorsque vbv-maxrate est fixé à X kilobits par seconde (Kbps). J’espère que tout commence à avoir du sens ! Si le tampon Flash Player de votre fournisseur était réglé sur environ 10 secondes, vous pourriez vraiment augmenter mon vbv-buffer et obtenir la même qualité avec moins de bande passante totale, ou une meilleure qualité avec la même bande passante. Vous donneriez essentiellement à l’encodeur plus de liberté pour augmenter ponctuellement le débit si nécessaire. Vous pouvez donc vous attendre à ce que l’équipe XSplit discute avec nos partenaires pour voir si nous pouvons les amener à ajuster leur tampon Flash Player à celui défini dans XSplit.

Pour terminer sur ce point, revenons à l’enregistrement local. Aucun débit maximal par défaut, vbv-maxrate, ni vbv-buffer n’est défini pour un enregistrement. Si vous voulez placer la vidéo enregistrée sur votre site web et permettre aux visiteurs de la lire avec Flash Player sur Internet, vous devriez toutefois y réfléchir. Si vous pensez que les utilisateurs finaux ne disposeront pas de plus de 1000 Kbps en téléchargement et que vous voulez que la vidéo commence après environ 4 secondes, appliquez les contraintes VBV appropriées en plus de la qualité attribuée à l’enregistrement local.

Dans notre exemple, nous utiliserions donc les réglages XSplit suivants :

VBV Max Rate:1000 kbpsVBV Buffer:4000 kbps

Nous devrions probablement aussi compenser l’audio. Dans ce cas, soustrayez simplement 1 x le débit audio de votre VBV Max Rate et 4 x le débit audio de votre VBV Buffer, et vous êtes prêt.


Preset d’encodeur

Plusieurs presets intégrés vont de « Ultrafast » à « Placebo ». XSplit utilise un preset personnalisé appelé « XSplit Default ». À l’avenir, vous pouvez vous attendre à ce que le réglage par défaut soit « Veryfast ».

Mais que signifie tout cela ?

H.264 définit un ensemble de fonctions de compression qu’un décodeur doit pouvoir prendre en charge ou décoder. Selon les capacités des décodeurs, elles sont réparties en groupes de profils : High Profile, Medium Profile et Base Line Profile. Pour l’instant, nous ne considérerons que High Profile, pris en charge par Flash Player.

Avec un preset donné, l’encodeur x264 utilise plusieurs fonctions avancées pour mieux compresser le flux binaire vidéo. Tout preset plus lent que « Superfast » produit un flux compatible High Profile, sauf si d’autres contraintes personnalisées sont ajoutées, mais ne nous en préoccupons pas pour le moment. Il suffit de savoir que plus le preset est lent, plus le flux sera compressé et meilleure sera la qualité avec une bande passante limitée. MAIS cela demande une puissance CPU importante selon la fréquence d’images et la résolution.

Le preset par défaut est « XSplit Default » ou « Veryfast », qui sont plus ou moins équivalents. Si aucun autre processus gourmand en CPU ne tourne en même temps et que vous souhaitez diffuser ou encoder 30 FPS en 1280 x 720 avec « Veryfast », un processeur i5 devrait convenir. Si l’utilisation CPU dépasse 70 % sur un cœur, vous devrez :

a) Utiliser une résolution inférieureb) Utiliser un preset plus rapide (comme superfast)c) Acheter une bonne machine Core i7

Pour faire court, le preset choisi correspond à la quantité de compression demandée à l’encodeur. Plus lent = plus de compression = plus d’utilisation CPU.

Pour préciser ce qui précède, répondons à la seule question qui vous vient probablement à l’esprit -:):


Question : Si j’effectue un enregistrement local avec une qualité de 8 et sans définir de contraintes VBV, obtiendrai-je une meilleure qualité vidéo en sélectionnant un preset plus lent ?

Réponse : NON, CE NE SERA PAS LE CAS. La qualité sera absolument identique, mais plus votre preset est rapide, moins la vidéo enregistrée sera compressée (fichier plus volumineux). MAIS si vos contraintes VBV-maxrate sont suffisamment restrictives, vous verrez une différence de qualité, car un preset plus lent maintiendra mieux le débit sous votre VBV-maxrate.

Commentaires


bottom of page