Документация на 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)
    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, 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. Группы каналов
    6. Реклама

Импорт потоков из M3U

При первичной настройке Flussonic Media Server может возникнуть необходимость завести большое количество потоков. Например, это может быть список мультикаст-групп или другие HTTP MPEG-TS / HLS / RTMP источники.

В интерфейсе такой функции нет, но Flussonic Media Server предоставляет API для импорта и несложный формат конфигурационного файла. С помощью небольшого python-скрипта можно сконвертировать m3u-плейлист в конфигурацию Flussonic Media Server и импортировать вручную, вставив текст в /etc/flussonic/flussonic.conf, или используя curl и HTTP API.

Для начала, скачаем скрипт m3u_to_flussonic.py с ресурса gist.github.com:

wget -O m3u_to_flussonic.py https://gist.githubusercontent.com/klyushkov/bf95dcf66ba99ba9a5d8e5eb71db75ae/raw/f998977e3596c11129f31470936a58145a68e180/m3u_to_flussonic.py

Затем запускаем его, используя python-2.7 (он идет в комплекте с Flussonic Media Server, дополнительно устанавливать не потребуется):

/opt/flussonic/bin/python2.7 m3u_to_flussonic.py example1.m3u

В результате вы должны получить следующий вывод:

root@flussonic:~# /opt/flussonic/bin/python2.7 m3u_to_flussonic.py example1.m3u
stream _BBC_World {
  url tshttp://example.com/stream/to/video2;
}
stream _CNN_International {
  url tshttp://example.com/stream/to/video2;
}
stream Arirang {
  url tshttp://example.com/stream/to/video3;
}
stream ORT {
  url tshttp://example.com/ort/mpegts;
}
stream ORT_HLS {
  url hls://example.com/ort/index.m3u8;
}
stream stream6 {
  url hls://example.com/streamwithoutname/video.m3u8;
}
stream RTMP_stream {
  url rtmp://example.com/static/stream;
}

Пример на другом файле:

root@flussonic:~# /opt/flussonic/bin/python2.7 m3u_to_flussonic.py example2.m3u
stream stream1 {
  url udp://239.255.0.1:5500;;
}
stream stream2 {
  url udp://239.255.0.2:5500;;
}
stream stream3 {
  url udp://239.255.0.3:5500;;
}
stream stream4 {
  url udp://239.255.0.4:5500;;
}
stream stream5 {
  url udp://239.255.0.5:5500;;
}

Эту конфигурацию нужно скопировать и вставить в файл /etc/flussonic/flussonic.conf, после чего перечитать конфигурацию командой /etc/init.d/flussonic reload

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

root@flussonic2:~# curl -u flussonic:letmein! --data-binary "$(/opt/flussonic/bin/python2.7 m3u_to_flussonic.py example2.m3u)" http://flussonic:8080/flussonic/api/config/stream_create
{"success":true}

Где:

  • flussonic:letmein! — логин и пароль от вашего Flussonic Media Server.
  • example1.m3u — импортируемый файл.
  • http://flussonic:8080 — адрес вашего сервера.

{"success":true} означает, что импорт прошел успешно.

Кстати, m3u_to_flussonic.py умеет работать не только с локальными файлами, но и с удаленными по http://:

root@flussonic:~# /opt/flussonic/bin/python2.7 m3u_to_flussonic.py http://example.com/example2.m3u
<...>

Примеры файлов Anchor Anchor x2

Если у вас нету под рукой m3u плейлиста, можете потренироваться на этих:

example1.m3u

#EXTM3U
#EXTINF:0 tvg-name="BBC" audio-track="eng" tvg-logo="http://example.com/BBC.png", BBC World
http://example.com/stream/to/video2
#EXTINF:0 tvg-name="CNN" audio-track="rus" group-title="News", CNN International
http://example.com/stream/to/video2
#EXTINF:0,Arirang
http://example.com/stream/to/video3
#EXTINF:-1,ORT
http://example.com/ort/mpegts
#EXTINF:-1,ORT_HLS
http://example.com/ort/index.m3u8
http://example.com/streamwithoutname/video.m3u8
#EXTINF:-1,RTMP_stream
rtmp://example.com/static/stream

example2.m3u

udp://239.255.0.1:5500
udp://239.255.0.2:5500
udp://239.255.0.3:5500
udp://239.255.0.4:5500
udp://239.255.0.5:5500