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
rtmpssein. - Der Server muss ein gültiger YouTube-RTMPS-Ingestion-Endpunkt sein.
- Der Pfad muss ein gültiger YouTube Live-RTMP-Anwendungsname sein.
- Das Protokoll muss
- 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.