Live-YouTube-Inhalte über RTMPS bereitstellen

In diesem Dokument wird beschrieben, wie du mit RTMPS Live-Daten von einem Encoder auf YouTube streamst. RTMPS ist ein regulärer RTMP-Videostream (RealTime Messaging Protocol), der über eine SSL-Verbindung getunnelt wird. Dieses Dokument richtet sich an Encoder-Anbieter, die ihren Encodern, die bereits RTMP unterstützen, RTMPS hinzufügen möchten.

RTMPS ist eine gute Wahl für die meisten normalen Nutzerinhalte, insbesondere wenn eine geringe Latenz erforderlich ist. In der Vergleichstabelle der Aufnahmeprotokolle findest du eine Übersicht über die verschiedenen Aufnahmeprotokolle, die von YouTube-Livestreaming unterstützt werden.

Voraussetzungen

Für das Senden von RTMPS an YouTube Live gelten einige Voraussetzungen:

  • Jeder Teil der Verbindungs-URL (<protocol>://<server>/<path>) muss korrekt sein:
    • Das Protokoll muss rtmps sein.
    • Der Server muss ein gültiger YouTube-RTMPS-Aufnahmeendpunkt sein.
    • Der Pfad muss ein gültiger YouTube Live-RTMP-Anwendungsname sein.
  • Die Verbindung muss über Port 443 zum Aufnahmeserver hergestellt werden.
  • Der Multimedia-Stream muss mit RTMPS gesendet werden, also mit RTMP über eine SSL-Verbindung.

Verbindungs-URL abrufen

Wenn dein Encoder bereits die YouTube Live API verwendet, ist das Verfahren zum Abrufen einer RTMPS-Aufnahme-URL ähnlich dem für RTMP. Senden Sie eine LiveStreams.insert (POST)-Anfrage, um einen neuen Ingest-Stream zu erstellen. In der Antwort gibt das Feld cdn.ingestionInfo.rtmpsIngestionAddress die RTMPS-URL an. Wenn Sie die doppelte Erfassung unterstützen, ist die Backup-Adresse cdn.ingestionInfo.rtmpsBackupIngestionAddress.

Verbindung erstellen

Verwenden Sie Ihre bevorzugte Socket-Bibliothek, um eine SSL/TLS-Verbindung zu Port 443 auf dem Server herzustellen, der in der Ingest-URL angegeben ist. Da TLS nur mit der Transportschicht funktioniert, ist der Serverhostname nicht unbedingt erforderlich, um die Verbindung herzustellen. Er ist jedoch für die Authentifizierung bei unseren Servern erforderlich. Fügen Sie daher die SNI-Erweiterung (Server Name Indication) zu Ihrem SSL-Handshake hinzu und legen Sie den Servernamen auf den Serverhostnamen fest, mit dem Sie eine Verbindung herstellen.

Sobald die SSL-Verbindung hergestellt ist, verwenden Sie sie als Verbindung für Ihre RTMP-Clientbibliothek. Eine initialisierte SSL-Verbindung hat dieselbe API wie eine Standard-TCP-Verbindung. Die RTMP-Bibliothek sollte also mit beiden identisch funktionieren.

Fehlerbehebung

SSL-Fehler

Wenn Sie versuchen, eine SSL-Verbindung herzustellen, aber ein ungültiges Zertifikat erhalten, stellen Sie wahrscheinlich eine Verbindung zu einem YouTube-Server her, der RTMP erwartet. Achte darauf, dass der von dir verwendete Servername „rtmps“ enthält.

Wenn die URL korrekt erscheint, du aber dennoch eine SSL-Fehlermeldung erhältst, stellst du möglicherweise eine Verbindung zum falschen Port her. Prüfen Sie, ob Sie eine Verbindung zu Port 443 herstellen.

Wenn die URL und der Port korrekt sind, wird das Zertifikat möglicherweise nicht richtig von Ihrer SSL-Bibliothek verarbeitet. Suchen Sie nach untergeordneten Diagnosemeldungen zu SSL-Fehlern und prüfen Sie noch einmal, ob Sie SNI im Handshake verwenden.

Zeitüberschreitung der Verbindung

Wenn Sie eine Verbindung zum Server herstellen können, Ihre RTMP-Bibliothek jedoch ohne sinnvolle Antwort ein Zeitlimit überschreitet, haben Sie möglicherweise eine Cleartext-RTMP-Verbindung zu einem YouTube-Server eingerichtet, der RTMPS erwartet. Achten Sie darauf, dass Sie eine SSL-Verbindung und keine reine TCP-Verbindung herstellen.