Transcodage matériel : Intel QSV et VAAPI dans Vajra Cast
Configurez le transcodage accéléré par GPU avec Intel QSV et VAAPI dans Vajra Cast. Encodage H.264, H.265/HEVC avec un usage CPU minimal.
Pourquoi le transcodage matériel ?
Le transcodage — convertir une vidéo d’un codec, d’une résolution ou d’un débit à un autre — est l’opération la plus gourmande en CPU dans un pipeline de streaming. Un seul encodage logiciel en 1080p60 peut consommer 100 % d’un cœur CPU moderne. Si vous avez besoin de plusieurs profils de sortie (1080p + 720p + 480p), vous devez dédier plusieurs cœurs entièrement à l’encodage.
Le transcodage matériel décharge ce travail vers du silicium dédié sur le GPU ou le processeur graphique intégré. Le CPU est libéré pour d’autres tâches (routage, traitement audio, requêtes API), et vous pouvez transcoder davantage de flux par serveur avec une fraction de la consommation électrique.
Vajra Cast prend en charge le transcodage matériel via Intel Quick Sync Video (QSV) et VAAPI (Video Acceleration API) sous Linux.
Transcodage matériel vs logiciel
| Aspect | Logiciel (x264/x265) | Matériel (QSV/VAAPI) |
|---|---|---|
| Usage CPU | Très élevé (1+ cœurs par flux) | Minimal (<5 % par flux) |
| Qualité à débit égal | Excellente | Très bonne |
| Vitesse d’encodage | Dépend du preset | Silicium dédié, toujours rapide |
| Latence | Plus élevée avec les presets lents | Constamment faible |
| Consommation électrique | Élevée | Faible |
| Flux parallèles | Limité par les cœurs CPU | Limité par les sessions d’encodage GPU |
| Coût | N’importe quel CPU | Nécessite un GPU Intel |
La différence de qualité s’est considérablement réduite. Les dernières implémentations Quick Sync d’Intel produisent une sortie visuellement indistinguable de l’encodage logiciel aux débits broadcast (5-15 Mbps pour du 1080p). Pour le streaming en direct, où vous avez besoin d’un encodage en temps réel et ne pouvez pas utiliser de presets lents multi-passes, l’encodage matériel est le choix pratique.
Matériel supporté
Intel Quick Sync Video (QSV)
QSV est disponible sur les CPU Intel avec processeur graphique intégré, à partir de Sandy Bridge (2011) mais réellement utile depuis Skylake (2015) :
| Génération | Codecs | Flux max (approx.) | Notes |
|---|---|---|---|
| Skylake (6e gén.) | H.264 | 4-8 en 1080p | Base solide |
| Kaby Lake (7e gén.) | H.264, HEVC 8-bit | 6-10 en 1080p | Premier support HEVC |
| Coffee Lake (8e gén.+) | H.264, HEVC 8/10-bit | 8-15 en 1080p | Qualité améliorée |
| Ice Lake / Tiger Lake (10e/11e gén.) | H.264, HEVC, AV1 | 10-20 en 1080p | Encodage AV1 dès la 12e gén. |
| Alder Lake+ (12e gén.+) | H.264, HEVC, AV1 | 15-30+ en 1080p | Meilleure densité |
La colonne « flux max » est approximative et dépend de la résolution, du framerate et du débit. Ces chiffres supposent du 1080p30 à 5 Mbps.
Important : Vous avez besoin du GPU intégré, pas seulement du CPU. Les CPU serveur avec le suffixe « F » (ex. i9-13900F) n’ont pas de processeur graphique intégré et ne peuvent pas utiliser QSV. Les processeurs Xeon E-series avec graphiques intégrés supportent bien QSV.
VAAPI
VAAPI est l’API standard d’accélération vidéo sous Linux. Sur le matériel Intel, il fournit une interface alternative au même matériel Quick Sync. VAAPI fonctionne également avec certains GPU AMD, bien qu’Intel soit la cible principale pour Vajra Cast.
VAAPI et QSV accèdent au même matériel sous-jacent sur les plateformes Intel. Le choix entre les deux dépend principalement de la compatibilité des pilotes :
- QSV : Utilise le SDK propriétaire d’Intel / oneVPL. Plus d’options de réglage, davantage de fonctionnalités codec.
- VAAPI : Utilise le pilote open-source
intel-media-driver(iHD) ou le pilote historiquei965. Installation plus simple, moins de dépendances.
Vajra Cast supporte les deux. Pour la plupart des déploiements, QSV est recommandé pour son éventail de fonctionnalités plus large.
Codecs supportés
H.264 (AVC)
Le codec universel. Chaque lecteur, chaque appareil, chaque plateforme supporte H.264. Utilisez-le quand la compatibilité maximale est primordiale.
- Encodage matériel : QSV et VAAPI
- Décodage matériel : QSV et VAAPI
- Profils : Baseline, Main, High
- Profondeur de bits : 8-bit
H.265 (HEVC)
Environ 50 % de compression en plus par rapport au H.264 à qualité visuelle égale. Utilisez-le pour les scénarios à bande passante limitée ou une meilleure qualité au même débit.
- Encodage matériel : QSV (7e gén.+) et VAAPI
- Décodage matériel : QSV et VAAPI
- Profils : Main, Main 10
- Profondeur de bits : 8-bit, 10-bit (8e gén.+)
AV1
Le codec de nouvelle génération avec une excellente efficacité de compression. Le support des plateformes progresse rapidement.
- Encodage matériel : QSV (12e gén.+)
- Décodage matériel : QSV (11e gén.+)
- Profondeur de bits : 8-bit, 10-bit
Configuration dans Vajra Cast
Activer l’accélération matérielle
Pour les déploiements Docker, vous devez passer le périphérique GPU au conteneur :
services:
vajracast:
image: vajracast/vajracast:latest
devices:
- /dev/dri:/dev/dri
group_add:
- video
- render
Le périphérique /dev/dri donne accès au GPU. Les groupes video et render accordent les permissions nécessaires.
Vérifier l’accès au matériel
Vérifiez que Vajra Cast détecte votre matériel :
# Dans le conteneur ou sur l'hôte
ls -la /dev/dri/
# Devrait afficher renderD128 (et possiblement card0)
# Vérifier le GPU Intel
vainfo
# Devrait lister les profils supportés (H264, HEVC, etc.)
Créer un profil de transcodage
Dans l’interface web de Vajra Cast :
- Naviguez vers votre route.
- Ouvrez les paramètres « Transcodage ».
- Sélectionnez « Hardware (QSV) » ou « Hardware (VAAPI) » comme encodeur.
- Choisissez votre codec de sortie (H.264, H.265 ou AV1).
- Définissez la résolution et le débit cibles.
- Appliquez.
Via l’API REST :
curl -X POST -H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"encoder": "qsv",
"codec": "h265",
"width": 1920,
"height": 1080,
"bitrate": 8000,
"fps": 30,
"profile": "main",
"preset": "medium"
}' \
http://localhost:8080/api/v1/routes/1/transcode
Presets
Les encodeurs matériels supportent des presets de qualité qui ajustent le rapport vitesse/qualité :
| Preset | Vitesse | Qualité | Cas d’usage |
|---|---|---|---|
| veryfast | La plus rapide | Inférieure | Densité maximale |
| fast | Rapide | Bonne | Streaming live standard |
| medium | Équilibré | Très bonne | Valeur par défaut recommandée |
| slow | Plus lent | Excellente | Qualité critique |
Pour le streaming en direct, medium offre le meilleur équilibre. La différence de vitesse entre les presets est moins marquée qu’avec l’encodage logiciel, car le pipeline matériel a une architecture fixe.
Optimisation des performances
Flux multiples
Chaque GPU Intel a un nombre limité de sessions d’encodage. Quand vous dépassez la limite, les encodages supplémentaires basculent en logiciel. Surveillez l’utilisation de votre GPU :
# Intel GPU Top (installer intel-gpu-tools)
intel_gpu_top
Vajra Cast rapporte l’utilisation de l’encodeur matériel dans ses métriques Prometheus, vous permettant de suivre l’usage GPU dans vos tableaux de bord Grafana aux côtés du CPU, de la mémoire et du réseau.
Contrôle du débit
Pour le streaming en direct, utilisez le CBR (Constant Bitrate) ou le VBR (Variable Bitrate) avec une contrainte maximale :
- CBR : Consommation de bande passante constante. Requis par certains CDN. Moins efficace pour les scènes statiques.
- VBR : Meilleur ratio qualité/débit. Pics lors des scènes complexes. Définissez un débit maximum pour éviter les dépassements de bande passante.
Les encodeurs matériels supportent également le CQP (Constant Quantization Parameter) pour un encodage à qualité fixe, mais cela produit des débits variables qui peuvent ne pas convenir à la diffusion en direct.
Lookahead
Activez le lookahead pour améliorer la qualité. L’encodeur met en tampon quelques frames pour prendre de meilleures décisions de contrôle de débit :
{
"lookahead": 10,
"lookaheadDepth": 10
}
Le lookahead ajoute une faible latence (égale au nombre de frames de lookahead divisé par le framerate). Pour un lookahead de 10 frames à 30 fps, cela représente 333 ms de latence d’encodage supplémentaire.
Pipeline décodage + encodage
Lors du transcodage, Vajra Cast utilise le matériel pour le décodage et l’encodage :
Entrée (SRT) -> Décodage HW (QSV) -> Mise à l'échelle/Filtrage -> Encodage HW (QSV) -> Sortie (SRT)
L’ensemble du pipeline reste sur le GPU. Les frames vidéo sont décodées en mémoire GPU, mises à l’échelle ou filtrées en mémoire GPU, et encodées en mémoire GPU. Le CPU ne touche que le plan de contrôle — aucune donnée pixel ne passe par le CPU.
C’est pourquoi le transcodage matériel a un overhead CPU aussi faible : le CPU gère le pipeline, mais le GPU fait tout le travail lourd.
Prochaines étapes
- Retournez au Guide logiciel de streaming broadcast pour la vue d’ensemble complète
- Découvrez les métriques temps réel pour surveiller les performances de transcodage
- Explorez le déploiement Docker et Kubernetes pour déployer avec accès GPU