Примеры использования

Low-Latency & Real-Time Streaming: SRT vs WHIP

Low-Latency & Real-Time Streaming: SRT vs WHIP.

Последнее время мы стали получать от некоторых наших клиентов вопросы по поводу WHIP/WHEP-стриминга. После изучения темы мы решили добавить поддержку такого стриминга в наши продукты.
Чтобы у наших клиентов было понимание, когда использовать SRT или WHIP, мы решили написать эту статью с кратким обзором обоих вариантов.

Low-Latency и Real-Time

Давайте для начала определимся, что такое Real-Time и Low-Latency-стриминг. Это не что иное как градации Glass-to-Glass задержки. Будем использовать сокращения: RT, LL, g2g

Под RT-стримингом понимают такой стриминг, в котором задержка g2g не более 300-400 миллисекунд.

Следующим по градации идет LL-стриминг. Это такой стриминг, при котором задержка выше чем в RT, но остается в пределах 1000 миллисекунд.

Ярким представителем протокола для RT-стриминга является протокол WebRTC, который активно используется в разных системах телеконференций и работает в большинстве браузеров. Ну а ярким представителем LL-стриминга является протокол SRT, в котором можно добиться g2g задержки в пределах 400-800 миллисекунд.

Ок, а что такое WHIP?

Долгое время в WebRTC, как в стандарте, не была описана процедура начала сессии. Предполагалось, что разработчики систем на базе WebRTC, сами определяют, как 2 узла начнут общаться друг с другом. По этой причине разработчики стриминговых программ в каком-то смысле были скованы: они не могли послать WebRTC-поток на сторонний WebRTC-сервер, потому что механизм взаимодействия не был единым.

Но относительно недавно появилось простое решение этого вопроса. Кто-то сказал, а давайте будем использовать для начала взаимодействия протокол HTTP и оформим это как стандарт. Данный стандарт назвали WHIP/WHEP.

WHIP: WebRTC-HTTP Ingest Protocol (для стриминга на сервер)

WHEP: WebRTC-HTTP Egress Protocol (для стриминга с сервера)

Соответственно теперь разработчики стриминговых программ получили протокол для начала общения с WebRTC-сервером. Например в последнем релизе OBS Studio уже есть возможность делать стриминг по протоколу WHIP.
Аналогично и мы добавили данную возможность в наш энкодер SRT Streamer Pro. За счет простоты WHIP/WHEP-протокола их реализация была быстро добавлена в различные WebRTC-сервера.
Таким образом RT-стриминг на базе WebRTC стал более доступен для видеостриминговых команд.

За счет чего получается RT

Возникает вопрос за счет чего при WHIP-стриминге достигается сверхнизкая задержка по сравнению с тем же SRT-стримингом?

Ответ достаточно прост: WHIP-стриминг требует от энкодера кодировать поток в таком формате, который сразу проигрывается в браузерах зрителей. При соблюдении этого условия закодированный энкодером пакет, попадая на сервер, мгновенно перенаправляется зрителю в неизменном виде, за счет чего и получается сверхнизкая задержка.

Как вы наверное уже догадываетесь, “платой” за такую схему является скованность в выборе режимов кодирования, поскольку пакет изначально должен быть закодирован так чтобы браузеры всех пользователей могли его декодировать.

С другой стороны, протокол SRT не накладывает ограничения на форматы кодирования. Но при его использовании закодированный энкодером пакет должен пройти некую обработку, чтобы отобразить его в браузере. Как правило для дальнейшей раздачи зрителям поток преобразуется в формат HLS или DASH, иногда в WebRTC.
Ограничения WHIP

Чтобы WHIP-поток мог отображаться в браузерах клиентов, существуют ограничения на используемый формат.

  1. Разрешение до 1080
  2. Только progressive
  3. Не более двух аудиоканалов в кодеке OPUS
  4. Облегченные параметры для видеокодеков.
  5. Битрейт не более 8.5 Mbs

Пример требований можно посмотреть по ссылке.

Когда используется SRT, а когда WHIP

Из вышесказанного следует очевидный вывод: когда следует использовать SRT, а когда WHIP.

SRT: используется для передачи высококачественного сигнала между локациями и Студией для последующей обработки и подготовки финального сигнала.
WHIP: используется для стриминга финального сигнала конечным зрителям.
Где можно попробовать WHIP

В качестве энкодеров,поддерживающих WHIP-протокол, можно использовать:

  1. OBS Studio
  2. SRT Streamer Pro
  3. Gstreamer

В качестве серверной части можно использовать такие медиа-сервера, как:

  1. RustXUI
  2. Janus

Для быстрого ознакомления с WHIP/WHEP-стримингом можно воспользоваться пробным периодом сервиса Milicast.

Как начать на него стримить с помощью SRT Streamer Pro можно посмотреть в этой простой инструкции.
How-to
Made on
Tilda