Live-YouTube-Inhalte über RTMPS bereitstellen

In diesem Dokument wird erläutert, wie du mit RTMPS Livestreaming-Daten von einem Encoder auf YouTube streamen kannst. 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 Unterstützung für RTMPS hinzufügen möchten, wenn diese bereits RTMP unterstützen.

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

Voraussetzungen

Für das Senden von RTMPS an YouTube Live müssen einige Voraussetzungen erfüllt sein:

  • Jeder Teil der Verbindungs-URL (<protocol>://<server>/<path>) muss korrekt sein:
    • Das Protokoll muss rtmps sein.
    • Der Server muss ein gültiger YouTube-RTMPS-Ingestion-Endpunkt sein.
    • Der Pfad muss ein gültiger YouTube Live-RTMP-Anwendungsname sein.
  • Die Verbindung muss über Port 443 auf dem Ingestion-Server hergestellt werden.
  • Der Multimediastream muss mit RTMPS gesendet werden, d. h. über RTMP über eine SSL-Verbindung.

Verbindungs-URL abrufen

Wenn dein Encoder bereits die YouTube Live API verwendet, ähnelt der Vorgang zum Abrufen einer RTMPS-Ingestion-URL dem für RTMP. Sende eine „LiveStreams insert“-Anfrage (POST), um einen neuen Ingestion-Stream zu erstellen. In der Antwort gibt das cdn.ingestionInfo.rtmpsIngestionAddress Feld die RTMPS-URL an. Wenn du die Dual-Ingestion unterstützt, lautet die Backup-Adresse ist cdn.ingestionInfo.rtmpsBackupIngestionAddress.

Verbindung erstellen

Verwende deine bevorzugte Socket-Bibliothek, um eine SSL/TLS-Verbindung zu Port 443 auf dem Server herzustellen, der in der Ingestion-URL angegeben ist. Da TLS nur mit der Transportschicht funktioniert, ist der Serverhostname nicht unbedingt erforderlich, um die Verbindung zu initiieren. Er ist jedoch für die Authentifizierung bei unseren Servern erforderlich. Füge daher die SNI-Erweiterung (Server Name Indication) zu deinem SSL-Handshake hinzu und lege den Servernamen auf den Serverhostname fest, mit dem du eine Verbindung herstellst.

Sobald die SSL-Verbindung hergestellt ist, verwende sie als Verbindung für deine 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 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. Achte darauf, dass der verwendete Servername „rtmps“ enthält.

Wenn die URL korrekt aussieht, aber du trotzdem einen SSL-Fehler erhältst, stellst du möglicherweise eine Verbindung zum falschen Port her. Prüfe, ob du eine Verbindung zu Port 443 herstellst.

Wenn die URL und der Port korrekt sind, verarbeitet deine SSL-Bibliothek das Zertifikat möglicherweise nicht richtig. Suche nach Diagnosemeldungen auf niedriger Ebene zu SSL-Fehlern und prüfe noch einmal, ob du SNI im Handshake verwendest.

Zeitüberschreitung der Verbindung

Wenn du eine Verbindung zum Server herstellen kannst, aber für deine RTMP-Bibliothek eine Zeitüberschreitung auftritt, ohne dass eine sinnvolle Antwort erfolgt, hast du möglicherweise eine Klartext-RTMP-Verbindung zu einem YouTube-Server eingerichtet, der RTMPS erwartet. Achte darauf, dass du eine SSL-Verbindung und keine einfache TCP-Verbindung erstellst.