Diffuser des contenus 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 transmis via une connexion SSL. Ce document est destiné aux fournisseurs d'encodeurs qui souhaitent ajouter la prise en charge de RTMPS aux encodeurs qui sont déjà compatibles avec RTMP.

RTMPS est un bon choix pour la plupart des contenus utilisateur ordinaires, en particulier s'ils nécessitent une faible latence. Consultez le tableau comparatif des protocoles d'ingestion pour obtenir une vue d'ensemble des différents protocoles d'ingestion compatibles avec YouTube En direct.

Conditions requises

L'envoi de RTMPS à YouTube En direct nécessite quelques conditions préalables :

  • 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 être un nom d'application RTMP YouTube En direct valide.
  • La connexion doit être établie sur le port 443 du serveur d'ingestion.
  • Le flux multimédia doit être envoyé avec RTMPS, c'est-à-dire à l'aide de RTMP sur 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 de RTMP. Envoyez une requête d'insertion LiveStreams (POST) pour créer un nouveau flux d'ingestion. Dans la réponse, le cdn.ingestionInfo.rtmpsIngestionAddress champ spécifie l'URL RTMPS. Si vous êtes compatible avec l'ingestion double, l'adresse de sauvegarde est cdn.ingestionInfo.rtmpsBackupIngestionAddress.

Créer la connexion

Utilisez la bibliothèque de sockets de votre choix pour créer une connexion SSL/TLS au port 443 sur le serveur spécifié par l'URL d'ingestion. Étant donné que TLS ne fonctionne qu'avec la couche transport, le nom d'hôte du serveur n'est pas strictement nécessaire pour lancer la connexion. Toutefois, il est requis pour l'authentification auprès de nos serveurs. Assurez-vous donc d'ajouter l'extension SNI (Server Name Indication) à votre handshake SSL et de 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 comme connexion pour votre bibliothèque cliente RTMP. Une connexion SSL initialisée possède la même API qu'une connexion TCP standard. La bibliothèque RTMP devrait donc pouvoir fonctionner de manière identique avec les deux.

Dépannage

Erreurs SSL

Si vous tentez de créer une connexion SSL, mais que vous obtenez un certificat non valide, vous vous connectez probablement à un serveur YouTube qui attend RTMP. Assurez-vous que le nom du serveur que vous utilisez contient "rtmps" (notez le "s").

Si l'URL semble correcte, mais que vous obtenez toujours une erreur SSL, vous vous connectez peut-être 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 gère pas correctement le certificat. Recherchez les messages de diagnostic de bas niveau concernant les échecs SSL et vérifiez que vous utilisez SNI dans le handshake.

Connexion expirée

Si vous pouvez vous connecter au serveur, mais que votre bibliothèque RTMP expire sans obtenir de réponse pertinente, vous avez peut-être configuré une connexion RTMP en texte clair à un serveur YouTube qui attend RTMPS. Assurez-vous de créer une connexion SSL et non une connexion TCP simple.