Diffuser du contenu YouTube en direct via RTMPS

Ce document explique comment utiliser RTMPS pour diffuser des données en direct sur YouTube à partir d'un encodeur. RTMPS est un flux vidéo RTMP (Realtime Messaging Protocol) standard qui est acheminé via un tunnel via une connexion SSL. Ce document est destiné aux fournisseurs d'encodeurs qui souhaitent ajouter la prise en charge de RTMPS aux encodeurs déjà compatibles avec RTMP.

RTMPS est un bon choix pour la plupart des contenus utilisateur ordinaires, en particulier s'il nécessite une faible latence. Consultez Comparaison des protocoles d'ingestion pour obtenir un aperçu des différents protocoles d'ingestion acceptés par la diffusion en direct YouTube.

Conditions requises

Pour envoyer RTMPS à YouTube En direct, vous devez remplir certaines conditions:

  • Chaque partie de l'URL de connexion (<protocol>://<server>/<path>) doit être correcte :
    • Le protocole doit être rtmps.
    • Le serveur doit être un point de terminaison d'ingestion RTMPS YouTube valide.
    • Le chemin d'accès doit correspondre à un nom d'application RTMP YouTube En direct valide.
  • La connexion doit être établie vers le port 443 du serveur d'ingestion.
  • Le flux multimédia doit être envoyé avec RTMPS (en utilisant RTMP via une connexion SSL).

Obtenir l'URL de connexion

Si votre encodeur utilise déjà l'API YouTube Live, le processus d'obtention d'une URL d'ingestion RTMPS est semblable à celui d'une URL RTMP. Envoyez une requête d'insertion LiveStreams (POST) pour créer un flux d'ingestion. Dans la réponse, le champ cdn.ingestionInfo.rtmpsIngestionAddress spécifie l'URL RTMPS. Si vous proposez la double ingestion, l'adresse de secours est cdn.ingestionInfo.rtmpsBackupIngestionAddress.

Créer la connexion

Utilisez la bibliothèque de sockets de votre choix pour créer une connexion SSL/TLS sur le port 443 sur le serveur spécifié par l'URL d'ingestion. Étant donné que TLS ne fonctionne qu'avec la couche de transport, le nom d'hôte du serveur n'est pas strictement requis pour initier la connexion. Toutefois, il est requis pour l'authentification auprès de nos serveurs. Veillez donc à ajouter l'extension SNI (Server Name Indication) à votre handshake SSL et à définir le nom du serveur sur le nom d'hôte du serveur auquel vous vous connectez.

Une fois la connexion SSL établie, utilisez-la pour votre bibliothèque cliente RTMP. Une connexion SSL initialisée utilise la même API qu'une connexion TCP standard. Par conséquent, la bibliothèque RTMP doit pouvoir travailler de manière identique sur les deux.

Dépannage

Erreurs SSL

Si vous essayez de créer une connexion SSL, mais que vous obtenez un certificat non valide, vous vous connectez probablement à un serveur YouTube compatible avec RTMP. Assurez-vous que le nom de serveur que vous utilisez contient "rtmps" (et non pas "s").

Si l'URL semble correcte, mais que vous obtenez toujours une erreur SSL, il est possible que vous vous connectiez au mauvais port. Vérifiez que vous vous connectez au port 443.

Si l'URL et le port sont corrects, il est possible que votre bibliothèque SSL ne traite pas le certificat correctement. Recherchez les messages de diagnostic de bas niveau sur les échecs SSL et vérifiez que vous utilisez l'extension SNI dans le cadre du handshake.

Connexion expirée

Si vous pouvez vous connecter au serveur, mais que votre bibliothèque RTMP expire avant d'obtenir une réponse correcte, il est possible que vous ayez configuré une connexion RTMP en texte clair à un serveur YouTube compatible avec RTMPS. Assurez-vous de créer une connexion SSL, et non une simple connexion TCP.