Skip to content

Прием мультикаста

Flussonic Media Server умеет захватывать видео, передаваемое мультикастом по протоколам UDP MPEG-TS и UDP RTP.

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

В самом простом варианте надо создать поток, дать ему какое-то имя и добавить источник вида udp://239.0.0.1:1234

stream example {
    input udp://239.0.0.1:1234;
}

MPEG-TS ingest

Содержание:

Выбор интерфейсов

Как правило сервер, захватывающий мультикаст, имеет больше одного интерфейса: одним интерфейсом он смотрит в локальную сеть, где ходит видео, другим интерфейсом в интернет, куда он это видео отдает по HLS или HTTP MPEGTS.

Внешний интерфейс часто идет первым и Flussonic Media Server по умолчанию будет слать IGMP запросы туда, и не будет получать видео.

Чтобы явно указать через какой интерфейс надо получать мультикаст, можно указать IP адрес текущего сервера на этом интерфейсе или название интерфейса. Например, если на интерфейсе eth2 сервер имеет IP адрес 10.100.200.3, то конфигурация будет иметь вид:

stream example {
  input udp://239.0.0.1:1234/10.100.200.3;
}

Используя название интерфейса конфигурации будет иметь вид:

stream example {
  input udp://eth2@239.0.0.1:1234;
}

Захват MPTS

Чтобы захватить мультипрограммный транспортный поток (MPTS), используйте вместо udp:// специальные опции с указанием протокола. Подробнее об MPTS

Тюнинг ОС

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

Подробная информация об этом есть в статье про настройку производительности.

Важно также отметить, что для HD каналов рекомендуется размер буферов порядка 16 мегабайт.

Проблемы с захватом

С мультикастом часто бывают разнообразнейшие проблемы. Если у вас есть проблемы с качеством захватываемого мультикаста, можете попробовать проверить, в чём именно проблема.

Во-первых, вам надо полностью убрать все настройки firewall. iptables -F. Сначала надо сделать чтобы работало, потом всё остальное. В некоторых дистрибутивах Linux (например, CentOS) по умолчанию идут жесткие правила для iptables.

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

Нажмите здесь, чтобы увидеть команды
sysctl -w 'net.ipv4.conf.eth0.rp_filter=0'
и
sysctl -w 'net.ipv4.conf.all.rp_filter=0'
При необходимости измените `eth0` на нужный интерфейс.

Далее, следует понимать, что когда вы настроите мультикаст во Flussonic Media Server и будете смотреть видео с Flussonic Media Server, на качество видео влияет множество факторов: качество сигнала, качество захвата, работа сервера и качество вашей сети.
Проблемы, которые вы увидите в такой конфигурации, будут говорить только о том, что у вас проблемы, но никак не о работе Flussonic Media Server. Особенно это проявляется при отладке работы HD каналов: смотреть без затыков 10 мегабит видео могут считаные проценты пользователей.

Например, если вы запустите:

/opt/flussonic/contrib/multicast_capture.erl udp://239.0.0.1:1234/10.100.200.3 output.ts

запишете секунд 30 видео, скопируете себе на компьютер и посмотрите видео в VLC, то вы получите неискаженную картину того, как мультикаст приходит на сервер. Этот скрипт не распаковывает MPEG-TS, а пишет сырой мультикаст на диск.

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

curl -o output.ts http://127.0.0.1:80/example/mpegts

Таким образом, вы получите видеопоток, который был захвачен Flussonic Media Server, распакован и упакован обратно в MPEG-TS. Этот файл надо скачать себе на компьютер и посмотреть локально, чтобы убедиться в том, что ваше качество канала не влияет на эксперименты.

Если на этом этапе видео тоже хорошее, а при просмотре с Flussonic Media Server дергается, проблема скорее всего в том, что канала не хватает на передачу видео с Flussonic Media Server к вам.

Проблемы с коммутаторами

Иногда проблемы возникают с настройками коммутаторов. Например, у одного клиента возникла проблема с ограничением на количество принимаемых каналов. Оказалось, что стоит лимит на количество подписок на одном порту. Это можно было выяснить командой:

#debug igmp snooping all

При этом появляются сообщения:

%Jun 25 15:12:18 2015 SrcIP is 192.168.121.2, DstIP is 226.2.1.16
%Jun 25 15:12:18 2015 Groups joined have reached the limit, failed to add more groups

В данном конкретном случае получилось починить с помощью команды:

#ip igmp snooping vlan XX limit group <1-65535>

Проблемы с головными станциями

В определенных случаях бывают проблемы с номерами групп на головных станциях.

Рекомендуется использовать группы от 239.1.1.1 и выше — всё, что ниже, иногда может не работать.