Live-YouTube-Inhalte über RTMPS bereitstellen

In diesem Dokument wird erläutert, wie du mit RTMPS Livedaten von einem Encoder auf YouTube streamen kannst. RTMPS ist ein normaler RTMP-Videostream (RealTime Messaging Protocol), der über eine SSL-Verbindung getunnelt wird. Dieses Dokument richtet sich an Encoder, die RTMPS für Encoder unterstützen möchten, die RTMP bereits unterstützen.

RTMPS ist eine gute Wahl für die meisten gewöhnlichen Nutzerinhalte, insbesondere wenn eine niedrige Latenz erforderlich ist. Einen Überblick über die verschiedenen von YouTube Live Streaming unterstützten Aufnahmeprotokolle findest du im Vergleich des Aufnahmeprotokolls.

Voraussetzungen

Es müssen einige Voraussetzungen erfüllt sein, damit RTMPS an YouTube Live gesendet werden kann:

  • 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 auf Port 443 auf dem Aufnahmeserver erfolgen.
  • Der Multimedia-Stream muss mit RTMPS (d. h. mit RTMP über eine SSL-Verbindung) gesendet werden.

Verbindungs-URL abrufen

Wenn dein Encoder die YouTube Live API bereits verwendet, ist der Vorgang zum Abrufen einer RTMPS-Aufnahme-URL mit der für RTMP vergleichbar. Senden Sie eine POST-Anfrage (LiveStreams insert), um einen neuen Aufnahmestream zu erstellen. In der Antwort wird im Feld cdn.ingestionInfo.rtmpsIngestionAddress die RTMPS-URL angegeben. Wenn Sie die doppelte Aufnahme unterstützen, ist die Sicherungsadresse cdn.ingestionInfo.rtmpsBackupIngestionAddress.

Verbindung erstellen

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

Nachdem die SSL-Verbindung hergestellt wurde, können Sie sie als Verbindung für Ihre RTMP-Clientbibliothek verwenden. Eine initialisierte SSL-Verbindung hat dieselbe API wie eine Standard-TCP-Verbindung, sodass die RTMP-Bibliothek auf beiden funktionieren kann.

Fehlerbehebung

SSL-Fehler

Wenn du versuchst, eine SSL-Verbindung herzustellen, aber ein ungültiges Zertifikat erhältst, stellst du wahrscheinlich eine Verbindung zu einem YouTube-Server her, der RTMP erwartet. Achten Sie darauf, dass der von Ihnen verwendete Servername das Wort „rtmps“ enthält.

Wenn die URL korrekt aussieht, Sie aber dennoch einen SSL-Fehler erhalten, stellen Sie möglicherweise eine Verbindung zum falschen Port her. Bestätigen Sie, dass Sie eine Verbindung zu Port 443 herstellen.

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

Zeitüberschreitung der Verbindung

Wenn du eine Verbindung zum Server herstellen kannst, aber deine RTMP-Bibliothek ohne Zeitüberschreitung eine Zeitüberschreitung auslöst, hast du möglicherweise eine Klartext-RTMP-Verbindung zu einem YouTube-Server eingerichtet, der RTMPS erwartet. Achten Sie darauf, dass Sie eine SSL-Verbindung und keine einfache TCP-Verbindung erstellen.