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

Contents

Рассылка мультикаста

При работе с IPTV часто приходится иметь дело с видео, передающимся мультикастом. В подавляющем большинстве случаев, в мультикасте передается MPEG-TS контейнер (по 7 188-байтных пакетов в одном UDP пакете). Реже в сеть передается RTP протокол, внутри которого идет тот же MPEG-TS. RTP нужен для того, чтобы можно было отслеживать потери. В RTP пакете есть 16-битный счетчик, использующийся для отслеживания порядкового номера.

Краткие основы мультикаста

Мультикаст — это UDP пакеты, передающиеся от одного источника группе подписчиков. Адрес, по которому посылаются такие пакеты, обычно находится в диапазоне от 224.0.0.0 до 239.255.255.255, однако 224.0.0.0/8 не рекомендуется из-за большого количества специализированных адресов.

В правильно настроенной сети мультикаст-трафик идет до ближайшего роутера, а роутер уже сам выбирает, какому клиенту какой трафик послать на основании пожеланий клиентов. Пожелания передаются по протоколу IGMP, по которому передаются сообщения о включении в группу рассылки какого-то адреса или исключения из группы.

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

Настройка Flussonic

Для настройки мультикаст-рассылки достаточно указать опцию push в стриме:

stream ort {
  url hls://provider.iptv/ort/index.m3u8;
  push udp://239.0.0.1:1234;
}

Создать такой поток можно и в веб-интерфейсе, указав ему адрес источника и добавив URL для рассылки мультикаста udp://239.0.0.1:1234

Можно выбрать дорожки на отправку:

stream ort {
 url hls://provider.iptv/ort/index.m3u8;
 push udp://239.0.0.1:1234?tracks=v2a4;
}

Где:

  • v2 — это вторая видеодорожка;
  • a4 — это четвёртая аудиодорожка.

Настройка сервера

После того, как вы настроили мультикаст-вещание потока, с большой вероятностью ничего не заработает, потому что часто из-за настроек сервера мультикаст-трафик пойдет в первый интерфейс, который как правило смотрит в интернет. Таким образом, необходимо, чтобы Flussonic начал отправлять трафик в тот интерфейс, который смотрит в локальную сеть.

route add -net 239.0.0.0/8 dev eth2

Где eth2 — это название интерфейса, к которому подключена локальная сеть. После такого прописывания роутинга мультикаст с Flussonic польется в нужный интерфейс и его можно будет увидеть на роутере, а следовательно и на клиенте.

Обратная ситуация с захватом мультикаста описана в статье: Захват мультикаста