Au moment de faire les réglages sur votre logiciel de streaming, vient la question fatidique de l’encodage. Quel bitrate, quel encodeur, quelles options choisir ? Si on a vu en détail le bitrate, en tout cas pour ceux qui streament sur Twitch, et qu’on a déjà évoqué les options dans plusieurs vidéos également, on va s’intéresser aujourd’hui un peu plus en détail à l’encodeur. Quel encodeur choisir pour le stream ? Lequel choisir en fonction de votre configuration ?
Protocole de test
Alors pour ce test, j’ai choisi d’utiliser un bout de gameplay du jeu Far Cry 6, un jeu qui peut bouger pas mal avec beaucoup de végétation ce qui est assez complexe à encoder. Pour ça j’ai enregistré mon gameplay avec un très haut bitrate, alors ce n’est pas un format sans pertes au sens strict mais visuellement on s’en approche énormément puisque mon jeu était en Full HD et que j’ai enregistré en 1080p avec un bitrate de 50 000 kbps.
Cet enregistrement m’a donc servi de base pour ensuite encoder avec du x264, Nvenc et Quick Sync (QSV), le tout en 1080p60 avec 6000 kbps, puis en 1080p30 avec 6000 kbps de bitrate, et enfin en 1080p30 avec 3000 kbps de bitrate. L’objectif n’étant pas de déterminer quel est le meilleur bitrate pour une résolution donnée, mais bien de comparer le rendu des différents encodeurs dans les mêmes situations. Mais forcément si vous voulez un stream en 60 fps, vous vous doutez bien qu’il faudra plus de bitrate pour que ce soit propre que si vous voulez un stream à 30 fps.
Je précise également que je n’utilise pas le score VMAF de Netflix pour « chiffrer » la qualité des encodages, tout simplement parce qu’il reste une part de subjectivité. On a beau dire que le score VMAF est objectif, bah non en fait, chacun sa sensibilité, donc vous vous ferez votre avis à l’ancienne, avec vos yeux !
Et concernant la compression YouTube, à priori le phénomène est limité du fait du VP9 que je récupère relativement facilement sur mes vidéos et qui est bien plus quali que le AV1 traditionnel utilisé par YouTube. Ajoutez à cela le fait que je vais faire des arrêts sur image et que donc ça limitera d’autant plus les artefacts de compression et on devrait pouvoir s’en sortir pour faire ce petit comparo.
Encodeur AMF d’AMD
Non, je n’ai pas pu tester l’encodeur des cartes graphiques AMD, mais je me suis quand même renseigné et j’ai regardé beaucoup de tests pour arriver à une conclusion claire et précise : l’encodage en h265 des GPU AMD est très bon, y compris à faible bitrate, il est même parfois supérieur au Nvenc h265 de Nvidia dans certaines situations d’après ce que j’ai pu voir. Mais malheureusement on ne peut pas envoyer un flux encodé en h265 sur Twitch, et c’est bien dommage, ce n’est faisable qu’en h264. Et du coup, l’encodage en h264 chez AMD est encore plutôt mauvais, surtout à faible bitrate. À haut bitrate pour de l’enregistrement, ça va, mais à bas bitrate, donc typiquement ceux qu’on va retenir pour du streaming, l’encodeur AMD h264 est assez mauvais, il y a énormément de pertes de détails… Bref, c’est le moins bon, donc voilà, c’est dit !
L’encodeur x264
Dans OBS, vous pouvez voir que le x264 est une solution logicielle, en opposition à une solution matérielle comme l’encodeur d’une carte graphique. Et en tant que solution logicielle, le x264 va utiliser le processeur de votre PC pour traiter directement l’encodage dans OBS. Or, le processeur est un peu comme le cerveau de votre PC, il gère tout, donc si vous lui demandez de faire un encodage, qui est une tâche lourde, en plus de ce qu’il doit traiter pour faire tourner correctement le PC, il va devoir travailler encore plus. Et si le processeur atteint sa « limite » de traitement, il peut se retrouver « saturé » et l’encodage peut être perturbé. Imaginez Domingo qui fait le marathon de Paris, si vous lui demandez de courir plus vite, il va galérer, et au bout d’un moment il ne pourra pas aller plus vite, il arrivera à un palier de saturation. C’est pareil quand vous lancez un encodage en x264 avec votre processeur.
Tests x264
Pour cet encodeur, on trouve plusieurs pré-réglages ou presets, allant du plus rapide, et donc du moins qualitatif, au plus lent, avec donc avec la meilleure qualité. J’ai retenu quelques-uns des presets les plus courants, à savoir du moins qualitatif au plus qualitatif : veryfast, faster, fast et medium.
1080p60 6000 kbps
Comme vous le constatez, plus on monte le preset, plus les différences ont tendance à se lisser. Autant le veryfast est clairement le moins bon, à fortiori en 1080p à 60 fps et si on s’attarde sur les détails notamment ceux à l’arrière-plan ou certaines surfaces uniformes, autant entre du fast et du medium la différence commence à être très subtile. Après je signale quand même que 6000 kbps de bitrate vidéo pour du 1080p60, c’est trop faible, ça passe pour du 720p à la limite, et là je vous renvoie vers la vidéo que j’ai faite sur le choix du bitrate pour streamer sur Twitch si vous voulez en savoir davantage. Mais bon, le x264 medium sort quand même vainqueur au final avec un peu moins de pertes de détails que les autres presets, même si encore une fois la nuance est relativement faible.
1080p30 6000 kbps
Même chose pour les tests en 1080p mais cette fois à 30 fps. Deux fois moins d’images par seconde, donc deux fois plus de quantité de données par image puisque le bitrate ne change pas ! Et ça se voit, les différences deviennent encore plus ténues, parfois j’ai même l’impression que le veryfast donne de meilleurs résultats que le fast. D’où la non-utilisation du score VMAF comme je le disais dans le chapitre sur le protocole de test. Et c’est vraiment sur les images en fin de mouvement qu’on verra des différences entre les pré-réglages, mais sur les parties relativement peu mobiles, on obtient globalement des résultats convenables avec tous les presets.
1080p30 3000 kbps
Et enfin je teste le 1080p30 à 3000 kbps, donc là encore un débit à priori largement insuffisant pour ce type de résolution et on va aller vite pour vous épargner la bouillie de pixels. Là on voit clairement que les résultats sont plutôt moyens quel que soit le preset, voire carrément pas bons. Au final, le preset medium se démarque quand même et parvient malgré tout à garder un minimum de détail là où les autres sont vraiment à la ramasse…
x264 slow vs medium
Un mot sur le preset slow du x264, car on en parle souvent comme le Saint Graal de l’encodage pour le streaming, il est plus qualitatif que le medium mais est donc plus lent, et nécessite davantage de ressources. J’ai donc fait un test également, dans les mêmes conditions, et je dois dire que par rapport à du medium il y a encore une fois assez peu de différences, même s’il y en a quand même. Que ce soit à 3000 ou à 6000 kbps sur du 1080p30, on gagne encore un peu en détail sur l’arrière-plan notamment, mais difficile de placer le x264 slow loin devant le medium alors qu’il consomme pour le coup largement plus de ressources, on en reparlera dans la partie sur l’utilisation CPU.
L’encodeur Nvenc
On passe au Nvenc, qui est une solution matérielle puisque l’encodeur Nvenc se trouve sur une puce dédiée d’une carte graphique, en l’occurrence de chez Nvidia. Et j’insiste sur le fait que cet encodeur se trouve sur une puce dédiée, car en gros vous avez une partie de la carte qui gère l’affichage et les jeux 3D, la partie « principale » on va dire, et d’autres parties annexes qui peuvent servir à d’autres tâches. C’est le cas de la puce Nvenc, qui sert notamment à encoder et décoder des flux vidéo.
Bref, tout ça pour dire que comme Nvenc est sur une puce dédiée, en théorie elle n’a pas d’impact sur le jeu. Mais dans la pratique, le fait d’utiliser Nvenc va quand même impacter un minimum le jeu, même si ça reste limité. En fait, l’impact de Nvenc sur les performances en jeu est d’autant plus important que la carte graphique est sollicitée, et ça on en reparlera en fin de vidéo, je vous invite à bien écouter cette partie car c’est important si vous voulez éviter les saccades sur votre stream.
Tests Nvenc
Pour l’encodeur Nvenc on retrouve plusieurs pré-réglages également, j’ai retenu les presets Performances et Qualité. J’ai aussi fait un test avec le preset Qualité auquel j’ai ajouté les options spécifiques à cet encodeur dans OBS, à savoir la Prédiction Look-ahead et les Améliorations psycho-visuelles. Ma carte graphique est une RTX 2080, un GPU de génération Turing, donc avec la dernière version de l’encodeur Nvenc qui est réputée comme étant la plus qualitative, et je confirme que l’encodeur est exactement le même sur la génération suivante, la génération Ampère, donc les RTX 3000. Bref, le Nvenc dernière génération.
1080p60 6000 kbps
Comme pour le x264 on a relativement peu de différences entre les trois presets, avec quelque chose de propre sans être transcendant, mais encore une fois c’est surtout dû au bitrate qui est trop faible par du 1080p60. Au niveau de la végétation on voit très peu de différences, et c’est là d’ailleurs l’un des points faibles du Nvenc d’ailleurs. Sinon parfois on peut constater quelques incohérences avec un preset perf plus propre que le preset qualité, j’ai répété plusieurs fois les tests pour être sûr et à chaque fois j’ai fait le même constat. Mais seulement sur certains passages, dans l’ensemble le preset qualité est un poil au-dessus quand même, idem quand on active les options de Prédiction look-ahead et les Améliorations psycho-visuelles.
1080p30 6000 kbps
Avec un bitrate plus adapté à la résolution et au frame rate, les différences s’amenuisent et on observe clairement une hiérarchie au niveau qualitatif. Mais tout comme le x264, à part sur certaines images en fin de mouvement où on peut mieux saisir les différences, au final, globalement et notamment sur des images fixes, les résultats sont convenables avec les trois presets. Bémol tout de même sur le preset Qualité avec les options d’amélioration activées, qui on tendance à donner un meilleur rendu au centre de l’image mais complètement brouillé sur les côtés et l’arrière-plan, donc le vainqueur ici est le preset Qualité seul.
1080p30 3000 kbps
Et donc dernier test avec un bitrate bien trop faible pour la résolution de sortie, là aussi on va passer rapidement pour éviter de se flinguer les yeux avec de la bouillie de pixels et on va passer à la comparaison sur les images fixes. Et une fois de plus, avec un bitrate non adapté on peut observer des incohérences dans la hiérarchie des pré-réglages, avec le preset Performances qui tire bien son épingle du jeu et des options d’améliorations qui sont contre-productives. Donc encore une victoire pour le preset Qualité seul. Mais bon, je le redis, avec un tel bitrate, il faudrait une résolution de sortie en 720p pour obtenir un résultat potable, donc c’était vraiment histoire de faire le test…
Nvenc Qualité Max
Un mot sur le preset Qualité Max, qui va simplement permettre de faire une 2e passe d’encodage là où le preset Qualité n’en fait qu’une. Au final, après moult tests, j’ai vraiment eu du mal à trouver des différences. Ça ne m’a vraiment surpris pour le coup, mais j’ai quand même répété plusieurs fois les tests et j’en arrive toujours au même résultat. Donc je ne conseille pas ce preset Qualité Max car il n’apporte vraiment pas grand-chose et surtout il va solliciter un peu la partie principale de la carte graphique, en plus du Nvenc. On en reparlera aussi en fin de vidéo.
L’encodeur QSV
Quick Sync (abrégé en QSV) est un autre encodeur, disponible avec la plupart des processeurs Intel récents qui ont un iGPU, donc une puce graphique intégrée et, comme pour Nvenc, c’est une partie dédiée du processeur qui va gérer l’encodage. Donc là encore, en théorie peu d’impact sur les performances du processeur. Dans la pratique, c’est très variable, pour les mêmes raisons que le Nvenc, à savoir que si le processeur est déjà saturé, même si l’encodeur n’est pas sur la partie « principale » du processeur il va faire la tronche.
Tests QSV
Cet encodeur dispose de trois pré-réglages principaux, avec du moins qualitatif au plus qualitatif : speed, balanced et quality. Pour les tests j’ai utilisé un mini PC Asus équipé d’un processeur Intel 10210U, donc un processeur basse consommation, pas franchement un foudre de guerre,mais qui dispose de Quick Sync. Au début je voulais utiliser le i7 6950X de mon PC de stream, mais il se trouve que sur les Core Extreme Edition il n’y a pas d’iGPU et donc pas de Quick Sync. Bref, j’ai fait en sorte que le mini PC donne le meilleur de lui-même pour réussir l’encodage, notamment en 1080p60 qui commençait à bien l’énerver.
1080p60 6000 kbps
Curieusement, avec un bitrate insuffisant mais qui reste un peu « élevé », on observe des résultats assez déroutants avec un preset speed qui devance souvent le preset quality. Ce dernier a la fâcheuse tendance à vouloir lisser les surfaces, du coup on perd clairement en détail. Alors ça ne veut pas dire que le preset speed est bon, mais je le trouve moins mauvais sur pas mal d’éléments de l’image. Et du coup c’est plutôt le preset balanced qui se détache un peu avec un compromis entre détails et lissage sur certaines textures, mais c’est vraiment très subtil dans cette configuration précise.
1080p30 6000 kbps
Dès qu’on a suffisamment de bitrate pour notre résolution et notre frame rate, là on constate clairement que le preset speed montre ses limites, notamment sur les fins de mouvements. On a du flou, l’encodeur n’ayant pas le temps de récupérer suffisamment de données pour améliorer la qualité. Phénomène qu’on n’a pas avec les deux autres presets. Mais là encore le preset quality perd la bataille face au balanced, avec une tendance à brouiller l’arrière-plan, ce qui est assez étonnant mais qui était répété lors de phases de capture. Vainqueur : balanced à nouveau.
1080p30 3000 kbps
Et dans des conditions avec très faible bitrate, le preset quality reprend du poil de la bête mais garde sa tendance à lisser l’arrière-plan. Le preset speed est encore derrière, mais pas si loin, et celui qui se détache est une fois encore le preset balanced, donc équilibré, qui fait le job sans charger l’encodeur. Donc clairement LA solution à retenir si vous voulez utiliser l’encodeur QSV.
x264 vs Nvenc vs QSV
Bon c’est bien beau tout ça, mais ça ne me dit pas quel est le meilleur encodeur ! Du coup, on va faire une comparaison directe en les mettant côte à côte. On ne fera qu’un seul test cette fois, en 1080p30 avec 6000 kbps de bitrate qui est le choix le plus logique si on veut streamer sur Twitch, 6000 kbps étant insuffisant si on pousse à 60 fps, et 3000 kbps étant insuffisant pour du 1080p même à 30 fps. Donc j’ai retenu le meilleur résultat pour chaque encodeur, sauf pour le x264 car j’estime qu’à l’heure actuelle c’est quand même rare d’encoder slow alors qu’on peut facilement se procurer un processeur capable de faire du x264 medium, comme en témoigne le PC de stream à 500 euros que j’avais testé dans une vidéo précédente. Donc on va comparer x264 medium, Nvenc Qualité, et QSV Balanced. qui sont globalement les presets que j’ai jugés les meilleurs pour une utilisation avec un bitrate cohérent.
Je vous épargne le comparatif en mouvement et on va s’arrêter sur quelques images afin d’essayer d’établir un petit classement. Images que j’ai prises de façon aléatoire, je n’ai essayer de favoriser aucun encodeur et je ne fais que regarder le résultat au moment du montage.
1re image : assez serré, l’arrière-plan est plus net avec le x264 qui donne dans son ensemble une très bonne image, le premier-plan est le moins détaillé avec Nvenc je trouve, et les contours plutôt nets avec QSV. Donc 2 points pour le x264, 1 point pour le QSV et 0 point pour le Nvenc.
2e image : le grand perdant est le QSV avec un rendu un peu flou, Nvenc se rebiffe en fournissant plus de détails et devance d’une courte tête le x264 qui reste très bon malgré tout. Donc 2 points pour le Nvenc, 1 point pour le x264 et 0 pour le QSV.
3e image : les tendances s’inversent à nouveau avec un x264 qui perd en détail sur cette frame, et un QSV qui devance d’un chouïa le Nvenc, avec des contours nets au premier plan et un poil plus de détails à l’arrière-plan. Donc 2 points pour le QSV, 1 point pour le Nvenc et 0 pour le x264.
4e image : exemple typique où le score VMAF de Netflix aurait pu donner un vainqueur chiffré, et où à titre personnel j’estime qu’il y a totalement match nul. Les nuances sont infimes et je décide donc de n’attribuer aucun point cette fois-ci.
5e image : dernière image, là encore pas de points attribués car on a quasiment 3 fois le même rendu.
Conclusion : c’est une égalité, et on va essayer de départager les encodeurs juste après avoir parlé de l’utilisation des différents composants de votre machine de stream.
Utilisation CPU
Si vous avez bien écouté le contenu de cette vidéo, vous savez que plus un encodage est complexe, plus il faudra de ressources sur votre machine pour exécuter cette lourde tâche. C’est valable pour le processeur si vous encodez en x264, mais aussi pour Nvenc si vous utilisez une carte graphique Nvidia, et pour Quick Sync également.
Exemple avec le x264, pour lequel j’ai noté le pourcentage d’utilisation du CPU dans OBS. Au repos avec juste la vidéo de base qui tournait, OBS m’indiquait une utilisation CPU systématiquement inférieure à 1 %, sachant que j’ai un AMD 3800X, donc un 8 coeurs / 16 threads. Dès que je lançais un encodage, le taux d’utilisation CU augmentait, c’est logique. Mais pour aller plus loin, sur un encodage en 1080p30 avec 6000 kbps de bitrate, en fonction du preset je suis passé de ~10 % en veryfast à plus de 40 % en slow. En passant l’encodage à 60 fps au lieu de 30, c’est valeur sont montées respectivement à ~15 % en veryfast, et carrément 60 % avec des pics à 70 en slow.
Donc surveillez bien votre processeur quand vous choisirez votre presets si vous ne voulez pas surcharger l’encodeur. Et je conclurai en énonçant l’évidence : plus vous voulez de la qualité, plus il faudra un processeur puissant.
Utilisation GPU
Pour le Nvenc, les presets de base fonctionnent bien, on a même vu que ça donnait de très bons résultats, mais là ce qu’il faudra surveiller, c’est le taux d’utilisation de votre carte graphique. Comme je le disais plus tôt, l’impact de Nvenc sur les performances en jeu est d’autant plus important que la carte graphique est sollicitée, mais l’inverse est vrai aussi, le jeu peut avoir un impact sur les performances de l’encodeur Nvenc, et quand ça arrive, vous avez des saccades sur votre stream.
Exemple. Si votre GPU est à 95 % d’utilisation pour faire tourner un jeu gourmand, Nvenc risque d’impacter directement votre jeu en diminuant ses performances, et l’encodeur lui-même risque d’être impacté. En revanche, si vous êtes malins et que vous bridez vos fps en jeu, votre GPU tournera peut-être à 70 ou 80 %, et du coup il y aura de la marge pour utiliser Nvenc. Car la puce Nvenc a malgré tout besoin de puissance pour fonctionner correctement, donc si le GPU est déjà utilisé à fond pour un jeu, en tirant de la puissance, Nvenc va empêcher qu’il soit utilisé pour le jeu, et donc l’impact sur les performances sera plus marqué et l’encodeur pourra en pâtir.
Autre point, certaines options testées durant l’encodage vont directement solliciter la partie du GPU qui est utilisée pour le rendu du jeu, et donc pareil si votre jeu bouffe 100 % du GPU et que vous activez ces options, ça risque de coincer un peu et d’entraîner des saccades.
Ces options sont au nombre de trois : le preset Qualité Max (qui va effectuer 2 passes d’encodage au lieu d’une), la Prédiction Look-ahead et les Améliorations psycho-visuelles. Ces options améliorent un peu la qualité du rendu final, donc si vous voulez les activer, surveillez le taux d’utilisation de votre carte graphique.
Conclusion : bridez toujours vos fps quand vous jouez et streamez sur un seul PC, non seulement ça réduira l’usure de votre GPU, mais en plus vous limiterez le risque de saccades sur votre stream !
Quel encodeur choisir ?
Tout d’abord ça dépendra de votre matériel, si vous avez une carte graphique AMD, vous n’aurez pas accès au Nvenc, c’est évident. Pareil pour le x264, ça dépendra de la puissance et du nombre de coeurs de votre processeur. Donc difficile de donner un gagnant et de vous dire : prenez cet encodeur, c’est le meilleur ! Chacun peut s’y retrouver et obtenir une bonne qualité pour son stream, le tout est de ne pas faire n’importe quoi avec le bitrate.
Maintenant, à résolution et frame rate équivalents, on l’a vu juste avant, il n’y a pas de vainqueur par KO, et correctement réglés, ces trois encodeurs se valent. Ça n’aurait pas été le cas si j’avais utilisé le Nvenc de la génération précédente, qui était plus proche du x264 fast voire faster en termes de qualité, mais avec le nouveau, rien à dire, résultat très propre. Bonne surprise aussi avec le QSV balanced qui fait carrément le job, donc solution à envisager si vous avez un processeur Intel et une carte graphique AMD par exemple.
Le x264 slow donne encore un chouïa mieux que le medium, mais les différences sont un peu trop minces pour vous conseiller d’acheter un CPU capable d’encoder en x264 slow, même si c’est faisable. Donc pour une configuration mono-PC, en règle générale n’importe quel encodeur fera l’affaire. On pourra peut-être privilégier malgré tout le Nvenc, à fortiori si on veille à bien configurer son jeu en limitant les fps. Mais chaque encodeur est totalement viable.
Bref, ne vous prenez pas trop la tête avec le choix de l’encodeur, faites en fonction de votre matériel, et si vous avez besoin d’aide pour les réglages, vous avez un Discord communautaire qui n’attend que vous pour répondre à vos questions, lisez juste bien les règles pour débloquer les salons de discussion, ça serait dommage de ne pas en profiter.
Si tout ça vous a été utile, n’oubliez pas le petit pouce bleu, vous pouvez vous abonner à la chaîne YouTube et activer la cloche pour ne rater aucune nouvelle sortie. Et sur ce, c’est la fin de cette longue vidéo, on se retrouve très vite pour la prochaine et d’ici-là… bon stream !
Crédit miniature : https://twitter.com/Zeneles