Документация на 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

Управление конфигурацией Flussonic Media Server Anchor Anchor x2

Настройки Flussonic Media Server хранятся в конфигурационном файле /etc/flussonic/flussonic.conf.

После изменения параметров в конфигурационном файле flussonic.conf, необходимо перезапустить сервис Flussonic Media Server следующей командой:

/etc/init.d/flussonic reload

Также можно воспользоваться HTTP API для этого:

curl -u user:pass http://localhost:8080/flussonic/api/reload

Где user:pass — логин и пароль из настройки edit_auth (см. Другие опции сервера ниже).

Перезапуск сервера Flussonic Anchor Anchor x2

Для рестарта сервера выполните команду:
/etc/init.d/flussonic restart

Глобальные опции сервера Anchor Anchor x2

Протоколы и порты

Опции сервера (Протоколы и порты) Описание
https 443; включает приём запросов по протоколу HTTPS на указанном порту. Можно указывать несколько раз.
http 80; включает приём запросов по протоколу HTTP на указанном порту. Можно указывать несколько раз.
http 127.0.0.1:80; включает приём запросов по протоколу HTTP на указанном порту и заданном IP адресе. Можно указывать несколько раз.
rtmp 80; включает приём запросов по протоколу RTMP на указанном порту.
rtmps 1443: включает приём запросов по протоколу RTMPS на указанном порту.
rtsp 554; включает приём запросов по протоколу RTSP на указанном порту.
rtsps 1554; включает приём запросов по протоколу RTSPS на указанном порту.
mysql 3306; включает приём запросов по протоколу MySQL на указанном порту.

При конфигурации протоколов HTTPS, RTMPS, RTSPS Flussonic Media Server ожидает наличие сертификатов в каталоге /etc/flussonic. Для того, чтобы протокол RTMPS заработал, необходимо наличие валидного сертификата, который работает без каких-либо предупреждений или ошибок.

Flussonic Media Server ожидает приватный ключ сервера в файле /etc/flussonic/flussonic.key с паролем flussonic. Сертификат сервера будет читаться из файла /etc/flussonic/flussonic.crt. Промежуточный и CA сертификаты будут браться из /etc/flussonic/flussonic-ca.crt.

Например, при получении купленного комплекта из ключа и сертификатов, надо сделать следующие действия:

bash

cat intermediate.crt ca.crt > /etc/flussonic/flussonic-ca.crt
cp server.crt flussonic.crt
openssl rsa -des3 -in server.key -out flussonic.key

Другие опции сервера

Другие опции сервера Описание
loglevel info; Меняется объём записываемых в журнал логов. Варианты: debug, info, alert.
logrequests true; Включается запись всех HTTP запросов в /var/log/flussonic/access.log
total_bandwidth 10G Указывается максимальная ёмкость канала. Нужно для балансировки серверов в кластере.
auth_token TOKEN; Имя параметра в query string, который будет интерпретироваться как авторизационный токен.
auth false; Глобальное отключение авторизации.
auth http://backend/auth.php; Глобальное включение авторизационного бекенда.
max_sessions 1000; Глобальный лимит по количеству сессий.
no_auto_token;

auto_token false;
При указании этой опции запросы пришедшие без опции token в query string будут немедленно отключаться.
auto_token UUID; При указании этой опции авторизационный token будет автоматически генерироваться, если он не указан в query string.
auto_token blank; При указании этой опции авторизационный token будет учитываться как пустой, если он не указан в query string. Режим по умолчанию.
cluster_key SECRETKEY; Строка, использующаяся для авторизации других серверов Flussonic Media Server входящих в кластер.
view_auth USER PASSWORD; Включается авторизация для readonly доступа к API.
edit_auth USER PASSWORD; Логин-пароль для административного доступа к серверу.
api_allowed_from 10/8 192.168/16; Можно указать с каких адресов или сетей можно разрешать доступ к API.
notify HANDLER_NAME {
  sink http://backend/event.php;
}


notify HANDLER_NAME {
  sink /etc/flussonic/events.lua;
}
События Flussonic будут приходить на указанный URL или в указанный скрипт. Подробнее в Events API
pulsedb /var/lib/flussonic; Указывается, куда будет писаться статистика потоков.
session_log /var/lib/flussonic; Указывается, куда будет писаться история сессий.
session_log false; Отключает запись сессий.
url_prefix PREFIX;

url_prefix http://my.domain.address.com:8080;
При использовании протокола HLS, для всех потоков на сервере, адреса отдельных сегментов и плейлистов в вариантном плейлисте будут начинаться с указанного префикса. Эта опция может быть использована не только в глобальной части файла конфигурации, но и как часть настроек конкретного потока. Прописанная в настройках потока, опция применяется только к одному этому потоку.
source SOURCE/PREFIX;
source SOURCE/PREFIX { }

source origin1.tv {
}
Директива, включающая автоматическое зеркалирование потоков с другого сервера на локальный.
stream ntv {
  url tshttp://source/ntv.ts;
}
Директива stream включает перманентный поток, который будет поддерживаться рабочим всё время жизни сервера, даже если ни один из источников недоступен. Опции директивы stream описаны ниже.
ondemand ntv {
  url tshttp://source/ntv.ts;
}
Директива ondemand описывает поток, который будет запускаться по-запросу. Если он какое-то время недоступен, то он будет автоматически выключаться. Опции директивы ondemand описаны ниже.
rewrite client16/* {
  url rtmp://origin/%s;
}
Директива rewrite включает динамический запуск потоков по запросу, чьи имена попадают под маску clients16/*. Опции директивы rewrite описаны ниже.
live published { } Директива live включает возможность публикации на сервер потоков с именами, начинающимися с published. Опции директивы live описаны ниже.
file vod {
  path /storage;
}
Директива file включает вещание файлов, лежащих в каталоге /storage под именами, начинающимися с vod/.Опции директивы file описаны ниже.
cache globalcache /var/www misses=4 2d 40G; Конфигурируется глобальный кеш по имени globalcache в каталоге /var/www с лимитом на 40 гигабайт и 2 дня. Файлы начнут кешироваться только после 4 запросов от клиентов.

Настройки потока или группы Anchor Anchor x2

Эти настройки можно указывать внутри директив stream, ondemand, rewrite и live. Мы называем их опции.

auth

auth http://backend/; Включение авторизации для потока. Более подробно в разделе про авторизацию.

domains

domains host1.ru *.host1.ru; Указание доменов, на которых можно проигрывать это видео. Не работает для клиентов, которые не передают Referer. Для правильной работы в WEB в списке доменов должен присутствовать домен, с которого загружается embed плеер.

allowed_countries

allowed_countries RU UA KZ; Cписок стран (двухбуквенные коды как в БД maxmind) с которых разрешен доступ.

url

url tshttp://transcoder:port/; Адрес источника. Можно перечислить несколько директив url для выбора источника по кругу.

Важно! Если используется UDP-источник, то в файле конфигурации этот UDP-адрес должен использоваться только один раз. Если несколько потоков будут использовать один и тот же адрес, то, скорее всего, это просто не будет работать.

urls

urls source1 source2; Список адресов источников. Подробнее про механизм переключения источников.

url_prefix

url_prefix prefix При использовании протокола HLS, адреса отдельных сегментов и плейлистов в вариантном плейлисте будут начинаться с указанного префикса. Эта опция может быть использована не только как часть настроек конкретного потока, но и в глобальной части файла конфигурации. Прописанная глобально опция применяется ко всем потокам на этом сервере. Пример: url_prefix http://my.domain.address.com:8080

dvr

dvr /storage 1d 50% schedule=8:00-16:00; Включение архива. Flussonic Media Server будет писать в каталог /storage/streamname и очищать либо через день, либо когда диск на который пишут, заполнится на 50%. Вместо дней можно указывать часы: 20h. Параметр schedule позволяет задать расписание для записи архива в виде интервалов. Время указывается в UTC в часах и опционально минутах, интервал может перехлёстываться через полночь: 22-1:30. Расписание может содержать несколько интервалов, разделенных запятой: 8:00-16:00,22-1:30.

dvr_offline

dvr_offline /storage 1d 50%; При указании этой опции, поток не будет включать запись на старте. Её надо будет включать явно через API. Эта опция указывается вместо опции `dvr`.

udp

udp 239.0.0.1:4501 multicast_loop;

udp 239.0.0.1:4501;
Flussonic Media Server будет посылать поток по UDP MPEG-TS. Чтобы задать UDP сокету параметр MULTICAST_TTL, используйте следующий синтаксис: udp 239.0.0.1:4501?ttl=8;. Чтобы задать постоянный битрейт (CBR), используйте следующий синтаксис: udp 239.0.0.1:4501?cbr=2000;, где 2000 — битрейт в kbit/sec.

thumbnails

thumbnails; Включается генерация превьюшек потока. Требуется установить пакет flussonic-ffmpeg.

retry_limit

retry_limit 10; Количество раз, которое Flussonic Media Server будет пытаться подключиться к источникам, прежде чем отключить не статический поток.

clients_timeout

clients_timeout 10; Количество секунд которое Flussonic Media Server будет держать нестатический стрим после последнего обращения клиента.

source_timeout

source_timeout 10; Количество секунд, которое Flussonic Media Server будет ожидать кадры от источника. По прошествии этого времени Flussonic Media Server переподключится к источнику. По умолчанию значение source_timeout равно 60 секундам.

frames_timeout

frames_timeout 3; Время в секундах, в течение которого Flussonic Media Server ожидает кадры от источника прежде чем генерировать событие frames_timed_out. Это время должно быть меньше, чем source_timeout. Событие frames_timed_out уведомляет вас о том, что источник, возможно, скоро отключится. Если от источника снова начали поступать кадры, до наступления source_timeout, Flussonic генерирует событие frames_restored.

password

password secret; Пароль, который должен передаваться в query string (http или rtmp) для публикации в поток или в группу.

push

push rtmp://destination-server/name; При указании этой опции Flussonic Media Server будет публиковать поток на другой сервер.

backup

backup vod/blank.mp4; Указание этой опции в потоке будет запускать указанный файл vod/blank.mp4 пока нет видео от источника.

publish_enabled

publish_enabled; Указание этой опции в потоке позволяет публиковать в него видео. Не имеет смысл для группы потоков.

on_publish

on_publish http://host/publish.php;

on_publish /etc/flussonic/publish.lua;
При публикации в этот поток или группу потоков будет вызывать скрипт или делаться HTTP запрос с параметрами в виде названия потока, IP адреса публикующего и т.п. В ответ можно либо отказать в публикации, либо разрешить:
— HTTP бэкенд должен вернуть либо 200 OK, либо 403 Forbidden;
— .lua скрипт должен вернуть либо {true, {}}, либо {false, {}}.

max_sessions

max_sessions 1000; Лимит по количеству сессий на поток.

settings_rtp

rtp udp; Включает принудительное использование UDP для работы с RTSP камерами.

add_audio_only

add_audio_only; Добавляет в HLS плейлист ссылку на поток только с аудио. Требуется для прохождения валидации приложения в Apple.

no_prepush

no_prepush; Отключается [prepush](#prepush), т.е. более быстрый старт. Может быть нужно для сохранения риалтайма в потоке.

prepush

prepush 10; Включает буфер заданной продолжительности. Если соединение клиента с сервером прерывается или замедляется, то он проигрывает видео из буфера, что позволяет плееру стартовать быстрее, но с отставанием.

max_bitrate

max_bitrate 1000; Лимит битрейта публикуемого потока.

logo

В версии 4.6.15 и выше.

logo path=flu/embed-logo.png height=100 width=100 left=0 top=0; Добавить логотип при воспроизведении потока. Такой логотип не будет отображаться на мобильных устройствах и в DVR плеере. Чтобы добавить логотип к видео используйте транскодер.
path (Обязательный параметр) — путь относительно директории wwwroot.
height, width — размер изображения логотипа в пикселях. Если задан только один из этих параметров, то второй будет изменен пропорционально. Не указывайте эти параметры, чтобы оторазить логотип в исходном размере.
left, top, right, bottom — положение логотипа заданное в виде смещения в пикселях от левого, верхнего, правого и нижнего края видео. Например, чтобы отобразить логотип в правом нижнем углу: `right=0, bottom=0`. Не используйте одновременно параметры left, top, right и bottom.

mpegts_pids

mpegts_pids pmt=4095 sdt=0x12 v1=211 v2=212 a0=220 t0=16#fb; С помощью этого параметра задаются значения PID исходящему MPEG-TS потоку. Можно задать PID для PMT, SDT, дорожек с видео, аудио и субтитрами. Дорожки нумеруются начиная с 1: `a1=123` установит PID для первой аудио дорожки. Можно задать базовый PID для дорожек определённого типа с помощью индекса 0. Например, `t0=100` установит первой дорожке субтитров PID равный 101, второй - 102 и т.д. Числа могут быть заданы в десятичном виде (по умолчанию) или префиксом `0x` для шестнадцетиричных чисел.

segments

segments 5; Регулирует количество сегментов в HLS и HDS плейлистах.

segment_duration

segment_duration 4; Регулирует длительность сегмента в HLS и HDS потоках (в секундах). Не для всех получаемых потоков Flussonic сможет применить указанную длительность сегмента. Всё зависит от длины GOP у потока. Нужно, чтобы сегмент был кратен GOP, потому что GOP нельзя порезать на части. Например, для потока с GOP в 4 секунды допустима длина сегмента 4 секунды, 8 секунд, 12 секунд и т.д. Если это не так, то Flussonic создаёт сегменты равные GOP.

segment_count

segment_count 4; Количество сегментов для буферизации.

group

group sport; Используется только на сервере-источнике, чтобы отнести поток к одной или нескольким группам ТВ-каналов. [подробнее](/doc/iptv/stream-groups)

disabled

disabled; Отключить поток.

Настройки VOD Anchor Anchor x2

Эти настройки можно указывать внутри директивы file. Мы называем их опции.

file

file vod {
  path /storage;
}
Конфигурации локации для проигрывания файлов.

cache

cache /ssd misses=5 2d 40G; Все запросы к файлам будут кешироваться в папке /ssd сроком не более чем 2 дня и с лимитом в 40G. Кеширование включится, если к одному файлу было более 5 некешированных запросов.

domain

domain host.ru; Указание доменов, на которых можно проигрывать это видео. Не работает для клиентов, которые не передают Referer.

domains

domains host1.ru *.host1.ru; Указание доменов, на которых можно проигрывать это видео. Не работает для клиентов, которые не передают Referer.

path

path /storage;

path s3://key:secret@s3.amazonaws.com/bucket/;
Путь для поиска файлов. Можно указать несколько путей.

read_queue

read_queue 100; Количество одновременных обращений к диску для этого префикса.

download

download; Эта опция разрешает скачивание файла и обращение к нему с Range запросами.

max_readers

max_readers 10; Опция настраивает максимальное количество одновременных дисковых запросов ко всему префиксу.

thumbnails

thumbnails offset=10; Опция включает генерацию постеров к файлам с опциональным указанием секунды видео. Требуется установить пакет flussonic-ffmpeg.