Документация Flussonic Media Server

Contents

Использование WebRTC для проигрывания видео с Flussonic Media Server

О WebRTC

WebRTC — это P2P протокол общения между двумя клиентами, регламентирующий передачу данных по заранее установленному соединению. Например, для связи двух браузеров по протоколу WebRTC необходимо зайти на один и тот же сайт в интернете. Также, можно использовать посредника — сигнальный сервер.

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

  • текстовыми описаниями медиапотоков в формате SDP
  • ICE Candidates как часть SDP

Сигнальный сервер — посредник, позволяет передать данные о соединении от одного клиента к другому.

О прогрывании по WebRTC с Flussonic

Flussonic Media Server использует WebRTC для проигрывания видео с сервера Flussonic (источника) на клиентском устройстве или в программе (приемник). При этом Flussonic также играет роль сигнального сервера в процессе установления соединения, через который происходит обмен данными о соединении.

Почему мы используем именно WebRTC для обмена медиа-данными между двумя клиентами? Данный механизм позволяет нам достигнуть сверхнизкой задержки.

Таким образом, обмен видео по WebRTC через Flussonic Media Server нельзя считать peer-to-peer, правильнее будет называть это публикацией видео на Flussonic Media Server по WebRTC и проигрыванием видео с Flussonic сервера по WebRTC.

На схеме ниже показан процесс обмена данными для установления соединения между Flussonic и клиентским приложением, для проигрывания видео:

WebRTC Проигрывание

Как организовать проигрывание публикуемых потоков по WebRTC

Стороны должны обменяться SDP через посредника (а это сигнальный сервер - Flussonic), после чего начать передачу данных напрямую. В случае проигрывания видео инициировать процесс и отправлять приглашение (SDP offer) нужно со стороны сервера Flussonic (источника).

Cоединение устанавливается по WebSocket, а видео передается по RTP.

На клиенте нужно исполнить код для проигрывания видео из публикуемого потока. Для создания кода используйте библиотеку Flussonic WebRTC player. Описание классов библиотеки и код примера доступны на npm.

На сервере Flussonic должен быть сконфигурирован публикуемый поток, т.е. поток с источником publish://, в этот поток клиенты публикуют видео, а нам потребуется забрать его с сервера. URL этого потока нужно использовать в коде. Поддерживаются протоколы ws и wss.

stream STREAMNAME {
  url publish://;
}

Для корректного проигрывания в Safari необходимо разрешить доступ к камере и микрофону. Изменить это не получится - такие правила у iOS.