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

  1. Быстрый старт
  2. How To
  3. Потоковое вещание
    1. Публикация
    2. Прием мультикаста
    3. Варианты источников
    4. Переключение источников
    5. Плейлисты
    6. Наложение логотипа
    7. Миксер
    8. WebRTC публикация
    9. SDI
    10. Отправка на другие сервера
    11. Распознавание DVB субтитров
  4. Транскодер
    1. Логотип
    2. Hardware
    3. Скриншоты
    4. Мозаика
  5. DRM
    1. Simple CAS
    2. Conax DRM
    3. BuyDRM (KeyOS)
  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. Транскодирование файлов
  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, CBR UDP
    11. WebRTC проигрывание
    12. 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. Группы каналов

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

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

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

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

В конфигурации должен появиться следующий текст:

stream ort {
    url udp://239.0.0.1:1234;
}

Содержание:

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

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

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

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

stream ort {
    url udp://239.0.0.1:1234/10.100.200.3;
}

Захват MPTS Anchor Anchor x2

Можно захватить мультипрограммный транспортный поток (MPTS), для этого создаем потоки, даем им необходимые имена и в качестве источника указываем мультикаст-группу и ID программы.

stream 1 {
  url udp://239.0.0.1:1234 program=2001;
}

stream 2 {
  url udp://239.0.0.1:1234 program=2002;
}

stream 3 {
  url udp://239.0.0.1:1234 program=2003;
}

Тюнинг ОС Anchor Anchor x2

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

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

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

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

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

Так же отключите 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:8080/ort/mpegts

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

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

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

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

#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>

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

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

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