Доставка живого контента YouTube через RTMPS

В этом документе объясняется, как использовать RTMPS для потоковой передачи данных на YouTube в реальном времени с кодировщика. RTMPS — это обычный видеопоток RTMP (протокол обмена сообщениями в реальном времени), туннелируемый через SSL-соединение. Этот документ предназначен для поставщиков кодировщиков, которые хотят добавить поддержку RTMPS в кодировщики, которые уже поддерживают RTMP.

RTMPS — хороший выбор для большинства обычных пользовательских материалов, особенно если требуется низкая задержка. См. Сравнение протоколов приема для обзора различных протоколов приема, которые поддерживает YouTube Live Streaming.

Требования

Для отправки RTMPS на YouTube Live необходимо выполнить несколько предварительных условий:

  • Каждая часть URL-адреса подключения ( <protocol>://<server>/<path> ) должна быть правильной:
    • Протокол должен быть rtmps .
    • Сервер должен быть действительной конечной точкой приема YouTube RTMPS.
    • Путь должен быть допустимым именем приложения YouTube Live RTMP.
  • Подключение должно быть выполнено к порту 443 на принимающем сервере.
  • Мультимедийный поток должен быть отправлен с RTMPS; то есть с использованием RTMP через соединение SSL.

Получение URL-адреса подключения

Если ваш кодировщик уже использует API YouTube Live, процесс получения URL-адреса приема RTMPS аналогичен процессу для RTMP. Отправьте запрос на вставку LiveStreams (POST) , чтобы создать новый поток загрузки. В ответе поле cdn.ingestionInfo.rtmpsIngestionAddress указывает URL-адрес RTMPS. Если вы поддерживаете двойной прием, резервный адрес — cdn.ingestionInfo.rtmpsBackupIngestionAddress .

Создание соединения

Используйте предпочтительную библиотеку сокетов, чтобы создать подключение SSL/TLS к порту 443 на сервере, указанном в URL-адресе загрузки. Поскольку TLS работает только с транспортным уровнем, для инициирования соединения строго не требуется имя хоста сервера; однако это необходимо для аутентификации на наших серверах. Поэтому убедитесь, что вы добавили расширение SNI (индикация имени сервера) к своему SSL-рукопожатию и установили имя сервера на имя хоста сервера, к которому вы подключаетесь.

Как только соединение SSL установлено, используйте его в качестве соединения для вашей клиентской библиотеки RTMP. Инициализированное соединение SSL имеет тот же API, что и стандартное соединение TCP, поэтому библиотека RTMP должна иметь возможность одинаково работать с ними обоими.

Поиск неисправностей

SSL-ошибки

Если вы пытаетесь создать SSL-соединение, но получаете недействительный сертификат, возможно, вы подключаетесь к серверу YouTube, который ожидает RTMP. Убедитесь, что имя сервера, которое вы используете, содержит «rtmps» — обратите внимание на «s».

Если URL-адрес выглядит правильно, но вы все еще получаете ошибку SSL, возможно, вы подключаетесь к неправильному порту. Подтвердите, что вы подключаетесь к порту 443.

Если URL-адрес и порт указаны правильно, возможно, ваша библиотека SSL неправильно обрабатывает сертификат. Ищите низкоуровневые диагностические сообщения об ошибках SSL и дважды проверяйте, используете ли вы SNI в рукопожатии.

Время соединения истекло

Если вы можете подключиться к серверу, но ваша RTMP-библиотека истекает, не получая разумного ответа, возможно, вы настроили RTMP-подключение с открытым текстом к серверу YouTube, который ожидает RTMPS. Убедитесь, что вы создаете SSL-соединение, а не простое TCP-соединение.