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

  1. Быстрый старт
  2. How-to
  3. Потоковое вещание
    1. Варианты источников
    2. Переключение источников
    3. Публикация на Flussonic
    4. Прием мультикаста
    5. Серверные плейлисты
    6. Микширование
    7. Захват с SDI
    8. Отправка на другие серверы
    9. Распознавание DVB субтитров
    10. Наложение логотипа
  4. Транскодер
    1. Логотип
    2. Hardware (Nvidia NVENC)
    3. Hardware (Intel Quick Sync Video)
    4. Скриншоты
    5. Мозаика
  5. DRM
    1. Simple CAS
    2. Conax DRM
    3. BuyDRM (KeyOS)
    4. Widevine
    5. PallyCon
    6. EzDRM
  6. Авторизация
    1. Конструктор бэкендов
    2. Сервис сбора статистики
    3. Domain lock
    4. Middleware
    5. Secure links
    6. Ограничение сессий
    7. Мультиавторизация
    8. Бан IP адресов
    9. DVR
    10. Aliaser
  7. API
    1. HTTP API
    2. Events API
    3. MySQL API
    4. SQL API для кластеров
    5. SNMP
  8. Кластер
    1. Ретрансляция
    2. Кластерный захват
    3. Балансировщик нагрузки
    4. Пиринг
    5. Организация CDN
  9. VOD
    1. Кэш
    2. Облако
    3. Транскодирование файлов
    4. Мультибитрейтный VOD из файлов
  10. DVR
    1. Настройка
    2. Timeshift
    3. Catchup
    4. Проигрывание
    5. Экспорт в MP4
    6. Доступ по протоколам
    7. Timelapse
    8. API
    9. Кластеризация DVR
    10. Репликация
    11. Облако
  11. Воспроизведение
    1. HLS
    2. embed.html
    3. HTML5 с низкой задержкой
    4. Плеер HTML5 с низкой задержкой
    5. MPEG-TS
    6. RTMP
    7. DASH
    8. HDS
    9. RTSP
    10. Multicast
    11. Multicast с постоянным битрейтом
    12. WebRTC
    13. H.265
  12. Администрирование
    1. Установка
    2. Обновление
    3. Конфигурация
    4. Мониторинг
    5. Производительность
    6. Лицензия
    7. LUA скрипты
    8. Безопасность
    9. Let's Encrypt
    10. Миграция
  13. IPTV
    1. Захват спутникового видео
    2. Транскодирование
    3. Middleware в IPTV OTT
    4. Экспорт EPG со спутника
    5. Группы каналов
    6. Реклама

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

О WebRTC Anchor Anchor x2

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 Anchor Anchor x2

Процесс установления соединения для публикации видео и аудио потока во 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.