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

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

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

Требования

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

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

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

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

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

Используйте предпочитаемую вами библиотеку сокетов для создания SSL/TLS-подключения к порту 443 на сервере, указанном в URL-адресе для приема. Поскольку TLS работает только на транспортном уровне, имя хоста сервера не является обязательным для инициирования соединения, однако оно требуется для аутентификации на наших серверах. Поэтому обязательно добавьте расширение SNI (Server Name Indication) к вашему 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-соединение.