Описание

В сборке 5.2.1816 добавлена поддержка протокола WebRTC-HTTP ingestion protocol (WHIP). Этот протокол предполагает использование стандартизированного обмена SDP для установки WebRTC соединения через HTTP POST запрос

В настоящее время WHIP поддерживается OBS начиная с версии 30, только на операционной системе Windows. Кроме обмена SDP, публикация потока по WHIP не отличается от публикации из браузера по WebRTC.

Поддерживаемые кодеки

Видео:

Аудио:

Схема работы

1. Публикующий клиент (OBS) посылает HTTP POST запрос /rest-api/stream/publish/streamName  с SDP offer

2. Публикующий клиент получает 202 Accepted с SDP answer

3. Публикующий клиент устанавливает WebRTC соединение и публикует поток

4. Зритель устанавливает Websocket соединение и отправляет команду playStream 

5. Зритель устанавливает WebRTC соединение и получает опубликованный поток

Тестирование

1. Для тестирования используются:

2. В настройках OBS на вкладке Stream выбирается сервис WHIP, в поле сервер вводится URL HTTP POST запроса, включая имя публикуемого потока

3. Поток публикуется в OBS

4. В браузере Chrome открывается пример Player c тестируемого сервера, в примере необходимо указать имя потока whipStream и нажать Play

Аутентификация при помощи заголовка Authorization: Bearer

В сборке 5.2.1964 добавлена поддержка аутентификации при помощи заголовка Authorization: Bearer 

В этом случае публикующий клиент (OBS) должен отправлять заголовок с указанным токеном с каждый запросом при публикации данного потока по протоколу WHIP. В качестве токена может выступать любое сочетание алфавитно-цифровых символов, например, имя потока. На стороне сервера при этом проверяется сочетание имени потока и значения токена. Если значение токена отличается от полученного при запросе /rest-api/stream/publish , сервер вернет 409 Permission denied 

Известные проблемы

1. OBS не поддерживает публикацию WebRTC по TCP

Симптомы: при активной настройке сервера ice_tcp_transport=true поток не публикуется из OBS

Решение: переключиться на UDP на стороне сервера

ice_tcp_transport=false