Przesyłanie treści na żywo w YouTube za pomocą protokołu RTMPS

Z tego dokumentu dowiesz się, jak używać RTMPS do przesyłania strumieniowego danych na żywo w YouTube z kodera. RTMPS to zwykły strumień wideo RTMP (RealTime Messaging Protocol) tunelowany przez połączenie SSL. Ten dokument jest przeznaczony dla dostawców koderów, którzy chcą dodać obsługę protokołu RTMPS do koderów, które już obsługują RTMP.

RTMPS to dobry wybór w przypadku większości zwykłych treści użytkowników, zwłaszcza jeśli wymagają one niskiego poziomu opóźnień. Zapoznaj się z porównaniem protokołów przetwarzania, aby poznać różne protokoły przetwarzania obsługiwane przez transmisje na żywo w YouTube.

Wymagania

Przesyłanie RTMPS do YouTube na żywo wymaga spełnienia kilku warunków wstępnych:

  • Każda część adresu URL połączenia (<protocol>://<server>/<path>) musi być prawidłowa:
    • Protokół musi być rtmps.
    • Serwer musi być prawidłowym punktem odbioru RTMPS w YouTube.
    • Ścieżka musi być prawidłową nazwą aplikacji RTMP YouTube Live.
  • Połączenie musi być nawiązane z portem 443 na serwerze przesyłania.
  • Strumień multimediów musi być przesyłany za pomocą protokołu RTMPS, czyli RTMP przez połączenie SSL.

Pobieranie adresu URL połączenia

Jeśli Twój koder korzysta już z interfejsu YouTube Live API, proces uzyskiwania adresu URL przetwarzania RTMPS jest podobny do procesu uzyskiwania adresu URL RTMP. Wyślij żądanie LiveStreams insert (POST), aby utworzyć nowy strumień pozyskiwania. W odpowiedzi pole cdn.ingestionInfo.rtmpsIngestionAddress określa adres URL RTMPS. Jeśli obsługujesz podwójne przesyłanie danych, adres kopii zapasowej to cdn.ingestionInfo.rtmpsBackupIngestionAddress.

Tworzenie połączenia

Użyj preferowanej biblioteki gniazd, aby utworzyć połączenie SSL/TLS z portem 443 na serwerze określonym przez adres URL przesyłania. TLS działa tylko w warstwie transportowej, więc nazwa hosta serwera nie jest ściśle wymagana do zainicjowania połączenia, ale jest niezbędna do uwierzytelniania na naszych serwerach. Dlatego dodaj rozszerzenie SNI (Server Name Indication) do uzgadniania połączenia SSL i ustaw nazwę serwera na nazwę hosta serwera, z którym się łączysz.

Po nawiązaniu połączenia SSL użyj go jako połączenia dla biblioteki klienta RTMP. Zainicjowane połączenie SSL ma taki sam interfejs API jak standardowe połączenie TCP, więc biblioteka RTMP powinna działać z nimi identycznie.

Rozwiązywanie problemów

Błędy SSL

Jeśli podczas próby utworzenia połączenia SSL otrzymasz nieprawidłowy certyfikat, prawdopodobnie łączysz się z serwerem YouTube, który oczekuje protokołu RTMP. Upewnij się, że nazwa serwera zawiera „rtmps” – zwróć uwagę na literę „s”.

Jeśli adres URL wygląda na poprawny, ale nadal pojawia się błąd SSL, być może łączysz się z niewłaściwym portem. Sprawdź, czy łączysz się z portem 443.

Jeśli adres URL i port są prawidłowe, biblioteka SSL może nie obsługiwać certyfikatu prawidłowo. Poszukaj komunikatów diagnostycznych niskiego poziomu dotyczących błędów SSL i sprawdź, czy w procesie uzgadniania używasz SNI.

Osiągnięto limit czasu połączenia.

Jeśli możesz połączyć się z serwerem, ale biblioteka RTMP przekracza limit czasu bez uzyskania sensownej odpowiedzi, być może masz skonfigurowane połączenie RTMP w postaci zwykłego tekstu z serwerem YouTube, który oczekuje RTMPS. Upewnij się, że tworzysz połączenie SSL, a nie zwykłe połączenie TCP.