Ce qu'est un encodeur matériel
Encoder une vidéo, c'est compresser des images brutes en un flux assez petit pour être envoyé ou stocké. Un encodeur logiciel comme x264 le fait sur des cœurs de CPU. Un encodeur matériel le fait sur un bloc à fonction fixe de la puce graphique, un moteur média qui n'existe que pour cela. NVIDIA appelle son bloc NVENC, AMD appelle son encodeur AMF (l'Advanced Media Framework qui le pilote), et celui d'Intel est Quick Sync Video.
Pourquoi c'est important pour votre jeu
- L'encodage lui-même tourne sur le moteur média, pas sur les cœurs de CPU qu'utilise le jeu, ni sur les cœurs de shaders qui dessinent le jeu.
- Les images peuvent rester en mémoire vidéo de la capture à l'encodeur, sans passer par le bus mémoire du PC.
- Le coût qui reste est dans les étapes autour : capturer l'image, convertir ses couleurs dans le format que prend l'encodeur (en général NV12) et la redimensionner. Dans les mesures de BriseStream sur une carte NVIDIA, cette conversion a coûté de un à 1,6 point de FPS et l'encodeur lui-même presque rien ; le processeur vidéo utilisé tournait sur le moteur 3D, pas sur un moteur vidéo.
Codecs : H.264, HEVC et AV1
| Codec | À savoir |
|---|---|
| H.264 (AVC) | Fonctionne partout et sur presque tous les encodeurs matériels ; le choix sûr par défaut, et celui que Twitch et Kick acceptent en RTMP |
| HEVC (H.265) | Meilleure image au même débit sur les GPU compatibles ; beaucoup de plateformes en direct ne l'acceptent pas en RTMP |
| AV1 | La meilleure compression, mais seuls les GPU récents l'encodent en matériel ; la prise en charge par les plateformes pour le direct reste limitée |
BriseStream laisse l'enregistrement et le stream utiliser des codecs différents, prend H.264 par défaut, et échoue avec un message clair plutôt que de changer de codec en silence si votre GPU ou la destination ne peut pas faire ce que vous avez choisi.
L'encodage HEVC de BriseStream n'a été vérifié que sur du matériel NVIDIA ; AMD et Intel ne sont pas testés, et l'encodage matériel AV1 n'a pas encore tourné sur du vrai matériel. Ces faits viennent des notes du projet.
Lequel ai-je ?
- NVIDIA GeForce GTX série 10 et suivantes : NVENC. Les générations récentes améliorent la qualité d'image ; l'encodage AV1 demande une génération récente.
- AMD Radeon : AMF. La qualité et les codecs dépendent de la génération.
- Graphismes intégrés Intel ou Arc : QuickSync.
- Pas d'encodeur matériel (certaines cartes anciennes ou très basiques) : l'encodeur logiciel est le repli et il coûte du CPU.
Un programme Windows peut atteindre les trois par Media Foundation, les encodeurs fournis avec le pilote graphique ; BriseStream procède ainsi pour ne rien embarquer et ne demander aucun SDK de fabricant.