Przesyłanie treści YouTube na żywo przez RTMPS

Ten dokument wyjaśnia, jak używać protokołu RTMPS do strumieniowego przesyłania danych na żywo w YouTube z kodera. RTMPS to zwykły strumień wideo RTMP tunelowany przez połączenie SSL. Ten dokument jest przeznaczony dla dostawców koderów, którzy chcą dodać obsługę 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 wymaga niewielkich opóźnień. Zapoznaj się z porównaniem protokołów przetwarzania, aby poznać różne protokoły przetwarzania obsługiwane przez funkcję transmisji na żywo w YouTube.

Wymagania

Wysyłanie protokołu RTMPS do YouTube na żywo wymaga kilku warunków:

  • Każda część adresu URL połączenia (<protocol>://<server>/<path>) musi być prawidłowa:
    • Musi to być protokół rtmps.
    • Serwer musi być prawidłowym punktem końcowym przetwarzania YouTube RTMPS.
    • Ścieżka musi być prawidłową nazwą aplikacji YouTube RTMP do transmisji na żywo.
  • Musisz nawiązać połączenie z portem 443 na serwerze pozyskiwania.
  • Strumień multimedialny musi być wysyłany za pomocą protokołu RTMPS, czyli przez protokół RTMP przez połączenie SSL.

Uzyskiwanie adresu URL połączenia

Jeśli Twój koder korzysta już z interfejsu YouTube Live API, proces pobierania adresu URL RTMPS wygląda podobnie jak w przypadku RTMP. Aby utworzyć nową transmisję, wyślij żądanie wstawiania transmisji na żywo (POST). W odpowiedzi pole cdn.ingestionInfo.rtmpsIngestionAddress określa adres URL RTMPS. Jeśli obsługujesz podwójne pozyskiwanie danych, adres zapasowy 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 przetwarzania. Ponieważ protokół TLS działa tylko z warstwą transportu, nazwa hosta serwera nie jest ściśle wymagana do zainicjowania połączenia. Jest ona jednak wymagana do uwierzytelniania naszych serwerów. Pamiętaj, aby dodać rozszerzenie SNI (Server Name Indication) do uzgadniania połączenia SSL i ustawić nazwę serwera na nazwę hosta serwera, z którym nawiązujesz połączenie.

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

Rozwiązywanie problemów

Błędy SSL

Jeśli próbujesz utworzyć połączenie SSL, ale otrzymujesz nieprawidłowy certyfikat, prawdopodobnie łączysz się z serwerem YouTube, który oczekuje protokołu RTMP. Sprawdź, czy nazwa używanego serwera zawiera pole „rtmp” – zwróć uwagę na „s”.

Jeśli adres URL wygląda na prawidłowy, 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ą poprawne, biblioteka SSL może nie obsługiwać poprawnie certyfikatu. Poszukaj niskopoziomowych komunikatów diagnostycznych o błędach SSL i dokładnie sprawdź, czy w uzgadnianiu połączenia używasz połączenia SNI.

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

Jeśli możesz połączyć się z serwerem, ale biblioteka RTMP przekracza limit czasu bez sensownej odpowiedzi, być może masz połączenie RTMP z wyraźnym tekstem na serwerze YouTube, które obsługuje protokół RTMPS. Upewnij się, że tworzysz połączenie SSL, a nie zwykłe połączenie TCP.