Configuration requise pour un serveur de diffusion en direct sur du matériel dédié

Configuration requise pour un serveur de streaming en direct sur du matériel dédié

Diffuser en direct sur Twitch ou YouTube, ça va tant que tu n'as pas besoin de fonctionnalités qu'ils ne proposent pas : latence personnalisée, plusieurs diffusions simultanées, routage spécifique à l'audience, ou une configuration où la plateforme ne prélève aucune commission sur les revenus. Le streaming auto-hébergé sur un serveur dédié résout tous ces problèmes, mais les exigences en matière de matériel et de configuration sont bien précises. Pour obtenir…

Ce que le streaming en direct exige réellement d'un serveur

Un serveur de diffusion en direct effectue trois opérations distinctes, chacune avec des profils de ressources différents :

Ingestion : reçoit le flux encodé depuis ton logiciel de diffusion (OBS, Restream, vMix) via RTMP (Real-Time Messaging Protocol). Peu gourmand en ressources CPU : le serveur se contente d'accepter une connexion réseau et d'écrire sur le disque ou en mémoire.

Transcodage : réencode le flux entrant en plusieurs niveaux de qualité (1080p, 720p, 480p, 360p) pour que les spectateurs disposant de différentes bandes passantes puissent regarder la vidéo sans mise en mémoire tampon. Cette opération sollicite fortement le processeur. C'est là que la plupart des serveurs atteignent leurs limites.

Diffusion : envoie les segments HLS (HTTP Live Streaming) ou DASH aux spectateurs via un CDN ou directement. Cela nécessite une bande passante importante. Pour 100 spectateurs simultanés à 4 Mbps chacun, cela représente 400 Mbps de bande passante sortante en continu.

Ton serveur doit gérer ces trois éléments simultanément, éventuellement pour plusieurs flux en même temps.

Configuration matérielle requise par cas d'utilisation

Un seul flux, jusqu'à 500 spectateurs simultanés

Configuration minimale requise : InMotion Essential (99,99 $/mois, 64 Go de DDR4, 2 disques NVMe de 1,92 To)

En 1080p30 avec un préréglage x264 « medium » et un transcodage sur 3 niveaux de qualité, attends-toi à ce que 4 à 6 cœurs du processeur soient pleinement sollicités pendant la diffusion en direct. Le processeur du serveur Essential gère ça sans problème. Avec 500 spectateurs simultanés recevant des flux à 4 Mbps, la bande passante sortante atteint 2 Gbps — ce qui reste dans les limites de la bande passante extensible de 10 Gbps.

La mémoire vive n'est pas un goulot d'étranglement à cette échelle : 8 à 16 Go suffisent pour la pile de streaming. 64 Go offrent une marge de manœuvre pour le système d'exploitation et tout autre service fonctionnant en parallèle du streaming.

Plusieurs flux ou 500 à 5 000 spectateurs simultanés

On te conseille : InMotion Elite ou Extreme (199,99 $ à 349,99 $ par mois)

Les opérations multi-flux ou les audiences importantes nécessitent soit davantage de cœurs de processeur pour le transcodage simultané, soit suffisamment de mémoire vive pour mettre en mémoire tampon les segments de flux de manière intensive. Avec 2 000 spectateurs simultanés recevant un flux HLS à 4 Mbps, tu atteins un débit soutenu de 8 Gbps — ce qui te rapproche de la limite de débit en pointe et constitue un argument de poids en faveur d'une bande passante garantie et illimitée de 10 Gbps.

Les 16 cœurs et 32 threads de l'AMD EPYC 4545P sont parfaitement adaptés aux tâches de transcodage simultanées. Le transcodage logiciel utilisant libx264 ou libvpx évolue de manière linéaire avec le nombre de cœurs : deux flux 1080p simultanés consomment environ deux fois plus de ressources CPU qu'un seul.

Diffusion à grande échelle (plus de 5 000 spectateurs simultanés)

À cette échelle, le serveur dédié gère l'acquisition et le transcodage ; un CDN se charge de la diffusion. Le calcul est simple : 5 000 spectateurs à 4 Mbps, cela représente 20 Gbps de bande passante de diffusion, ce qui dépasse largement la capacité réelle d'un seul serveur. Un CDN correctement configuré récupère le flux HLS sur ton serveur une seule fois et le distribue aux spectateurs — ton serveur ne voit alors qu'un petit nombre de connexions aux points de présence (PoP) du CDN, au lieu de 5 000 connexions individuelles de spectateurs.

Configurer Nginx sous Linux

Nginx le module RTMP est le serveur de streaming open source par excellence. Sur AlmaLinux ou Ubuntu :

# Ubuntu

apt-get install nginx libnginx-mod-rtmp -y

# AlmaLinux/Rocky

dnf install nginx -y

# Compile RTMP module or use community packages

Basic Nginx configuration for ingest and HLS delivery:

# /etc/nginx/nginx.conf

rtmp {

    server {

        listen 1935;

        chunk_size 4096;

        application live {

            live on;

            record off;

            # HLS delivery

            hls on;

            hls_path /var/www/html/hls;

            hls_fragment 3s;

            hls_playlist_length 60s;

            # Transcode to multiple qualities

            exec_push ffmpeg -i rtmp://localhost/$app/$name

                -c:v libx264 -b:v 3000k -s 1920x1080 -r 30

                -c:a aac -b:a 128k

                -f flv rtmp://localhost/hls/$name_1080p

                -c:v libx264 -b:v 1500k -s 1280x720 -r 30

                -c:a aac -b:a 128k

                -f flv rtmp://localhost/hls/$name_720p

                -c:v libx264 -b:v 600k -s 854x480 -r 30

                -c:a aac -b:a 96k

                -f flv rtmp://localhost/hls/$name_480p;

        }

        application hls {

            live on;

            hls on;

            hls_path /var/www/html/hls;

            hls_fragment 3s;

            hls_nested on;

        }

    }

}

http {

    server {

        listen 80;

        location /hls {

            types {

                application/vnd.apple.mpegurl m3u8;

                video/mp2t ts;

            }

            root /var/www/html;

            add_header Cache-Control no-cache;

            add_header Access-Control-Allow-Origin *;

        }

    }

}

Cette configuration accepte un flux RTMP provenant d'OBS sur le port 1935, le transcode en trois niveaux de qualité via FFmpeg, puis diffuse les segments HLS via HTTP sur le port 80.

Paramètres de diffusion OBS :

  • Serveur : rtmp://adresse-IP-de-ton-serveur/live
  • Clé du flux : n'importe quelle chaîne de caractères (devient le nom du flux)
  • Encodeur : x264 ou NVENC (si un GPU est disponible)
  • Débit binaire : 6 000 Kbps pour une source en 1080p60

Diffuse simultanément sur Twitch et YouTube via un serveur dédié

Un serveur RTMP dédié peut rediffuser le contenu sur plusieurs plateformes en même temps, ce qui évite d'avoir recours à un service de rediffusion payant.

application live {

    live on;

    # Push to Twitch

    push rtmp://live.twitch.tv/app/YOUR_TWITCH_STREAM_KEY;

    # Push to YouTube

    push rtmp://a.rtmp.youtube.com/live2/YOUR_YOUTUBE_STREAM_KEY;

    # Keep local HLS copy

    hls on;

    hls_path /var/www/html/hls;

}

Ton diffuseur envoie un flux vers ton serveur dédié ; celui-ci le distribue simultanément vers Twitch, YouTube et ton propre point de terminaison HLS. Cela nécessite une bande passante sortante égale à la somme de tous les débits de destination — généralement entre 6 000 et 18 000 Kbps, selon les exigences de chaque plateforme.

Optimisation du transcodage avec FFmpeg

Les paramètres par défaut de FFmpeg privilégient la qualité au détriment de l'efficacité du processeur. Pour la diffusion en direct, où les performances en temps réel sont indispensables, modifie le préréglage et les paramètres :

ffmpeg -i rtmp://localhost/$app/$name \

    -c:v libx264 \

    -preset veryfast \       # Critical for real-time: veryfast or ultrafast

    -tune zerolatency \      # Reduces encoding delay

    -b:v 3000k \

    -maxrate 3000k \

    -bufsize 6000k \

    -g 60 \                  # Keyframe interval (2x framerate for 30fps)

    -sc_threshold 0 \        # Disable scene change detection (adds latency)

    -c:a aac \

    -b:a 128k \

    -f flv rtmp://localhost/hls/$name_1080p

Le paramètre « veryfast » réduit légèrement la qualité d'encodage par rapport aux modes « slow » ou « medium », mais diminue la charge du processeur de 60 à 70 % — ce qui est indispensable pour le transcodage en temps réel sur un processeur qui gère simultanément plusieurs flux ou d'autres tâches.

Le guide d'encodage de FFmpeg explique en détail les compromis entre les différents préréglages.

Configuration du pare-feu pour le streaming

Ouvre les ports dont ta pile de streaming a besoin :

# Allow RTMP ingest from broadcasters

nft add rule inet filter input tcp dport 1935 accept

# Allow HTTP delivery of HLS segments

nft add rule inet filter input tcp dport 80 accept

nft add rule inet filter input tcp dport 443 accept

# Restrict RTMP ingest to known broadcaster IPs if possible

# Replace with actual broadcaster IP

nft add rule inet filter input ip saddr 203.0.113.0/24 tcp dport 1935 accept

nft add rule inet filter input tcp dport 1935 drop

Si tu laisses le port RTMP ouvert sur Internet, n'importe qui peut diffuser du contenu sur ton serveur. En limitant l'accès au port d'acquisition à certaines adresses IP, tu empêches toute utilisation non autorisée de la bande passante de ton serveur.

Espace de stockage pour l'enregistrement de flux

Les flux enregistrés en 1080p consomment environ 1 Go pour 10 minutes d'enregistrement, à un débit de 12 à 15 Mbps. Pour tes opérations de streaming habituelles, prévois l'espace de stockage en conséquence :

  • 2 heures d'enregistrement par jour : environ 12 Go/jour, environ 360 Go/mois
  • Le serveur Essential d'InMotion comprend 2 disques NVMe de 1,92 To chacun NVMe une capacité suffisante pour environ 3 000 heures d'enregistrement avant de devoir archiver
Configure Nginx-RTMP to record to a specific path:

application live {

    live on;

    record all;

    record_path /var/recordings;

    record_suffix -%d%m%Y-%H%M%S.flv;

    record_max_size 1000M;  # Split at 1GB to keep files manageable

}

L'espace de stockage de sauvegarde Premier Care d'InMotion (500 Go) te permet de conserver une copie hors serveur de tes enregistrements importants. Pour un archivage à plus long terme, configure rclone pour synchroniser régulièrement le répertoire des enregistrements vers un stockage objet compatible S3.

À lire aussi: Optimisation de la latence réseau pour les serveurs dédiés | Optimisation des serveurs d'origine CDN

Partager cet article

Laisser une réponse

Ton adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués *