Configuration serveur de streaming : guide matériel pour l'infrastructure de diffusion

Dimensionner votre serveur de streaming

La question la plus courante lors de la construction d’une infrastructure de streaming est : quel matériel me faut-il ? La réponse dépend entièrement de ce que vous demandez au serveur de faire. Un serveur qui route 20 flux SRT en passthrough a des besoins très différents d’un serveur qui transcode 5 flux avec accélération matérielle.

Ce guide détaille les exigences matérielles pour chaque composant d’un workflow de streaming, des configurations minimales aux deployments à l’échelle de l’entreprise. Nous couvrirons le CPU, la RAM, le GPU, le réseau et le stockage, avec des recommandations spécifiques pour l’exécution de Vajra Cast.

Comprendre votre charge de travail

Avant de choisir le matériel, classifiez votre charge de travail. Les serveurs de streaming effectuent trois tâches fondamentalement différentes, chacune avec un profil de ressources distinct :

1. Routage passthrough

Le serveur reçoit un flux et le retransmet vers une ou plusieurs destinations sans modifier la vidéo ni l’audio. Les données circulent : réseau entrant, mémoire, réseau sortant.

Profil de ressources :

  • CPU : très faible (gestion du protocole uniquement)
  • RAM : faible (espace tampon par flux)
  • GPU : non utilisé
  • Réseau : le goulot d’étranglement
  • Disque : non utilisé (sauf enregistrement)

C’est ce qui se passe avec la distribution zero-copy de Vajra Cast. Le coût CPU est quasi nul par sortie supplémentaire car les données du flux sont partagées en mémoire.

2. Transcodage (logiciel)

Le serveur décode la vidéo entrante, la ré-encode à une résolution, un débit ou un codec différent, et envoie le résultat aux sorties. C’est extrêmement coûteux en calcul.

Profil de ressources :

  • CPU : très élevé (le goulot d’étranglement)
  • RAM : modéré
  • GPU : non utilisé
  • Réseau : modéré
  • Disque : faible (sauf enregistrement)

Le transcodage logiciel (x264, x265) est flexible mais intensif en CPU. Un seul transcodage H.264 en 1080p60 à bonne qualité peut saturer 8 coeurs CPU ou plus.

3. Transcodage (accélération matérielle)

Le serveur délègue l’encodage et le décodage à du matériel dédié (Intel QSV, NVIDIA NVENC, AMD VCE). Le GPU gère le travail de calcul intensif.

Profil de ressources :

  • CPU : faible à modéré (gestion du pipeline)
  • RAM : modéré
  • GPU : le goulot d’étranglement
  • Réseau : modéré
  • Disque : faible (sauf enregistrement)

Le transcodage matériel est 5 à 10 fois plus rapide et bien plus efficace en énergie que le transcodage logiciel, au prix d’une qualité légèrement inférieure au même débit (l’écart s’est considérablement réduit avec le matériel moderne).

Exigences CPU

Pour le routage passthrough

Le routage passthrough n’est pas limité par le CPU. Le processeur gère l’analyse de protocole (SRT, RTMP, packetisation HLS), le chiffrement/déchiffrement (AES) et la charge système. Les processeurs modernes gèrent cela sans difficulté.

Flux (passthrough)Recommandation CPUNotes
1-102 coeurs, tout CPU moderneUn Mac Mini M2 gère cela facilement
10-304 coeursClasse Intel i5 / AMD Ryzen 5
30-504-8 coeursIntel Xeon / AMD EPYC classe serveur
50-1008 coeursLe réseau devient le goulot d’étranglement en premier

Pour le transcodage logiciel

Le transcodage logiciel est entièrement limité par le CPU. L’encodeur x264 utilise tous les coeurs disponibles. Le preset de qualité détermine le nombre de coeurs nécessaires par flux :

Preset x264Coeurs par flux 1080p60QualitéLatence
ultrafast2-3BasseMinimale
superfast3-4Inférieure à la moyenneBasse
veryfast4-6BonneBasse
faster6-8BonneModérée
medium8-12ÉlevéeModérée
slow12-16Très élevéeÉlevée

Pour le streaming en direct, les presets veryfast ou faster sont la norme. Ils équilibrent qualité et charge CPU à une latence acceptable. Le preset medium produit une qualité notablement meilleure mais peut nécessiter des coeurs dédiés par flux.

Dimensionnement pratique pour le transcodage logiciel :

Charge de travailRecommandation CPU
1 flux, 1080p60Intel i7 / Ryzen 7 (8 coeurs)
2-3 flux, 1080p60Intel i9 / Ryzen 9 (16 coeurs)
4-8 flux, 1080p60Double Xeon / EPYC (32+ coeurs)
Plus de 8 transcodages simultanésUtilisez le transcodage matériel à la place

Pour le transcodage matériel

Avec Intel QSV ou NVIDIA NVENC, les exigences CPU chutent drastiquement car le travail d’encodage/décodage est effectué sur le GPU. Le CPU gère le pipeline, traite l’audio et exécute l’application de la passerelle :

Charge de travailRecommandation CPU
1-5 transcodages matériels4 coeurs (classe Intel i5)
5-15 transcodages matériels4-8 coeurs (classe Intel i7/Xeon)
15+ transcodages matériels8+ coeurs (classe serveur)

Le GPU devient le goulot d’étranglement avant le CPU.

Exigences GPU

Intel Quick Sync Video (QSV)

Vajra Cast supporte Intel QSV pour l’encodage et le décodage H.264 et HEVC accélérés matériellement. QSV est intégré aux processeurs Intel (pas besoin de GPU discret) et est disponible sur la plupart des processeurs Intel à partir de la 6e génération (Skylake).

Génération IntelCapacité QSVTranscodages 1080p60 simultanésNotes
6e-7e Gen (Skylake/Kaby Lake)Encodage/décodage H.2643-5Suffisant pour les petits deployments
8e-10e Gen (Coffee Lake - Ice Lake)H.264 + HEVC5-10Bon choix polyvalent
11e-12e Gen (Rocket Lake - Alder Lake)H.264 + HEVC + AV18-15Recommandé pour les nouveaux deployments
13e-14e Gen (Raptor Lake)H.264 + HEVC + AV110-20Haut débit
Intel Arc (discret)H.264 + HEVC + AV115-30+Moteur média dédié

Pour les deployments Linux, Vajra Cast supporte également VAAPI (Video Acceleration API), qui fonctionne avec les GPU Intel et AMD. Le chemin de repli automatique est QSV d’abord, puis VAAPI, garantissant que l’accélération matérielle est utilisée dès qu’elle est disponible.

GPU NVIDIA

Bien que le chemin principal d’accélération matérielle de Vajra Cast soit Intel QSV/VAAPI, NVIDIA NVENC est supporté via l’intégration NVENC de FFmpeg. Les GPU NVIDIA offrent un transcodage haute densité :

GPUSessions NVENCNotes
GTX 1650-16603 (limite grand public)NVIDIA limite les cartes grand public
RTX 3060-40605 (limite grand public)Meilleur moteur de qualité
Tesla T4IllimitéGPU datacenter, pas d’affichage
A100/H100IllimitéSurdimensionné pour le streaming

Important : les GPU grand public NVIDIA (GeForce) sont limités à 3-5 sessions NVENC simultanées par politique du pilote. Pour un usage production nécessitant plus de sessions, utilisez des GPU datacenter (Tesla, série A) ou utilisez Intel QSV à la place, qui n’a pas de limite artificielle de sessions.

Apple Silicon (série M)

Sur macOS, Vajra Cast exploite VideoToolbox d’Apple pour l’accélération matérielle. Apple Silicon offre d’excellentes performances média :

PuceCapacitéTranscodages 1080p60 simultanés
M1H.264 + HEVC3-5
M2H.264 + HEVC5-8
M2 ProH.264 + HEVC8-12
M2 MaxH.264 + HEVC + ProRes12-20
Série M3/M4H.264 + HEVC + AV1 (décodage)Similaire aux équivalents M2

Le Mac Mini M2 avec 16 Go de RAM est un excellent serveur de streaming économique pour les deployments petits à moyens. Il est silencieux, consomme 10-15 W au repos, et gère 10-20 flux passthrough ou 3-5 transcodages matériels.

Exigences RAM

L’utilisation RAM d’un serveur de streaming évolue avec le nombre de flux simultanément actifs et la taille du tampon par flux.

Utilisation mémoire par flux

ComposantMémoire par fluxNotes
Tampon entrée SRT2-8 MoDépend du paramètre de latence
Tampon sortie SRT2-8 MoPar destination de sortie
Tampon décodage transcodage50-100 MoTampons d’images pour le décodage
Tampon encodage transcodage50-150 MoTampons d’images pour l’encodage
Tampon segments HLS20-50 MoSegments en mémoire
Tampon enregistrement10-20 MoTampon d’écriture

Recommandations RAM totales

Charge de travailRAMNotes
1-10 flux passthrough4 GoSurdébit minimal
10-30 flux passthrough8 GoMarge confortable
1-5 flux en transcodage8 GoTampons de décodage + encodage
5-15 flux en transcodage16 GoMinimum recommandé pour la production
15-30 flux en transcodage32 GoDeployment classe serveur
30+ flux en transcodage64 GoÉchelle entreprise

Bonne pratique : allouez au moins 2 fois votre minimum calculé. Les charges de streaming sont par rafales, et fonctionner près des limites de mémoire risque des OOM (Out of Memory) kills, qui font planter vos flux.

ECC vs. non-ECC

Pour les serveurs de diffusion de production fonctionnant 24h/24 et 7j/7, la mémoire ECC (Error-Correcting Code) est fortement recommandée. L’ECC détecte et corrige les erreurs de bits isolées qui peuvent corrompre les données du flux ou faire planter l’application. Le surcoût de l’ECC est faible par rapport au coût d’une panne en direct.

Les processeurs Intel Xeon et AMD EPYC supportent l’ECC nativement. Les processeurs grand public Intel Core et AMD Ryzen ne le supportent généralement pas (avec quelques exceptions dans la gamme AMD).

Exigences réseau

Le réseau est la ressource la plus souvent sous-estimée dans la planification d’un serveur de streaming.

Calcul de bande passante

Calculez votre besoin total en bande passante :

Bande passante totale = (Somme des débits entrants) + (Somme des débits sortants) + (Surdébit SRT)

Exemple : 5 entrées SRT à 10 Mbps chacune, distribuées vers 3 sorties RTMP et 2 sorties SRT chacune :

Entrées : 5 × 10 Mbps = 50 Mbps
Sorties : 5 × 5 × 10 Mbps = 250 Mbps (5 flux × 5 sorties chacun)
Surdébit SRT : ~25 % sur l'entrée = 12,5 Mbps
Total : ~312,5 Mbps

Cela nécessite au minimum une interface réseau de 1 Gbps avec une marge confortable.

Recommandations d’interface réseau

Débit totalInterfaceNotes
< 100 Mbps1 GbpsLargement suffisant pour les petites configurations
100-500 Mbps1 GbpsSurveiller l’utilisation, planifier la montée en gamme
500 Mbps - 2 Gbps2,5 ou 10 GbpsMinimum production pour l’échelle moyenne
2-10 Gbps10 GbpsStandard pour les installations broadcast
> 10 Gbps25/100 Gbps ou 10 Gbps agrégéIngestion CDN entreprise

Considérations réseau

Trames jumbo : activez les trames jumbo (MTU 9000) sur votre réseau local pour le trafic SRT. Cela réduit la charge CPU pour le traitement des paquets et améliore le débit sur les liens 10 Gbps.

Séparez le trafic de gestion et le trafic média : utilisez des interfaces réseau dédiées pour les données de streaming et le trafic de gestion/surveillance. Cela empêche les appels API de surveillance de concurrencer les données de flux en direct.

Bande passante symétrique : les serveurs de streaming nécessitent une bande passante montante égale ou supérieure à la bande passante descendante. Beaucoup de connexions internet grand public sont asymétriques (haut débit descendant, faible débit montant). Utilisez une connectivité professionnelle ou datacenter avec une bande passante symétrique.

Exigences de stockage

Le stockage n’est nécessaire que si vous enregistrez des flux ou écrivez des segments HLS sur disque.

Enregistrement

Calculez le stockage pour l’enregistrement :

Stockage par heure = (Débit en Mbps × 3600) / 8 = Mo par heure
DébitPar heurePar 8 heuresNotes
5 Mbps2,25 Go18 GoFlux web basse qualité
10 Mbps4,5 Go36 GoHD standard
15 Mbps6,75 Go54 GoHD haute qualité
25 Mbps11,25 Go90 Go4K ou HD haut débit

Pour l’enregistrement ISO de 6 caméras à 10 Mbps chacune plus la sortie programme :

7 flux × 4,5 Go/heure = 31,5 Go/heure
Événement de 8 heures = 252 Go

Utilisez des SSD NVMe pour l’enregistrement lors de l’écriture de plusieurs flux simultanés. Les disques mécaniques peuvent gérer 2-3 flux simultanés mais peinent avec 5 ou plus en raison de la latence de recherche. Le NVMe élimine entièrement ce goulot d’étranglement.

Segments HLS

Si vous écrivez les segments HLS sur disque (plutôt que de les servir depuis la mémoire), le besoin en stockage est faible mais les exigences en E/S sont élevées. Les segments HLS sont de petits fichiers écrits fréquemment (un par durée de segment par niveau de qualité) :

Segments de 4 secondes, 4 niveaux de qualité = 1 écriture de fichier par seconde en continu

Utilisez un SSD pour le répertoire de travail HLS. L’espace total est modeste (quelques Go pour la fenêtre live), mais le profil d’E/S exige des performances rapides en écriture aléatoire.

Configuration requise pour Vajra Cast

Voici les exigences spécifiques pour exécuter Vajra Cast :

Configuration minimale

ComposantSpécification
OSmacOS 12+ (Apple Silicon ou Intel) ou Linux (Ubuntu 22.04+, Debian 12+)
CPU4 coeurs
RAM8 Go
Disque10 Go libres (plus espace d’enregistrement)
RéseauEthernet 1 Gbps
GPUIntel QSV (pour le transcodage matériel sous Linux) ou Apple VideoToolbox (macOS)

Configuration production recommandée

ComposantSpécification
OSLinux (Ubuntu 22.04 LTS) ou macOS (Sonoma+)
CPU8+ coeurs (Intel 12e Gen+ pour QSV, ou Apple M2+)
RAM16 Go (ECC préféré sur les serveurs Linux)
DisqueSSD NVMe, 500 Go+ pour l’enregistrement
RéseauEthernet 10 Gbps
GPUQSV Intel intégré (Linux) ou Apple Silicon (macOS)

Deployment Docker

Pour les deployments conteneurisés, Vajra Cast fonctionne dans Docker avec ces considérations :

# extrait docker-compose.yml
services:
  vajracast:
    image: vajracast/vajracast:latest
    network_mode: host  # Requis pour SRT/UDP
    devices:
      - /dev/dri:/dev/dri  # Acces Intel QSV
    volumes:
      - ./data:/data
      - ./recordings:/recordings
    deploy:
      resources:
        limits:
          memory: 8G
        reservations:
          memory: 4G

Considérations clés pour Docker :

  • network_mode: host est requis pour les performances SRT (UDP). Le réseau bridge de Docker ajoute de la latence et complique le mapping de ports pour les SRT listeners.
  • Le pass-through du périphérique /dev/dri est requis pour l’accélération matérielle Intel QSV dans les conteneurs Linux.
  • Limites mémoire : définissez la limite mémoire du conteneur à au moins 2 fois votre ensemble de travail attendu pour éviter les OOM kills lors des pics de trafic.

Deployment Kubernetes

Pour l’orchestration Kubernetes, Vajra Cast supporte le deployment multi-instances avec PostgreSQL comme base de données partagée :

  • Utilisez hostNetwork: true pour les pods gérant le trafic SRT
  • Demandez les ressources GPU via le plugin de périphérique Intel pour QSV
  • Déployez PostgreSQL en tant que StatefulSet séparé ou utilisez un service de base de données gérée
  • Utilisez des volumes persistants pour le stockage d’enregistrement

Directives de mise à l’échelle

Mise à l’échelle verticale (serveur plus puissant)

Ajoutez plus de CPU, de RAM ou un meilleur GPU pour gérer davantage de flux sur un seul serveur :

AméliorationEffet
Plus de coeurs CPUPlus de transcodages logiciels simultanés
Meilleur GPU IntelPlus de transcodages matériels simultanés
Plus de RAMPlus de flux concurrents avec de grands tampons
NIC plus rapidePlus de débit total pour les sorties
Stockage NVMePlus d’enregistrements simultanés

La mise à l’échelle verticale est plus simple à gérer mais a un plafond. Un seul serveur atteint sa limite autour de 50-100 flux selon la charge de travail.

Mise à l’échelle horizontale (plus de serveurs)

Déployez plusieurs instances Vajra Cast derrière une stratégie de distribution de charge :

Source → Passerelle 1 (flux 1-20)  → Sorties
       → Passerelle 2 (flux 21-40) → Sorties
       → Passerelle 3 (flux 41-60) → Sorties

Chaque passerelle fonctionne indépendamment avec son propre ensemble de flux. Un orchestrateur central (Kubernetes, Terraform ou automatisation personnalisée) gère le deployment et la configuration.

La mise à l’échelle horizontale n’a pas de plafond théorique et fournit une isolation naturelle des pannes : si la Passerelle 2 tombe en panne, les Passerelles 1 et 3 continuent de fonctionner.

Configurations de référence

Configuration 1 : serveur de streaming économique

Cas d’usage : petite production, 5-10 flux passthrough, 1-2 transcodages

ComposantSpécificationCoût approx.
PlateformeMac Mini M2600 $
RAM16 Go (inclus)
StockageSSD 256 Go + 1 To externe80 $
RéseauGigabit intégré
Total~680 $

Configuration 2 : serveur de production moyen

Cas d’usage : 15-30 flux, 5-10 transcodages, enregistrement ISO

ComposantSpécificationCoût approx.
CPUIntel Core i7-13700 (16 coeurs, QSV)350 $
Carte mèreB760 ou Z790 (classe serveur si ECC nécessaire)150-250 $
RAM32 Go DDR5100 $
Stockage1 To NVMe (OS + HLS) + 4 To NVMe (enregistrement)250 $
RéseauIntel X710 NIC 10 Gbps80 $
Boîtier + alimentationTour silencieuse, 500 W 80+ Gold150 $
Total~1 100-1 200 $

Configuration 3 : serveur broadcast entreprise

Cas d’usage : 50+ flux, transcodage intensif, fonctionnement 24h/24 7j/7

ComposantSpécificationCoût approx.
CPUIntel Xeon w5-2465X (16 coeurs, QSV, ECC)1 000 $
Carte mèreW790 carte workstation500 $
RAM64 Go DDR5 ECC300 $
Stockage2 To NVMe (OS) + baie RAID pour enregistrement800 $
RéseauDouble NIC 10 Gbps150 $
GPUIntel Arc A380 (capacité QSV supplémentaire)130 $
Boîtier + alimentationRackmount 2U, alimentation redondante400 $
Total~3 300 $

Conclusion

Le choix du matériel pour un serveur de streaming se résume à comprendre votre charge de travail : le routage passthrough nécessite de la bande passante réseau, le transcodage logiciel nécessite des coeurs CPU, et le transcodage matériel nécessite le bon GPU. Commencez par classifier votre charge de travail, calculez vos besoins en utilisant les tableaux ci-dessus, et construisez ou approvisionnez avec au moins 50 % de marge pour la croissance et les pics de charge.

Pour la plupart des deployments, un système Intel milieu de gamme avec QSV (ou un Mac Mini M2 pour les opérations plus petites) offre le meilleur équilibre entre performance, coût et efficacité énergétique. Mettez à l’échelle horizontalement avec Docker ou Kubernetes lorsqu’un seul serveur ne suffit plus.

Explorez le guide de passerelle SRT pour l’architecture logicielle qui tourne sur ce matériel, et consultez les bonnes pratiques de basculement vidéo pour garantir que votre infrastructure reste opérationnelle quand des composants tombent en panne.