« Pourquoi j’ai des pixels sur mon stream ? »… « Pourquoi ma webcam devient pixellisée quand je joue ? »… Même si j’ai déjà fait des vidéos qui traitent en détail des encodeurs, du bitrate, de la résolution, c’est une question qui revient tellement souvent que je me suis dit que j’allais vous faire un guide récap. Donc si vous aussi, vous vous posez la question, vous êtes au bon endroit !
Points à vérifier
Donc quand on parle d’un stream pixellisé, c’est un abus de langage, évidemment, heureusement qu’il y a des pixels, sinon on n’aurait pas d’image. Mais c’est surtout ce qu’on appelle plus trivialement de la « bouillie de pixels » qu’on voudrait bien éliminer. En fait, ce phénomène porte un nom, ça s’appelle des macroblocs. Ce sont des artefacts, des anomalies, qui peuvent survenir lors de la compression numérique d’un flux vidéo.
Bref, c’est moche, et plus l’image va bouger, plus le phénomène pourra être présent. Et donc dans ce guide je vais passer en revue tous les points à contrôler pour limiter au maximum cette pixellisation, à savoir :
- bitrate
- résolution du stream
- fps
- encodeur
- options annexes qui peuvent jouer sur la qualité du stream
Bitrate vidéo
Premier élément, c’est généralement le paramètre qui aura le plus d’impact sur la qualité d’un stream Twitch, c’est le bitrate, ou débit vidéo. Plus on monte ce bitrate, meilleure sera la qualité de l’encodage et donc du stream. Exemple tout bête, si j’ai mon stream en 1080p et que je mets 2000 kbps de bitrate, ça sera forcément moins joli qu’avec 6000 kbps de bitrate.
Mais ça vous le saviez déjà puisque j’ai fait une vidéo entière pour savoir comment choisir son bitrate pour streamer sur Twitch.
Malheureusement, Twitch limite le bitrate maximum qu’on peut envoyer en stream. Officiellement la limite est de 6000 kbps, mais ce n’est pas une réelle limite, c’est une recommandation, la limite officieuse se situe plutôt vers 8000 kbps voire un peu plus, et on peut s’en approcher absolument sans risque, pas besoin d’être partenaire ou affilié.
Mais on a plusieurs problèmes qui découlent de tout ça :
- Si je règle un bitrate supérieur à cette limite, par exemple 15000 kbps, Twitch va bugger et le stream ne fonctionnera pas, vous aurez un message d’erreur ou un écran noir sur votre chaîne.
- Si je suis trop proche de la limite et donc des 8000 kbps, c’est possible que le stream fonctionne mais qu’il y ait parfois des bugs ou des saccades, tout simplement car il peut y avoir des pics d’encodage, et ce même si vous réglez le contrôle du débit en CBR qui signifie que le débit doit rester constant. Exemple classique : je fais une pause dans mon jeu et d’un coup je bouge la caméra dans tous les sens, il y aura alors un pic de bitrate du fait de la sollicitation importante et rapide de l’encodeur. Si ce pic dépasse trop la limite imposée par Twitch, mon stream risque de saccader et de pixelliser, donc dans ce cas, une solution est de réduire très légèrement le bitrate, par exemple à 7800 kbps au lieu de 8000.
- Enfin, même en réglant un bitrate élevé, s’il y a beaucoup de mouvement à l’image, c’est possible qu’on ait quand même l’apparition de macroblocs, et ça malheureusement on peut essayer de limiter le phénomène mais on ne pourra pas toujours le supprimer complètement, la compression vidéo et l’encodage restent des processus destructeurs je le rappelle.
Bref, tout ça pour dire que même si en théorie c’est mieux de mettre un bitrate élevé pour avoir une meilleure qualité de stream sur Twitch, il faudra rester dans une certaine enveloppe. Et pour ça, eh bien je vous invite à vous référer à la vidéo traitant du bitrate sur Twitch, qui sera un excellent point de départ pour les réglages, voici d’ailleurs le désormais célèbre tableau récapitulatif du bitrate Twitch.
Connexion internet
Petite parenthèse en lien avec le bitrate, je voudrais attirer votre attention sur quelque chose de très important à comprendre. Le bitrate, c’est un débit, et donc il devra forcément respecter le débit de la connexion internet. Donc deux points à retenir ici :
- Si vous réglez un bitrate par exemple à 6000 kbps, il vous faudra au moins autant en upload sur votre connexion internet, donc au moins 6 Mbps, et pour les viewers il faudra au moins 6 Mbps en download pour regarder le stream sans souci, c’est aussi simple que ça.
- Votre upload pour streamer et ce qu’il faut aux viewers en download pour regarder le stream, c’est conditionné uniquement par le bitrate de votre stream. Rien à voir avec la résolution de sortie ou les fps. Un stream en 720p à 30 fps réglé à 6000 kbps demandera exactement la même connexion internet qu’un stream en 1080p à 60 fps réglé à 6000 kbps, car le débit est identique !
Du coup, comme seul le débit importe, pensez à bien vérifier que votre connexion supporte un tel bitrate, en la testant par exemple avec un site comme speedtest.net, et assurez-vous que les viewers ayant une petite connexion ne seront pas pénalisés par un trop gros bitrate. Et pour ça il faut s’assurer d’avoir le transcodage, c’est à dire le choix de qualité sur votre stream, plus d’infos là-dessus dans ma vidéo pour tout savoir sur le transcodage Twitch. Et je referme la parenthèse sur la connexion internet.
Résolution de sortie
Donc pour améliorer la qualité de son stream et réduire la pixellisation, le bitrate est très important, mais comme on est limités à ce niveau par Twitch, on va pouvoir jouer sur un autre élément essentiel : la résolution de sortie du stream. En fonction du contenu que vous streamez, ce n’est pas forcément une bonne idée de streamer en 1080p, ça aussi on l’a vu dans la vidéo sur le bitrate. Exemple avec Rocket League, qui est réputé pour être compliqué à encoder et à streamer.
En 1080p60 avec 8000 kbps de bitrate, lors des phases où la caméra bouge beaucoup, on peut voir des macroblocs à divers endroits, et j’ai presque envie de dire que c’est normal, le bitrate est insuffisant. Mais je ne peux plus le monter, je suis à la limite de Twitch, donc comment faire ? Eh bien je vais diminuer la résolution de sortie, par exemple en 936p, soit 1664×936, toujours à 60 fps et avec 8000 kbps de bitrate, et là le résultat est déjà plus propre, j’observe moins de macroblocs !
Et là vous allez me dire que l’image est plus petite, c’est nul. Mais même si j’agrandis artificiellement mon stream aux dimensions 1080p, ça reste malgré tout plus propre.
Deuxième point, je n’ai pas les chiffres mais je ne suis pas sûr que la majorité des gens regardent un stream sur Twitch en plein écran. Du coup en conditions classiques, le lecteur Twitch sur PC n’a pas des dimensions de 1920×1080 pixels, on est beaucoup plus proche du 720p, et l’éventuelle différence de netteté qu’on peut avoir avec des résolutions inférieures et très très largement compensé par la disparition des macroblocs, qui améliore bien plus le confort de visionnage selon moi. Enfin, dites-vous aussi que pas mal de viewers sont sur mobile, donc avec la taille très réduite de l’écran d’un téléphone, les différences de netteté sont encore moins visibles, enfin personnellement je trouve que c’est beaucoup plus intéressant d’essayer de réduire la pixellisation.
Frame rate
Un petit mot également sur le frame rate, les fps, ou images par seconde en français. Plus il y a d’images à traiter par seconde, plus l’encodeur va travailler, ça paraît logique. Or le bitrate reste fixe, il correspond à un débit et donc à une quantité de données par seconde. Maintenant imaginez que je passe de 60 fps à 30 fps. J’aurai deux fois moins d’images à traiter par seconde, ça veut dire deux plus de données par image, donc moins de macroblocs et une meilleure qualité.
J’ai schématisé grossièrement pour dire que si je réduis le nombre de fps sur mon stream, je peux augmenter la quantité de données par image, et donc in fine réduire la pixellisation. Donc si vous streamez à 60 fps, que vous avez déjà essayé de monter le bitrate ou de baisser la résolution de sortie de votre stream et que vous avez encore de la pixellisation, vous pouvez envisager de réduire les fps. Pas forcément à 30, ça peut marcher avec des valeurs intermédiaires comme 50 fps par exemple. Et bien entendu ça dépendra de ce que vous souhaitez privilégier, 60 fps c’est plus fluide que 30 fps, mais peut-être qu’avec 30 fps ça pixellisera moins. Donc c’est vous qui voyez, mais avec certains contenus, 30 fps ça peut suffire en stream. Il suffit de regarder les jeux sur console, on en trouve encore énormément à 30 fps, du coup dans ce cas, streamer à 60 fps n’a aucun intérêt puisqu’on va rajouter des images qui n’existaient pas avant.
Encodeur et pré-réglage
Ensuite un autre paramètre à prendre en compte, c’est l’encodeur que vous utilisez pour streamer. Et là on va aller vite parce que j’ai fait une vidéo qui détaille justement ces encodeurs, je les ai testés et j’ai même fait une sorte de classement. Mais en gros, si vous utilisez l’encodeur d’une carte graphique AMD, il ne faudra pas s’attendre à des miracles, c’est comme ça, faut faire avec. Si vous utilisez Quick Sync, le pré-réglage « Équilibré » est votre meilleure option d’après mes tests. Si vous utilisez Nvenc, le pré-réglage « Qualité » est le plus adapté, oubliez le pré-réglage « Qualité maximale » pour le stream, c’est plus adapté à de l’enregistrement, j’en ai déjà parlé, en plus ça sollicite la partie de la carte graphique qui est utilisée pour les jeux, donc vous risquez de perdre en performances.
Et si vous utilisez le x264, là des pré-réglages il y en a beaucoup. Plus vous utilisez un pré-réglage lent, meilleure sera la qualité, mais plus il faudra de puissance pour encoder. En général on conseille de partir sur du veryfast, de regarder ce que ça donne et ensuite on descend dans la liste des pré-réglages pour quelque chose de moins rapide mais de plus quali. Au final, c’est certain qu’avec un pré-réglage « medium », j’aurai de meilleurs résultats qu’avec un pré-réglage « ultrafast », encore faut-il que ce soit supporté par mon PC. Et ça je ne le saurai qu’en faisant des tests, et là je vous renvoie vers le chapitre concernant les tests un peu loin dans cette vidéo. Et pour info, le dernier Nvenc en pré-réglage « Qualité » est quasiment équivalent à du x264 en pré-réglage « medium », ce qui est déjà très bon.
Autre options
Enfin, on a quelques autres options qui peuvent éventuellement jouer sur la qualité du stream, de façon plus ou moins subtile. Je vais me débarrasser tout de suite de l’intervalle d’images-clés, qui est une option qu’on trouve avec les réglages de l’encodeur. En fait l’encodeur utilise des images clés, qui sont des images complètes, et les images qui suivent ne sont que des images partielles qui correspondent à ce qui a évolué par rapport à l’image précédente. Ça permet d’économiser des données, c’est plutôt intéressant, et en théorie, moins l’intervalle entre deux images-clés est grand, plus on a d’images clés, et donc meilleure sera la qualité.
Pour du streaming, un intervalle de 2 secondes est conseillé par Twitch, par YouTube et par Facebook Gaming, donc à moins que vous ayez un intérêt particulier à jouer avec cette option, je vous déconseille de mettre autre chose que ce qui est recommandé. En revanche, vous pouvez régler la valeur à la main puisque, par défaut, OBS la met sur 0, à savoir un intervalle automatique. Le mettre sur 2 aidera peut-être à obtenir un meilleur résultat sur votre stream.
Un mot également concernant l’encodeur Nvenc à nouveau, qui permet d’utiliser deux options directement en cochant des cases. Je précise « directement » car ces options on les retrouve aussi avec le x264, c’est juste qu’il faut alors les régler via des commandes dans le champ « options x264 », et ça tout le monde ne sait pas faire. Bref, autant on peut oublier l’option Prédictions Look-ahead pour du streaming, autant les Améliorations psycho-visuelles peuvent avoir un impact sur la qualité, mais aussi sur la pixellisation. En activant ce paramètre, l’encodeur va améliorer la qualité perçue, donc en gros se focaliser davantage sur le centre de la vision, et donc de l’image, et réduire la qualité sur la vision périphérique. Du coup, ça peut provoquer l’apparition de macroblocs sur les côtés de l’image, c’est un choix à faire et cette option est utile si vous streamez du contenu rapide, comme un FPS ou jeu de course par exemple.
Webcam pixellisée
Autre cas de figure qui revient souvent, la fameuse webcam pixellisée. Pourquoi ça fait ça ? C’est simple, l’encodeur va traiter en priorité les parties en mouvement de la vidéo, et comme une webcam ça bouge peu, l’encodeur va considérer que ce n’est pas un élément essentiel et va se concentrer ailleurs et va donc allouer davantage de bitrate aux zones en mouvement. Je vous repasse les détails sur les images-clés, mais du coup pour pallier ce problème, il suffit de suivre les recommandations que j’ai données tout au long de cette vidéo : augmenter le bitrate, réduire la résolution de sortie, diminuer les fps, désactiver les améliorations psycho-visuelles… Car je rappelle que ces améliorations psycho-visuelles privilégient le centre de l’image, or, un élément comme la webcam se trouve généralement dans le champ de vision périphérique, donc ça peut être une des raisons qui font que la webcam est pixellisée. Bref, tout ce qu’on vient de voir avant s’applique pour réduire la pixellisation sur la webcam quand vous streamez !
Résumé pour les fainéants
En résumé, si vous voulez réduire les macroblocs donc la pixellisation sur votre stream, il va falloir :
- mettre suffisamment de bitrate, en restant dans les limites de votre connexion internet et sans oublier le fameux transcodage sur Twitch
- adapter la résolution de sortie, si elle est trop élevée, ça peut provoquer de la pixellisation
- éventuellement réduire les fps, ça fera moins d’images à traiter par seconde et donc plus de données pour chaque image
- choisir le bon encodeur et le bon pré-réglage, dans la limite des capacités de votre PC
- jouer avec les options secondaires comme les améliorations psycho-visuelles de l’encodeur Nvenc par exemple
- tant qu’on y est, lancez OBS ou l’appli Streamlabs en mode administrateur, ça sera fait et c’est recommandé par les dev !
Faire ses propres tests
Je termine en vous donnant un dernier petit conseil si vous voulez voir à quoi ressemble votre stream, il suffit de faire un enregistrement avec exactement les mêmes paramètres, étant donné que Twitch ne touche pas à votre stream, il n’est pas réencodé comme sur YouTube. Et pour ça, le plus simple c’est d’utiliser l’option « Utiliser le même encodeur que pour le stream » sur OBS, ou l’option « Use stream encoder » si vous utilisez l’appli Streamlabs. Faites vos réglages, enregistrez et regardez sur votre fichier final si vous avez de la pixellisation ou pas. Et si ça ne vous convient pas, faites de nouveaux réglages, un nouvel enregistrement, et comparez avec l’ancien. C’est comme ça que vous pourrez améliorer vous-même la qualité de votre stream !
Si avec ça vous avez encore des pixels sur votre stream, dites-vous qu’on a fait le maximum, et n’oubliez pas non plus que le type contenu joue aussi, si ça bouge beaucoup à l’écran comme sur Rocket League ou Fortnite, ça sera plus compliqué d’obtenir un résultat propre que sur un jeu comme Hearthstone qui est plus statique.
En tout cas si cette vidéo vous a été utile, n’hésitez pas à la partager, vous pouvez aussi laisser un petit pouce bleu, vous abonner à la chaîne et activer la cloche, ça fait toujours plaisir. J’en profite pour vous rappeler que si vous avez des questions concernant le streaming, vous pouvez venir me les poser dès que je suis en live sur Twitch, la porte est toujours ouverte, et pour les questions plus techniques, je vous invite à rejoindre le Discord communautaire Zero Absolu Gaming, lisez bien les règles pour débloquer les salons d’aide et on vous répondra au plus vite, tous les liens dont avez besoin sont dans la description juste en dessous. Sur ce, c’est la fin de cette vidéo, on se retrouve très vite pour la prochaine et d’ici-là… bon stream !
Crédit miniature : https://twitter.com/Zeneles