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

Contents

Использование WebRTC для публикации видео на Flussonic Media Server

О WebRTC

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

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

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

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

О публикации по WebRTC на Flussonic

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

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

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

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

WebRTC

Как организовать публикацию по WebRTC

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

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

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

Важно! В некоторых браузерах публикация по WebRTC видео и аудио потоков возможна только по защищенному соединению. То есть браузер может запретить доступ к камере и микрофону со страницы, которая располагается не по HTTPS, а по HTTP адресу. Но на локальных адресах (localhost, 127.0.0.1) это допускается.

Как публиковать видео на сервер Flussonic через WebRTC

На сервере Flussonic добавьте в конфигурацию публикуемый поток, т.е. поток с источником publish://.

stream STREAMNAME {
  url publish://;
}

Затем на клиенте нужно исполнить код для публикации видео в созданный поток. Для создания кода используйте библиотеку Flussonic WebRTC player. URL созданного потока нужно использовать в этом коде (поддерживаются протоколы ws и wss.).

Описание классов библиотеки и код примера доступны на npm.