Transcodage matériel avec Intel QSV : traitement vidéo accéléré par GPU
Qu’est-ce que le transcodage matériel ?
Le transcodage est le processus de décodage d’un flux vidéo d’un format pour le ré-encoder dans un autre. C’est une opération coûteuse en calcul — un flux H.264 1080p60 peut consommer un cœur de processeur moderne entier pour l’encodage seul. Lorsque vous devez transcoder plusieurs flux simultanément, ou transcoder à des résolutions supérieures comme la 4K, l’encodage logiciel atteint ses limites.
Le transcodage matériel déleste ce travail vers des circuits dédiés sur votre GPU ou le processeur graphique intégré de votre CPU. Au lieu d’utiliser des cœurs CPU à usage général, l’encodage/décodage vidéo s’effectue sur des blocs matériels fixes conçus spécifiquement pour cette tâche. Le résultat : le même travail de transcodage s’exécute 5 à 10 fois plus vite, consomme une fraction de l’énergie et libère votre CPU pour d’autres opérations.
Quand avez-vous besoin du transcodage ?
Dans le contexte d’une passerelle de streaming, le transcodage est nécessaire pour :
- Conversion de format — votre encodeur envoie du HEVC (H.265) mais votre destination de sortie n’accepte que le H.264
- Adaptation du débit — vous recevez un flux à 20 Mbps et devez produire une version à 4 Mbps pour les spectateurs à bande passante limitée
- Mise à l’échelle de résolution — conversion d’un ingest 4K vers une sortie 1080p
- Sortie multi-débits — création d’une échelle ABR (Adaptive Bitrate) à partir d’une seule entrée de haute qualité
- Mise à niveau du codec — conversion de flux H.264 anciens vers HEVC pour économiser de la bande passante
Si votre entrée et votre sortie partagent le même codec, la même résolution et le même débit, vous n’avez pas besoin de transcodage. La passerelle peut transmettre le flux tel quel (zéro-copie), ce qui est le chemin le plus efficace. Vajra Cast utilise automatiquement le passthrough lorsqu’aucune transformation n’est nécessaire.
Options de transcodage matériel
Trois grandes plateformes de transcodage matériel existent aujourd’hui :
Intel Quick Sync Video (QSV)
Le moteur de transcodage du processeur graphique intégré Intel, disponible sur la plupart des CPU Intel avec graphiques intégrés (i3, i5, i7, Xeon E avec iGPU). Utilise le Media SDK / oneVPL d’Intel.
Points forts :
- Disponible sur quasiment tous les systèmes Intel (pas de GPU discret nécessaire)
- Excellent rapport qualité/watt
- Support solide de l’encodage et du décodage HEVC
- Disponible dans les serveurs et les NUC (format compact)
- Faible coût — le matériel est déjà dans votre CPU
Limitations :
- Débit limité comparé aux GPU discrets (typiquement 4-8 encodages 1080p simultanés)
- Non disponible sur les CPU Intel série F (pas d’iGPU) ni les processeurs AMD
- Qualité légèrement inférieure à l’encodage logiciel à preset élevé (mais en amélioration à chaque génération)
NVIDIA NVENC
L’encodeur matériel dédié de NVIDIA sur les GPU GeForce, Quadro et Tesla.
Points forts :
- Débit élevé sur les GPU haut de gamme (jusqu’à 8+ encodages 1080p simultanés sur Quadro)
- Excellent support des B-frames
- Encodage AV1 sur RTX série 40 et plus récent
- Largement disponible dans les stations de travail et les instances cloud
Limitations :
- Nécessite un GPU NVIDIA discret (coût et consommation supplémentaires)
- Cartes GeForce limitées à 3 encodages simultanés (Quadro/Tesla illimités)
- Dépendant des pilotes — nécessite les pilotes propriétaires NVIDIA
- Non disponible dans de nombreux formats serveur compacts ou basse consommation
Encodage logiciel (libx264 / libx265)
Encodage basé sur le CPU utilisant les bibliothèques x264 ou x265.
Points forts :
- Qualité la plus élevée possible à débit donné
- Aucun matériel spécial requis
- Flexibilité de configuration maximale
- Disponible partout
Limitations :
- Extrêmement gourmand en CPU — un flux 1080p peut utiliser 100 % d’un cœur au preset
veryfast - Forte consommation électrique
- Monte mal en charge — chaque flux supplémentaire nécessite proportionnellement plus de CPU
- Non viable pour les charges multi-flux sans matériel serveur conséquent
Tableau comparatif
| Caractéristique | Intel QSV | NVIDIA NVENC | Logiciel (x264) |
|---|---|---|---|
| Matériel requis | Intel iGPU | GPU NVIDIA | N’importe quel CPU |
| Slots d’encodage 1080p30 | 4-8 | 3-illimité | 1 par cœur |
| Consommation (par encodage) | ~5W | ~15W | ~65W |
| Qualité (même débit) | Bonne | Bonne | Excellente |
| Support HEVC | Oui | Oui | Oui (lent) |
| Support AV1 | Gen 12+ | RTX 40+ | Très lent |
| Latence | Très faible | Très faible | Dépend du preset |
| Coût | 0 EUR (dans le CPU) | 200-10 000 EUR | 0 EUR |
| Adapté aux serveurs Linux | Excellent | Complexité des pilotes | Aucun problème |
Pour les déploiements de passerelles de streaming, Intel QSV est le point d’équilibre idéal. Il est disponible sur du matériel serveur courant, ne nécessite pas de GPU discret et gère la charge typique d’une passerelle (2-8 transcodages simultanés) sans difficulté. Vajra Cast est optimisé pour Intel QSV et l’utilise comme moteur principal de transcodage matériel.
Configuration d’Intel QSV
Matériel Intel compatible
QSV est disponible sur les processeurs Intel avec graphiques intégrés :
| Génération | Exemples | Capacités clés |
|---|---|---|
| 6e Gen (Skylake) | i7-6700, Xeon E3-1200 v5 | Encodage/décodage H.264, décodage HEVC |
| 7e Gen (Kaby Lake) | i7-7700 | + Décodage HEVC 10 bits |
| 8e Gen (Coffee Lake) | i9-9900K, Xeon E-2100 | + Encodage HEVC |
| 10e Gen (Ice Lake) | i7-1065G7 | Qualité HEVC améliorée |
| 11e Gen (Rocket Lake) | i9-11900 | + Décodage AV1 |
| 12e Gen (Alder Lake) | i9-12900 | + Encodage AV1, qualité améliorée |
| 13e-14e Gen | i9-13900, i9-14900 | Multi-flux amélioré |
| Intel Core Ultra | Ultra 7, Ultra 9 | Dernier moteur média |
Important : les CPU Intel série F (par exemple i9-12900F) n’ont pas de graphiques intégrés et ne peuvent pas utiliser QSV. Si vous achetez du matériel spécifiquement pour le transcodage, évitez les modèles série F.
Configuration Linux
La plupart des déploiements Vajra Cast fonctionnent sous Linux. Voici comment activer QSV :
1. Installer les pilotes média Intel
Sur Ubuntu/Debian :
# Ajouter le dépôt graphique Intel
sudo apt update
sudo apt install -y intel-media-va-driver-non-free intel-gpu-tools vainfo
Sur RHEL/Rocky/AlmaLinux :
sudo dnf install -y intel-media-driver intel-gpu-tools libva-utils
2. Vérifier la détection VAAPI
vainfo
Vous devriez voir une sortie listant les capacités d’encodage et de décodage :
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
vainfo: VA-API version: 1.20
vainfo: Driver version: Intel iHD driver for Intel Gen Graphics
vainfo: Supported profile and entrypoints
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
Recherchez les entrées VAEntrypointEncSlice — elles confirment que l’encodage est disponible.
3. Vérifier l’accès au GPU
ls -la /dev/dri/
Vous devriez voir renderD128 (et éventuellement renderD129). L’utilisateur exécutant Vajra Cast a besoin d’un accès en lecture/écriture :
# Ajouter l'utilisateur aux groupes render et video
sudo usermod -aG render,video $USER
4. Vérifier avec FFmpeg
ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 -c:v h264_qsv -b:v 4000k output.mp4
Si cela s’exécute sans erreur, QSV fonctionne.
Configuration Docker
Pour les déploiements conteneurisés, transmettez le périphérique GPU au conteneur :
docker run -d \
--name vajracast \
--device /dev/dri:/dev/dri \
-v /path/to/config:/config \
-p 9000-9100:9000-9100/udp \
-p 1935:1935/tcp \
-p 8080:8080/tcp \
vajracast/vajracast:latest
Le drapeau --device /dev/dri:/dev/dri transmet le périphérique GPU Intel au conteneur, lui donnant accès à QSV.
Pour Kubernetes :
apiVersion: v1
kind: Pod
metadata:
name: vajracast
spec:
containers:
- name: vajracast
image: vajracast/vajracast:latest
resources:
limits:
gpu.intel.com/i915: 1
securityContext:
runAsGroup: 44 # groupe video
Configuration macOS
Sur macOS avec processeurs Intel (Mac pré-Apple Silicon), QSV est disponible via VideoToolbox. Vajra Cast sur macOS utilise VideoToolbox automatiquement — aucune configuration supplémentaire n’est nécessaire.
Sur les Mac Apple Silicon (M1-M4), VideoToolbox fournit l’encodage matériel via le moteur média d’Apple, offrant des avantages similaires à QSV. Vajra Cast utilise automatiquement le backend d’accélération matérielle adapté selon la plateforme.
Configuration du transcodage dans Vajra Cast
Route de transcodage de base
Pour configurer une route de transcodage dans Vajra Cast :
- Créez un ingest (SRT ou RTMP)
- Créez une sortie
- Dans les paramètres de sortie, activez le Transcodage
- Sélectionnez le codec cible :
- H.264 — compatibilité maximale
- HEVC (H.265) — 30-40 % plus compact à qualité équivalente
- Définissez le débit cible
- Définissez la résolution cible (en cas de mise à l’échelle)
- Vajra Cast sélectionne automatiquement QSV si disponible, avec fallback VAAPI
Paramètres de transcodage
| Paramètre | Description | Valeur recommandée |
|---|---|---|
| Codec | Codec vidéo de sortie | H.264 ou HEVC |
| Débit | Débit d’encodage cible | Voir tableau ci-dessous |
| Résolution | Résolution de sortie | Identique à la source ou réduite |
| Preset | Compromis vitesse/qualité d’encodage | balanced (par défaut) |
| Profil | Profil H.264/HEVC | high |
| Intervalle d’images clés | Secondes max entre images clés | 2 |
Recommandations de débit pour le transcodage
| Source | Cible | Débit recommandé |
|---|---|---|
| 4K H.264 30 Mbps | 1080p H.264 | 6 000-8 000 Kbps |
| 4K HEVC 15 Mbps | 1080p H.264 | 6 000-8 000 Kbps |
| 1080p H.264 8 Mbps | 1080p HEVC | 4 000-5 000 Kbps |
| 1080p H.264 8 Mbps | 720p H.264 | 3 000-4 000 Kbps |
| 1080p HEVC 5 Mbps | 1080p H.264 | 6 000-8 000 Kbps |
Transcodage HEVC (H.265)
HEVC prend une importance croissante pour les flux de contribution. Il délivre une qualité visuelle équivalente à un débit 30-40 % inférieur par rapport à H.264, ce qui signifie :
- Coûts de bande passante réduits pour la contribution SRT longue distance
- Meilleure qualité sur les chemins à bande passante limitée (cellulaire, satellite)
- Viabilité de la 4K sur des connexions internet standards
Avec QSV, l’encodage HEVC est accéléré matériellement et s’exécute à la même vitesse que l’encodage H.264. La perte de qualité par rapport au logiciel x265 est minimale sur le matériel Intel moderne (11e génération et plus récent).
Un workflow courant : recevoir du HEVC depuis un encodeur distant (économisant la bande passante sur le chemin de contribution), puis transcoder en H.264 pour la sortie vers les plateformes qui ne supportent pas l’ingest HEVC.
Caméra distante → HEVC (SRT, 5 Mbps) → Vajra Cast [transcodage QSV] → H.264 (RTMP, 6 Mbps) → YouTube
→ HEVC (SRT, 5 Mbps) → Archive
Benchmarks de performance
Benchmarks en conditions réelles sur du matériel Intel courant, mesurés avec Vajra Cast :
Intel i7-12700 (12e Gen, Alder Lake)
| Charge de travail | Usage CPU | Usage GPU | Latence ajoutée |
|---|---|---|---|
| 1x 1080p30 H.264→H.264 | 3% | 15% | <5ms |
| 1x 1080p30 H.264→HEVC | 3% | 20% | <5ms |
| 4x 1080p30 H.264→H.264 | 8% | 55% | <5ms |
| 1x 4K30 H.264→1080p H.264 | 5% | 35% | <8ms |
| 1x 1080p60 H.264→H.264 | 4% | 25% | <5ms |
Intel Xeon E-2388G (serveur)
| Charge de travail | Usage CPU | Usage GPU | Latence ajoutée |
|---|---|---|---|
| 1x 1080p30 H.264→H.264 | 2% | 12% | <5ms |
| 4x 1080p30 H.264→H.264 | 6% | 45% | <5ms |
| 8x 1080p30 H.264→H.264 | 10% | 85% | <8ms |
| 2x 4K30 H.264→1080p H.264 | 6% | 50% | <8ms |
Intel N100 (basse consommation / Mini PC)
| Charge de travail | Usage CPU | Usage GPU | Latence ajoutée |
|---|---|---|---|
| 1x 1080p30 H.264→H.264 | 8% | 40% | <8ms |
| 2x 1080p30 H.264→H.264 | 12% | 75% | <10ms |
| 1x 1080p30 H.264→HEVC | 10% | 50% | <8ms |
Points clés à retenir :
- L’usage CPU est minimal — le transcodage matériel sollicite à peine le CPU, le laissant libre pour le routage, la supervision et les autres tâches de la passerelle
- La latence de transcodage est négligeable — sous les 10ms dans tous les cas, invisible dans un contexte de streaming
- Même le matériel basse consommation fait le travail — un mini PC Intel N100 peut transcoder 2 flux 1080p simultanés
Comparaison : QSV vs logiciel x264
Encodage de 1x 1080p30 H.264 à 6000 Kbps :
| Méthode | Usage CPU | Temps par trame | Consommation | Score VMAF |
|---|---|---|---|---|
| x264 ultrafast | 45% (1 cœur) | 8ms | ~65W | 89 |
| x264 veryfast | 80% (1 cœur) | 15ms | ~85W | 92 |
| x264 medium | 100% (2+ cœurs) | 33ms | ~120W | 95 |
| QSV balanced | 3% | 2ms | ~5W | 91 |
QSV au preset “balanced” atteint une qualité comparable à x264 veryfast tout en utilisant 1/15e du CPU et 1/17e de l’énergie. Pour une passerelle de streaming qui doit transcoder en continu 24h/24 et 7j/7, cette différence est déterminante.
La chaîne de fallback automatique
Vajra Cast implémente une chaîne de fallback automatique pour le transcodage :
Intel QSV → VAAPI → Logiciel (libx264/libx265)
- QSV préféré — si Intel QSV est détecté et que le codec est supporté, il est utilisé
- Fallback VAAPI — si QSV n’est pas disponible mais que VAAPI l’est (par exemple certains GPU AMD ou anciens pilotes Intel), VAAPI est utilisé
- Logiciel en dernier recours — si aucune accélération matérielle n’est disponible, l’encodage logiciel est utilisé
Ce fallback est automatique. Aucune configuration n’est nécessaire. Vajra Cast détecte le matériel disponible au démarrage et sélectionne la meilleure option. Le moteur de transcodage actif est visible dans le tableau de bord pour chaque route.
Supervision des performances de transcodage
Vajra Cast expose des métriques de transcodage par route :
- Utilisation GPU — pourcentage du moteur média QSV utilisé
- FPS d’encodage — images par seconde encodées (doit correspondre à la fréquence d’images source)
- Latence d’encodage — temps par trame en millisecondes
- Débit de sortie — débit d’encodage réel (peut différer légèrement de la cible)
- Score VMAF — évaluation automatisée de la qualité vidéo (0-100) comparant la sortie transcodée à la source
Ces métriques sont disponibles dans le tableau de bord web et via le endpoint Prometheus /metrics. Utilisez-les pour :
- Détecter la surcharge GPU (utilisation >90 % soutenue)
- Vérifier la qualité de sortie (VMAF >85 est généralement bon, >90 est excellent)
- Planifier la capacité (combien de transcodages supplémentaires ce matériel peut-il gérer ?)
Bonnes pratiques
- Utilisez le passthrough quand c’est possible — si l’entrée et la sortie partagent le même codec et la même résolution, sautez entièrement le transcodage. C’est toujours plus rapide et préserve la qualité originale.
- Alignez les intervalles d’images clés — définissez l’intervalle du transcodeur pour correspondre aux exigences de votre plateforme de sortie (2 secondes est le choix universel et sûr).
- Supervisez l’utilisation GPU — maintenez l’usage GPU soutenu en dessous de 80 % pour conserver de la marge pour les pics de débit et la surcharge de retransmission.
- Testez la compatibilité HEVC — avant de basculer des sorties en HEVC, vérifiez que le lecteur ou la plateforme en aval le supporte. Ce n’est pas le cas de tous.
- Utilisez le CBR pour les sorties transcodées — le débit constant produit une qualité plus prévisible et simplifie la planification de bande passante.
- Gardez les firmwares et pilotes à jour — Intel améliore régulièrement la qualité et les performances QSV via les mises à jour de pilotes. Sous Linux, maintenez
intel-media-driverà jour.
Pour l’ensemble des fonctionnalités Vajra Cast incluant la distribution zéro-copie, le failover et la supervision, consultez notre guide de la passerelle SRT Streaming.