Skip to content

Настройка кластера для ретрансляции потоков в реальном времени

Содержание

Протоколы M4F и M4S

M4F и M4S — внутренние протоколы Flussonic, которые мы рекомендуем использовать всегда для передачи данных между нашими серверами. Рассмотрим подробнее, для каких целей они используются.

M4F является сегментным протоколом, но при этом способен отдавать сегменты видео сразу же, как только они появятся на источнике (что выгодно отличает его от, например, протокола HLS).

Note

В pull-протоколах (таких как HLS, HDS, MPEG-DASH) приемник периодически подключается к источнику, проверяет наличие последних сегментов и получает их, если они новые, а затем закрывает соединение и отключается от источника. Приемник повторяет всю эту процедуру, чтобы получать информацию о новых сегментах, из-за чего вы можете столкнуться с задержкой при использовании pull-протоколов.

В push-протоколах (M4F, RTSP) приемник открывает соединение с источником и поддерживает его активным постоянно. Источник будет отправлять все новые сегменты приемнику, используя это постоянное соединение. Разница в том, что при использовании push-протоколов вы получаете новые сегменты мгновенно.

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

M4F поддерживает работу с любым существующим кодеком, поэтому он подходит для большинства задач. Однако, как упомянуто выше, M4F — сегментный протокол, и из-за этой особенности при его использовании возникает задержка (накопление 3 сегментов видео на источнике перед началом проигрывания).

Существуют определенные ситуации, в которых данная задержка нежелательна (например, если речь идет о передаче видео с IP-камеры или о трансляции спортивного мероприятия). Для таких ситуаций подходит M4S — протокол передачи данных в реальном времени. Он, в отличие от M4F, передает видео покадрово, и задержка между событием в реальном времени и трансляцией практически отсутствует.

Архив DVR (Digital Video Recording)

Flussonic Media Server имеет широкие возможности для записи потоков в архив и последующей работы с ними, подробнее здесь.

Важно понимать, что доступ к архиву через M4S не имеет смысла. На это есть несколько причин:

  1. В случае с просмотром архива такая вещь как задержка фактически отсутствует и не играет никакой роли для пользователя.
  2. При покадровом доступе скорость передачи кадров от источника к приемнику определяется источником, в то время как при сегментном, уже приемник регулирует скорость скачивания сегментов. Скачивание сегментов с источника эффективнее с точки зрения практики (нагрузки на сервер, расхода трафика), чем передача кадра за кадром на приемник. По этой причине это более современный и правильный подход.

Доступ к архиву (DVR) через M4S

Что же делать в ситуации, когда необходим M4S, но при этом также нужен доступ к архиву?

При использовании внутренних протоколов в Flussonic Media Server реализован механизм сигнализации, благодаря чему несколько серверов Flussonic (Кластер) идентифицируют друг друга. При добавлении M4S-источника Flussonic автоматически проверит наличие архива, и, при необходимости, добавит источник для архива, к которому обратится по M4F.

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

Пример конфигурации

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

С M4F возникает задержка видео от источника до проигрывателя при живом вещании в районе 20-30 секунд (аналогично MPEG-DASH, HLS) из-за сегментности. Это приемлемо для телевидения, но не подходит для IP-камер. С M4S задержка от источника проигрывателю составляет в среднем до 1-2 секунд, поэтому он хорошо подходит для вещания с камеры. Однако раньше он не поддерживал доступ к архивам, но теперь это не проблема.

На источнике:

http 8888;
cluster_key 123;
stream main {
  url fake://fake;
  dvr /storage;
}

На приемнике:

http 9999;
cluster_key 123;
source m4s://FLUSSONIC-IP:8888;