Streamer en 4K UHD ou à 120 FPS sur Twitch, ça sera bientôt possible grâce au codec AV1 ! Ce codec c’est littéralement le futur des flux vidéos sur internet, donc forcément ça va intéresser les streamers. On va donc faire un point sur ce AV1, voir ses avantages, ses inconvénients, comment bien l’encoder et je vous livrerai les tests que j’ai fait en comparaison avec le H.264, vous allez voir, c’est du lourd.
Le codec AV1
Si on fait un petit tour sur Wikipédia, on apprend que le AV1 est un « codec vidéo ouvert et libre de droits créé en 2018 et conçu pour la diffusion de flux vidéo sur Internet et réseaux IP comme successeur de VP9. ».
Derrière le AV1 on a des boîtes comme Amazon, Google, Microsoft, Netflix, bref, pas des petits joueurs, et vous vous doutez bien que ces entreprises ne font pas dans la philanthropie donc quand on dit que ça va arriver sur Twitch, oui, le AV1 va arriver sur Twitch. On avait entendu parler initialement de 2022 voire 2023, finalement ça sera plutôt 2023-2024, voire 2025 pour une adoption généralisée du AV1, mais ça va venir, c’est une certitude. Et notez qu’on peut d’ores et déjà enregistrer sur OBS avec le codec AV1, la preuve c’est ce que j’ai fait pour les besoins des tests de cette vidéo.
Avantage du AV1
Mais pourquoi on fait toute une montagne du AV1 ? Eh bien car le gros avantage de ce codec, c’est qu’il permet un meilleur taux de compression qu’un codec comme le H.264 par exemple, qui est la norme actuelle sur Twitch, et ça veut dire qu’il faut généralement moins de bitrate, moins de débit vidéo pour obtenir une qualité en AV1 équivalente à celle en H.264. Conséquence directe : s’il faut moins de débit pour la même qualité, on peut économiser de la bande passante, donc littéralement avoir besoin de moins de connexion internet. Ça vous paraît peut-être abstrait pour l’instant, mais vous verrez lors des tests visuels que ça change complètement la donne.
Inconvénient du AV1
En contrepartie, le AV1 nécessite davantage de ressources de calcul, que ce soit pour l’encodage ou pour le décodage. Vous verrez aussi tout à l’heure à quel point la puissance nécessaire pour encoder en AV1 est folle. Mais pour revenir sur le décodage, donc simplement pour pouvoir lire une vidéo en AV1, il faut plus de ressources que pour une vidéo en H.264 ou H.265. C’est aussi une des raisons pour lesquelles on n’a pas encore de AV1 sur Twitch, car à l’époque de l’annonce, donc en 2018, les appareils capables de décoder convenablement le AV1 étaient peu courants. D’ailleurs pour les curieux, vous pouvez le tester sur YouTube, puisque YouTube propose une option pour lire certaines vidéos en AV1, et vous verrez que ça sollicite davantage votre PC, donc imaginez sur un téléphone.
Encodage / Décodage
Alors comme je le disais, que ce soit pour encoder ou pour décoder le AV1, il faut beaucoup de puissance de calcul. Prenons un exemple concret : vous voulez enregistrer une vidéo sur OBS en AV1. Vous avez bien entendu toujours la possibilité d’encoder une vidéo de façon logicielle, donc en utilisant votre processeur. Eh bien j’ai testé, que ce soit en SVT-AV1 ou en AOM-AV1, donc les deux encodeurs logiciels disponibles d’office sur OBS, mon processeur était littéralement à genou et j’ai obtenu quasi systématiquement un message de surcharge de l’encodeur.
Pour situer, j’ai un Ryzen 3900X, donc un processeur à 12 cœurs physiques et 24 cœurs logiques. Ce n’est pas un petit processeur, loin de là, on est plutôt sur le haut de gamme. Eh bien malgré ça, je n’ai jamais pu obtenir d’enregistrement convenable en AV1, au mieux j’ai pu encoder en SVT-AV1 mais avec le dernier pré-réglage, le plus rapide et donc le moins qualitatif, ce qui fait que j’ai obtenu un résultat assez mauvais, en tout cas avec les paramètres que je m’étais fixés.
Et le reste du temps, que ce soit en SVT-AV1 ou en AOM-AV1, j’avais des erreurs d’encodage avec soit la vidéo ultra saccadée, soit le message de surcharge de l’encodeur. Et pour information, les paramètres d’encodage que j’ai retenus c’était du CBR avec un bitrate vidéo à 8000 kbps, que j’ai choisi car c’est la limite maxi actuelle sur Twitch, donc je trouvais que ça faisait sens de tester le AV1 en CBR avec ce débit.
Encodeur Nvenc
Autant vous dire qu’en l’état, l’encodage logiciel en AV1 est totalement exclu pour du stream sur Twitch. C’est là qu’entrent en jeu les encodeurs matériels, comme Nvenc, et les décodeurs matériels également, au pif comme Nvdec. Mais nous c’est l’encodeur qui va nous intéresser aujourd’hui, car si le décodage matériel du AV1 est possible depuis les RTX Série 30, l’encodage matériel du AV1 est possible depuis les RTX Série 40. Et c’est là que j’en profite pour remercier Stéphane de chez Nvidia pour m’avoir permis de récupérer une RTX 4080 qui m’a servi pour faire des tests et pour vous livrer mes résultats en vidéo. Résultats qu’on pourra interpréter de deux façons différentes, on y reviendra.
Alors bien sûr je me focalise sur Nvenc car je dispose d’une carte graphique Nvidia, mais sachez qu’on trouve aussi un encodeur AV1 sur les cartes graphiques Intel Arc et sur les cartes graphiques AMD RX 7000, les deux étant pris en charge si vous utilisez la version 29 d’OBS Studio, tandis que l’encodeur AV1 Nvenc est présent depuis la version 28.1 et que les encodeurs AV1 logiciels le sont depuis OBS 27.2, donc depuis février 2022.
Protocole de test
Donc pour mes tests, j’ai lancé Rocket League, jeu rapide et assez complexe à encoder, et j’ai enregistré mon gameplay en 4K UHD 60 FPS avec un débit vidéo de 130 Mbps via ShadowPlay. Donc ce n’est pas du format sans perte, mais visuellement on s’en rapproche terriblement. Et ce gameplay, je l’ai mis en source sur OBS, et c’est là que j’ai enregistré en AV1, mais aussi en H.264 et en H.265, tout ça avec l’encodeur Nvenc. J’ai par ailleurs retenu le pré-réglage P4, en haute qualité et passe unique, en gros des réglages que je ferais si je devais streamer, avec différentes résolutions de sortie et différents bitrate qui seront bien évidemment affichés à l’écran.
Alors pour la petite histoire, je n’y avais pas pensé avant mais pour faire le montage de cette vidéo, j’ai été un peu coincé car tous les logiciels de montage de prennent pas en charge les vidéos encodées en AV1. Moi qui utilise encore Vegas Pro en version 16, je confirme qu’il ne prend pas le AV1. Donc j’avais deux options, utiliser un autre logiciel de montage et me former dessus rapidement, flemme un peu quand même, soit réencoder les rendus en AV1, mais cette fois-ci dans un format non compressé, en .avi, pour pouvoir importer tout ça dans Vegas. Donc j’ai utilisé Davinci Resolve pour réencoder, et du coup comme j’ai choisi le format sans pertes, je me suis retrouvé avec des fichiers énormes, logique, mais au moins j’ai pu faire mon montage sur Vegas sans altérer la qualité de mes enregistrements AV1 initiaux.
Tests d’encodage en AV1
Donc très simplement pour ces tests, vous pourrez voir les résultats affichés à l’écran avec les différentes caractéristiques d’encodage. Je précise tout de même que j’ai fait des encodages en 1080p et en 1440p, donc forcément comme cette vidéo est en 4K, j’ai du upscaler les enregistrements au montage, mais on va dire que c’est compensé par le fait que c’est pareil pour tous les enregistrements, qu’ils soient en AV1 ou en H.264. Pareil pour la compression effectuée par YouTube, à priori c’est la même punition pour tout le monde, donc ça permet quand même de comparer les rendus.
En 1080p60 8000kbps, en AV1, on a un résultat plutôt bon sur Rocket League, sans surprise supérieur au H.264. Bon sur un stream en mouvement c’est moins flagrant que sur une image zoomée, c’est évident, mais même en mouvement et peut-être que la compression YouTube vous empêchera de faire le même constat que moi, mais même en mouvement je trouve ça bien plus flatteur en AV1, et là je me dis que le Nvenc fait bien son boulot.
Même constat en 1440p60, et malgré l’augmentation de la résolution, le AV1 est globalement plus agréable que le H.264 en 1080p.
Et en poussant en 1440p120, le AV1 est encore au coude à coude avec le H.264, et ça c’est quand même surprenant car le bitrate est resté sur 8000 kbps, ce qui est peu pour une telle résolution de sortie et un tel nombre de FPS.
En revanche, on constate que du 1080p à 4000 kbps de bitrate en AV1 est esthétiquement moins agréable qu’un 1080p à 8000 kbps en H.264, et ça peut sembler normal. Ça laisse à penser que, comme dans la plupart des cas, l’encodeur AV1 a du mal à générer un rendu correct avec un bitrate vraiment faible. Parce que oui, 4000 kbps c’est quand même très faible et l’encodeur s’en sort bien mieux quand on monte cette valeur.
C’est sans doute la raison pour laquelle le rendu en 1080p120 avec 8000 kbps, donc avec deux fois plus d’images à traiter par seconde, est meilleur que le 1080p60 à 4000 kbps de bitrate.
Et ce 1080p120 est même plus joli que le 1080p60 en H.264, ce qui est quand même fort. Je ne sais pas si vous vous rendez compte, mais dans ce cas précis, avec le même bitrate, en AV1, on peut avoir une meilleure qualité avec deux fois plus d’images par seconde ! Ou mieux : on peut avoir un rendu quasiment similaire en 1440p120 ! Moi je trouve ça incroyable !
Et si on compare rapidement les 4 encodeurs, à savoir le x264 medium, Nvenc H.264, Nvenc H.265 et Nvenc AV1, on a une contre-performance du x264 je trouve, un H.265 qui gomme des détails en extrapolant un peu trop, et un AV1 qui selon moi offre le rendu le plus agréable une fois de plus. Et encore une fois la compression YouTube ne doit pas aider mais moi je vois bien les sources et j’ai clairement une préférence pour le AV1 qui fait le bon compromis entre netteté et détails.
Avis sur le AV1
Bref, une première façon d’analyser tout ça c’est de se dire qu’on va pouvoir améliorer la qualité des streams sur Twitch, que ce soit en augmentant la résolution de sortie ou en augmentant les FPS de sortie. Car pour avoir fait le test avec Fall Guys également, le résultat sur un encodage AV1 en 4K60 avec 8000 kbps était très correct et largement comparable à du 1080p60 à 8000 kbps aussi et encodé en H.264, alors qu’il y a 4x plus de pixels à traiter en 4K !
Et là j’ai poussé à l’extrême, mais si je reviens sur Rocket League, j’ai testé le AV1 en 1440p60 et c’était là aussi supérieur au 1080p60 en H.264 ! Donc oui, on va pouvoir améliorer la qualité globale des streams grâce au AV1, voilà pour le premier bilan.
Autre philosophie
Un point maintenant concernant le contenu relativement statique, avec une toute autre façon d’aborder l’emploi du codec AV1. Pour faire l’analogie avec le monde du hardware, on a les passionnés d’overclocking, mais on voit de plus en plus de personnes qui pratiquent l’undervolting, donc on garde les performances de base mais on diminue la consommation du processeur. Eh bien quelque part, c’est un peu la même philosophie que j’ai en abordant le contenu Just Chatting sur Twitch.
Comme vous le savez parce que j’ai fait une vidéo sur le bitrate et que vous l’avez bien entendu regardée, pour faire simple plus l’image bouge, plus il faut de bitrate pour maintenir une qualité vidéo constante. Or quand on fait du Just Chatting, on met souvent la cam en plein écran ou en grand, avec le chat Twitch, les alertes et basta, on ne peut pas dire que ça bouge des masses. Autre point, comme c’est littéralement de la discussion, pas forcément besoin de streamer en 4K ou à 120 FPS. Donc là je me dis que streamer en 1080p à 60 FPS avec un bitrate de 2500-3000 kbps, ça peut être intéressant car ça permettrait de réduire considérablement l’utilisation de bande passante par le stream !
Donc là on n’est pas dans la recherche de qualité à tout prix, on est plus dans une démarche de rentabilité voire d’économie d’énergie ! Alors je sais bien que ça sonne un peu paradoxal, car on doit encoder un stream en AV1, les viewers doivent le décoder, à la base, le streaming c’est pas super écolo. Mais diviser sa bande passante par 2 ou 3, est-ce que ça n’aurait pas un impact significatif sur notre empreinte carbone ? Bon là c’est un pur questionnement, je n’ai pas la réponse, mais c’est une idée qui m’intéresse fortement, et peut-être qu’un jour j’essayerai de faire un calcul de tout ça, on verra.
Conclusion
Conclusion, le AV1, c’est l’avenir ! Un encodage plus performant pour les flux vidéo, personne ne crache dessus, à fortiori quand c’est inclus en matériel sur une carte graphique Nvidia ou autre, et même si ça implique davantage de ressources pour lire les vidéos. Et de toute façon ça arrivera, les fabricants de processeurs, de cartes graphiques, de smartphones, tout le monde s’y met et ça fait bien depuis 2020 que tout ce qui sort ou presque est capable de gérer le AV1, du moins en lecture.
Donc inutile de vous dire que le jour où ça arrivera sur Twitch, je serai là pour faire une étude plus poussée du bitrate et vous fournir un joli tableau, un peu comme celui que vous pouvez trouver dans ma vidéo vous indiquant quel bitrate choisir pour streamer sur Twitch, ce qui pour l’instant est toujours la norme. Donc vidéo conseillée en attendant le AV1, et c’est la fin de cette vidéo donc on se retrouve très vite pour la prochaine et d’ici-là… bon stream !