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éristiqueIntel QSVNVIDIA NVENCLogiciel (x264)
Matériel requisIntel iGPUGPU NVIDIAN’importe quel CPU
Slots d’encodage 1080p304-83-illimité1 par cœur
Consommation (par encodage)~5W~15W~65W
Qualité (même débit)BonneBonneExcellente
Support HEVCOuiOuiOui (lent)
Support AV1Gen 12+RTX 40+Très lent
LatenceTrès faibleTrès faibleDépend du preset
Coût0 EUR (dans le CPU)200-10 000 EUR0 EUR
Adapté aux serveurs LinuxExcellentComplexité des pilotesAucun 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érationExemplesCapacités clés
6e Gen (Skylake)i7-6700, Xeon E3-1200 v5Encodage/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-1065G7Qualité 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 Geni9-13900, i9-14900Multi-flux amélioré
Intel Core UltraUltra 7, Ultra 9Dernier 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 :

  1. Créez un ingest (SRT ou RTMP)
  2. Créez une sortie
  3. Dans les paramètres de sortie, activez le Transcodage
  4. Sélectionnez le codec cible :
    • H.264 — compatibilité maximale
    • HEVC (H.265) — 30-40 % plus compact à qualité équivalente
  5. Définissez le débit cible
  6. Définissez la résolution cible (en cas de mise à l’échelle)
  7. Vajra Cast sélectionne automatiquement QSV si disponible, avec fallback VAAPI

Paramètres de transcodage

ParamètreDescriptionValeur recommandée
CodecCodec vidéo de sortieH.264 ou HEVC
DébitDébit d’encodage cibleVoir tableau ci-dessous
RésolutionRésolution de sortieIdentique à la source ou réduite
PresetCompromis vitesse/qualité d’encodagebalanced (par défaut)
ProfilProfil H.264/HEVChigh
Intervalle d’images clésSecondes max entre images clés2

Recommandations de débit pour le transcodage

SourceCibleDébit recommandé
4K H.264 30 Mbps1080p H.2646 000-8 000 Kbps
4K HEVC 15 Mbps1080p H.2646 000-8 000 Kbps
1080p H.264 8 Mbps1080p HEVC4 000-5 000 Kbps
1080p H.264 8 Mbps720p H.2643 000-4 000 Kbps
1080p HEVC 5 Mbps1080p H.2646 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 travailUsage CPUUsage GPULatence ajoutée
1x 1080p30 H.264→H.2643%15%<5ms
1x 1080p30 H.264→HEVC3%20%<5ms
4x 1080p30 H.264→H.2648%55%<5ms
1x 4K30 H.264→1080p H.2645%35%<8ms
1x 1080p60 H.264→H.2644%25%<5ms

Intel Xeon E-2388G (serveur)

Charge de travailUsage CPUUsage GPULatence ajoutée
1x 1080p30 H.264→H.2642%12%<5ms
4x 1080p30 H.264→H.2646%45%<5ms
8x 1080p30 H.264→H.26410%85%<8ms
2x 4K30 H.264→1080p H.2646%50%<8ms

Intel N100 (basse consommation / Mini PC)

Charge de travailUsage CPUUsage GPULatence ajoutée
1x 1080p30 H.264→H.2648%40%<8ms
2x 1080p30 H.264→H.26412%75%<10ms
1x 1080p30 H.264→HEVC10%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éthodeUsage CPUTemps par trameConsommationScore VMAF
x264 ultrafast45% (1 cœur)8ms~65W89
x264 veryfast80% (1 cœur)15ms~85W92
x264 medium100% (2+ cœurs)33ms~120W95
QSV balanced3%2ms~5W91

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)
  1. QSV préféré — si Intel QSV est détecté et que le codec est supporté, il est utilisé
  2. 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é
  3. 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

  1. 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.
  2. 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).
  3. 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.
  4. 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.
  5. 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.
  6. 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.