Streaming multi-destinations : envoyer un flux vers plusieurs plateformes
Pourquoi le streaming multi-destinations ?
Votre audience n’est pas sur une seule plateforme. Elle est répartie entre YouTube, Twitch, Facebook, X, LinkedIn et votre propre site web. Si vous ne diffusez que sur une seule, vous laissez des spectateurs de côté. Si vous diffusez sur toutes, vous maximisez votre portée à partir d’un seul effort de production.
L’approche naïve consiste à lancer plusieurs encodeurs ou à utiliser la fonction “restream” d’outils comme OBS. Le problème : chaque sortie supplémentaire implique un cycle d’encodage complet, multipliant la charge CPU. Encoder une fois pour YouTube, encore pour Twitch, encore pour Facebook — avec trois encodages, vous utilisez 3x le CPU pour le même contenu. Sur un flux 1080p60, c’est la différence entre un mini PC fanless et une station de travail bruyante.
L’approche professionnelle est la distribution multi-destinations au niveau de la passerelle : ingérer le flux une seule fois, puis le distribuer à toutes les destinations en utilisant un routage zéro-copie. Le flux est décodé et encodé une seule fois (ou pas du tout, en mode passthrough), et des copies sont envoyées à chaque plateforme avec l’adaptation de protocole et de débit selon les besoins.
Ce guide explique comment configurer le streaming multi-destinations de manière efficace, avec des configurations spécifiques pour les principales plateformes.
Distribution zéro-copie : comment ça fonctionne
Le streaming multi-destinations traditionnel multiplie le travail à chaque étape :
Caméra → Encodeur → [Encoder pour YouTube] → YouTube
→ [Encoder pour Twitch] → Twitch
→ [Encoder pour Facebook] → Facebook
Charge CPU : 3x encodage
La distribution zéro-copie change l’architecture :
Caméra → Encodeur → [Ingestion unique] → Passerelle
├── Copie → YouTube (RTMP)
├── Copie → Twitch (RTMP)
├── Copie → Facebook (RTMP)
├── Copie → SRT out (SRT)
└── Copie → HLS (HLS)
Charge CPU : 1x ingestion + 0% par sortie supplémentaire
Dans Vajra Cast, c’est ce qu’on appelle la distribution zéro-copie. En interne, la passerelle utilise un routage de type multicast : les données du flux ingéré sont écrites une seule fois en mémoire partagée, et chaque sortie lit depuis ce même tampon. Ajouter la 5e ou la 50e sortie n’utilise aucun CPU supplémentaire et aucune bande passante mémoire additionnelle (au-delà de l’E/S socket pour l’envoi des données).
Ce n’est pas une optimisation théorique. C’est la différence entre avoir besoin d’un serveur dédié par plateforme et faire tourner plus de 10 destinations sur un Mac Mini.
Configurer les sorties multi-destinations
Étape 1 : ingérer votre source
Configurez une ingestion unique dans votre passerelle. Pour une flexibilité maximale, utilisez SRT :
SRT Listener sur le port 9000
Latence : 200ms (ou adapté à votre réseau)
Chiffrement : AES-256
Pointez votre encodeur (OBS, vMix, Wirecast, encodeur matériel) vers cette ingestion en tant que SRT caller. Votre flux est maintenant dans la passerelle.
Alternativement, ingérez via RTMP si votre encodeur ne supporte pas SRT. La passerelle gère la conversion de protocole en interne.
Consultez le guide de configuration SRT pour la configuration détaillée de l’ingestion.
Étape 2 : créer les destinations de sortie
Pour chaque plateforme, créez une sortie distincte. Chaque sortie est indépendante : elle possède son propre protocole, son URL, sa clé de flux et ses paramètres de transcodage optionnels.
Exemple de configuration pour une diffusion multi-plateformes typique :
| # | Destination | Protocole | URL | Notes |
|---|---|---|---|---|
| 1 | YouTube Live | RTMP | rtmp://a.rtmp.youtube.com/live2 | Clé de flux depuis YouTube Studio |
| 2 | Twitch | RTMP | rtmp://live.twitch.tv/app | Clé de flux depuis le Tableau de bord Twitch |
| 3 | Facebook Live | RTMP | rtmps://live-api-s.facebook.com:443/rtmp | Attention : RTMPS (TLS) obligatoire |
| 4 | CDN personnalisé | SRT | srt://cdn.example.com:9100 | SRT caller vers l’ingestion CDN |
| 5 | Lecteur web | HLS | Serveur HLS intégré | Vajra Cast sert le HLS directement |
| 6 | Enregistrement | Fichier | /recordings/event-2026.ts | Stockage local ou NFS |
Étape 3 : activer toutes les sorties
Dans Vajra Cast, les sorties peuvent être activées et désactivées indépendamment pendant que le flux est en cours. Cela signifie que vous pouvez :
- Commencer à diffuser sur YouTube pour un pré-show
- Activer Twitch lorsque l’événement principal commence
- Ajouter Facebook en cours de flux quand l’équipe social media est prête
- Désactiver n’importe quelle sortie à tout moment sans affecter les autres
C’est la fonctionnalité de gestion à chaud : pas de redémarrage, pas d’interruption, pas de temps d’arrêt pour les autres sorties lorsque vous en modifiez une.
Configuration spécifique par plateforme
Chaque plateforme de streaming a ses propres exigences et particularités. Voici ce que vous devez savoir pour les principales plateformes.
YouTube Live
Protocole : RTMP (supporte également l’ingestion HLS pour les comptes premium)
URL d’ingestion : rtmp://a.rtmp.youtube.com/live2
Clé de flux : générée dans YouTube Studio sous “Passer en direct” > “Flux”
Encodage recommandé :
| Paramètre | Valeur |
|---|---|
| Résolution | 1080p (1920x1080) |
| Fréquence d’images | 30 ou 60 fps |
| Codec vidéo | H.264 High Profile |
| Débit vidéo | 4 500-9 000 Kbps |
| Intervalle d’images clés | 2 secondes |
| Codec audio | AAC-LC |
| Débit audio | 128 Kbps stéréo |
| Fréquence d’échantillonnage | 44,1 kHz |
Notes importantes :
- YouTube exige un intervalle d’images clés d’exactement 2 secondes pour une ingestion fiable. Tout écart provoque un délai de disponibilité et des mises en mémoire tampon.
- YouTube transcode tout côté serveur, donc votre flux sera disponible en plusieurs qualités quel que soit ce que vous envoyez.
- Pour le streaming 4K, votre compte doit être vérifié et la fonctionnalité activée séparément.
- YouTube supporte les clés de flux persistantes, vous pouvez donc configurer une seule fois et réutiliser.
Twitch
Protocole : RTMP
URL d’ingestion : utilisez le serveur d’ingestion Twitch le plus proche. Consultez la liste des serveurs d’ingestion Twitch ou utilisez rtmp://live.twitch.tv/app pour le routage automatique.
Clé de flux : disponible dans le Tableau de bord Créateur > Paramètres > Flux
Encodage recommandé :
| Paramètre | Valeur |
|---|---|
| Résolution | 1080p ou 936p |
| Fréquence d’images | 60 fps de préférence |
| Codec vidéo | H.264 High Profile |
| Débit vidéo | 6 000 Kbps (max 8 500 pour les Partenaires) |
| Intervalle d’images clés | 2 secondes |
| Codec audio | AAC-LC |
| Débit audio | 160 Kbps stéréo |
| Fréquence d’échantillonnage | 48 kHz |
Notes importantes :
- Twitch impose un plafond de débit de 6 000 Kbps pour la plupart des streamers. Les Partenaires et Affiliés peuvent avoir des limites plus élevées.
- Twitch ne transcode pas pour tous les streamers par défaut. Les non-partenaires peuvent n’obtenir que leur qualité native, donc évitez d’envoyer du 1080p60 à 8 Mbps si votre audience a des contraintes de bande passante.
- Twitch préfère une fréquence d’échantillonnage audio de 48 kHz (pas 44,1 kHz).
- Si vous utilisez le multi-destinations et envoyez le même encodage à YouTube et Twitch, alignez-vous sur la plus restrictive des deux exigences (par ex. 6 000 Kbps pour la compatibilité Twitch).
Facebook Live
Protocole : RTMPS (RTMP sur TLS, obligatoire)
URL d’ingestion : rtmps://live-api-s.facebook.com:443/rtmp
Clé de flux : générée par flux dans Facebook Live Producer (usage unique par défaut)
Encodage recommandé :
| Paramètre | Valeur |
|---|---|
| Résolution | 1080p (maximum pour la plupart des pages) |
| Fréquence d’images | 30 fps |
| Codec vidéo | H.264 Main ou High Profile |
| Débit vidéo | 3 000-6 000 Kbps |
| Intervalle d’images clés | 2 secondes |
| Codec audio | AAC-LC |
| Débit audio | 128 Kbps stéréo |
| Fréquence d’échantillonnage | 48 kHz |
Notes importantes :
- Facebook exige RTMPS (RTMP chiffré par TLS). Les connexions RTMP non chiffrées sont refusées. Assurez-vous que votre passerelle supporte la sortie RTMPS.
- Les clés de flux Facebook sont à usage unique par défaut. Pour les événements récurrents, configurez une “clé de flux persistante” dans Live Producer.
- Facebook Live a une résolution maximale de 1080p et un débit maximal recommandé de 6 000 Kbps.
- Facebook est plus strict que les autres plateformes concernant l’intervalle d’images clés. Tout écart par rapport à 2 secondes peut provoquer des échecs d’ingestion.
Destinations SRT personnalisées
Pour les partenaires broadcast, les ingestions CDN ou votre propre infrastructure, SRT offre le transport le plus fiable et sécurisé :
SRT Caller vers srt://partner-server:9000
Latence : configurée par destination
Chiffrement : AES-256 avec phrase secrète par destination
Chaque sortie SRT dans Vajra Cast peut avoir sa propre latence, son chiffrement et ses paramètres de bande passante, indépendamment de la configuration d’ingestion.
Sortie HLS pour lecteurs web
Vajra Cast inclut un serveur HLS intégré pour le streaming direct vers les spectateurs. Cela élimine le besoin d’un serveur média séparé :
Sortie HLS :
Durée des segments : 4 secondes (standard) ou 2 secondes (faible latence)
Profondeur de playlist : 3-5 segments
Disponible à : http://votre-serveur:port/hls/nom-du-flux/index.m3u8
La sortie HLS peut coexister avec toutes les autres sorties simultanément. Pour un approfondissement de la configuration HLS, consultez le guide HLS streaming adaptatif.
Considérations de qualité pour le multi-destinations
Le problème du plus petit dénominateur commun
Lorsque vous envoyez le même flux à plusieurs plateformes sans transcodage, vous êtes limité par la plateforme la plus restrictive. Si Twitch plafonne à 6 000 Kbps et YouTube accepte 9 000 Kbps, vous avez le choix :
- Envoyer 6 000 Kbps à tout le monde — simple, mais les spectateurs YouTube obtiennent une qualité inférieure à ce qui est possible
- Transcoder par destination — qualité optimale partout, mais coûte en CPU
Pour la plupart des productions, l’option 1 est le bon compromis. La différence de qualité entre 6 000 et 9 000 Kbps en 1080p est visible mais marginale, et la simplicité d’un encodage unique en vaut la peine.
Pour les productions premium où l’optimisation de qualité par plateforme est importante, Vajra Cast supporte le transcodage par sortie avec accélération matérielle (Intel QSV). Vous pouvez envoyer du 1080p60 à 8 000 Kbps vers YouTube et du 1080p60 à 6 000 Kbps vers Twitch, chacun transcodé depuis la même source avec l’encodage matériel. Sur un système Intel avec QSV, cela coûte une fraction du CPU par rapport à l’encodage logiciel.
Alignement des images clés
Toutes les grandes plateformes exigent un intervalle d’images clés de 2 secondes. Si votre encodeur source produit des images clés à un intervalle différent (disons 4 secondes), la passerelle doit soit :
- Passer en passthrough et espérer que la plateforme le tolère (peu fiable)
- Transcoder avec l’intervalle d’images clés correct (fiable mais consomme du CPU)
Bonne pratique : configurez votre encodeur source pour produire des images clés à des intervalles de 2 secondes dès le départ. Cela garantit la compatibilité passthrough avec toutes les plateformes et élimine le besoin de transcodage au niveau de la passerelle juste pour l’ajustement des images clés.
Considérations sur la fréquence d’images
YouTube et Twitch bénéficient tous deux du contenu à 60 fps, surtout pour les mouvements rapides (gaming, sport). Facebook plafonne à 30 fps pour la plupart des cas. Si vous envoyez du 60 fps à Facebook, la plateforme va soit sous-échantillonner, soit rejeter le flux selon votre type de compte.
Pour des destinations mixtes 30 fps et 60 fps, vous pouvez :
- Encoder à 30 fps pour une compatibilité universelle (plus simple)
- Encoder à 60 fps et laisser la plateforme 30 fps sous-échantillonner (fonctionne généralement mais sans garantie)
- Utiliser le transcodage par sortie pour convertir le 60 fps en 30 fps pour des destinations spécifiques
Surveillance des sorties multi-destinations
Lorsque vous envoyez vers plus de 5 destinations simultanément, chacune peut tomber en panne indépendamment. Une clé de flux YouTube expirée, un serveur Twitch en panne ou un changement de route réseau peut provoquer la chute d’une seule sortie tandis que toutes les autres continuent de fonctionner.
Surveillance de santé par sortie
Surveillez chaque sortie indépendamment :
- État de connexion : la sortie est-elle connectée ? Si RTMP, le handshake est-il terminé ?
- Débit : la sortie transmet-elle au débit attendu ? Une chute soudaine suggère de la congestion ou un throttling côté plateforme.
- Taux d’erreur : pour les sorties SRT, surveillez la perte de paquets. Pour les sorties RTMP, surveillez les délais de retransmission TCP.
- Durée : depuis combien de temps cette sortie est-elle connectée ? Des réinitialisations inattendues indiquent de l’instabilité.
Vajra Cast fournit toutes ces métriques par sortie dans le tableau de bord web et via l’endpoint Prometheus /metrics.
Alertes
Configurez des alertes pour :
- Toute sortie se déconnectant de manière inattendue
- Un débit de sortie chutant en dessous de 50 % du débit attendu
- Une connexion RTMP ne parvenant pas à se rétablir en 30 secondes
- Une perte de paquets SRT dépassant 5 % de manière soutenue
Avec Prometheus et Grafana, ces alertes peuvent déclencher des messages Slack, des incidents PagerDuty ou des appels webhook vers votre système d’automatisation.
Mise à l’échelle de la distribution multi-destinations
Combien de sorties pouvez-vous exécuter ?
Avec la distribution zéro-copie, la limite pratique est la bande passante réseau, pas le CPU :
| Réseau | Sorties max (flux 10 Mbps) | Sorties max (flux 5 Mbps) |
|---|---|---|
| 100 Mbps | ~8 | ~16 |
| 1 Gbps | ~80 | ~160 |
| 10 Gbps | ~800 | ~1 600 |
Ce sont des maximums théoriques. En pratique, vous voulez une marge pour le surdébit de retransmission SRT et le trafic en rafale. Prévoyez 70 % d’utilisation réseau en pointe.
L’utilisation CPU reste stable indépendamment du nombre de sorties en passthrough (sans transcodage). Avec le transcodage, chaque profil d’encodage unique ajoute de la charge CPU, mais la duplication du même encodage vers plusieurs sorties reste zéro-copie.
Distribution multi-serveurs
Pour une distribution à très grande échelle (plus de 100 destinations ou portée mondiale), utilisez une architecture à niveaux :
Encodeur source → Passerelle principale (Vajra Cast)
├── SRT → Passerelle régionale (US Est)
│ ├── RTMP → YouTube
│ ├── RTMP → Twitch
│ └── HLS → Ingestion CDN
├── SRT → Passerelle régionale (Europe)
│ ├── RTMP → YouTube EU
│ └── SRT → Partenaire broadcast
└── SRT → Passerelle régionale (Asie)
└── RTMP → Plateformes régionales
Le SRT entre passerelles fournit un transport fiable et chiffré. Chaque passerelle régionale gère la distribution “dernier kilomètre” vers les plateformes locales en utilisant le protocole approprié.
Pas à pas : configurer un flux vers 4 plateformes
Voici un guide concret pour diffuser simultanément sur YouTube, Twitch, Facebook et votre propre site web.
1. Configurez l’ingestion :
Créez un SRT listener sur le port 9000 avec une latence de 200 ms et un chiffrement AES-256.
2. Rassemblez les identifiants des plateformes :
- YouTube : clé de flux depuis YouTube Studio
- Twitch : clé de flux depuis le Tableau de bord Créateur
- Facebook : générez une clé de flux persistante dans Live Producer
- Votre site web : notez l’URL de l’endpoint HLS de Vajra Cast
3. Créez quatre sorties :
- Sortie 1 : RTMP vers
rtmp://a.rtmp.youtube.com/live2/{clé} - Sortie 2 : RTMP vers
rtmp://live.twitch.tv/app/{clé} - Sortie 3 : RTMP vers
rtmps://live-api-s.facebook.com:443/rtmp/{clé} - Sortie 4 : HLS avec des segments de 4 secondes
4. Configurez l’encodage (si la source ne correspond pas aux exigences des plateformes) :
Réglez l’encodeur source sur H.264 High Profile, 1080p30, 6 000 Kbps, AAC 128 Kbps stéréo, intervalle d’images clés de 2 secondes. Cette configuration est compatible avec les quatre plateformes en mode passthrough.
5. Démarrez l’ingestion depuis votre encodeur.
6. Activez les quatre sorties. Elles commencent à diffuser simultanément.
7. Surveillez chaque sortie indépendamment dans le tableau de bord Vajra Cast.
Utilisation CPU totale pour 4 sorties en passthrough : pratiquement identique à celle d’une seule sortie.
Conclusion
Le streaming multi-destinations est un prérequis pour toute production souhaitant maximiser la portée de son audience. La clé est de le faire efficacement : ingérer une fois, distribuer à volonté, et utiliser le routage zéro-copie pour maintenir l’utilisation des ressources stable quel que soit le nombre de plateformes desservies.
Configurez votre encodeur source pour le plus petit dénominateur commun entre toutes les plateformes (images clés de 2 secondes, 6 000 Kbps, H.264 High Profile), et laissez la passerelle gérer la livraison par plateforme. Surveillez chaque sortie indépendamment, car les pannes de plateforme sont des événements indépendants.
Pour la configuration de la passerelle, consultez le guide de passerelle SRT. Pour protéger votre flux source, consultez les bonnes pratiques de basculement vidéo. Pour votre sortie lecteur web, consultez le guide HLS streaming adaptatif.