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

  1. Быстрый старт
  2. How-to
  3. Потоковое вещание
    1. Варианты источников
    2. Переключение источников
    3. Публикация на Flussonic
    4. Прием мультикаста
    5. Серверные плейлисты
    6. Микширование
    7. Захват с SDI
    8. Отправка на другие серверы
    9. Распознавание DVB субтитров
    10. Наложение логотипа
  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
    11. Multicast с постоянным битрейтом
    12. WebRTC
    13. 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. Реклама

Управление конфигурацией Flussonic с помощью HTTP API

Об использовании HTTP API для настройки Flussonic Anchor Anchor x2

Вы можете управлять конфигурацией Flussonic по HTTP API. Настройки передаются серверу в формате JSON, и сервер возвращает информацию о конфигурации тоже в JSON.

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

Что можно делать в HTTP API:

  • Получать существующую конфигурацию, при этом можно опционально получить статистику времени выполнения о работе Flussonic (см. read_config).

  • Модифицировать часть настроек в файле и сохранить файл /etc/flussonic/flussonic.conf (см. modify_config).

  • Полностью заменить конфигурационный файл на работающем сервере, но не сохранять эти настройки в файле на диске (см. update_config).

  • Полностью заменить конфигурационный файл на работающем сервере и перезаписать файл на диске (см. save_config).

Когда вы отправляете запросы к Flussonic по HTTP/HTTPS, используется базовая аутентификация с именем пользователя и паролем, которые указаны в настройках в опции edit_auth в файле /etc/flussonic/flussonic.conf.

Получение конфигурации сервера (read_config) Anchor Anchor x2

Flussonic может отдавать информацию о своих настройках по HTTP API в формате JSON.

URL запроса: /flussonic/api/read_config

Параметры:

  • skip_streams=true (необязательный). Этот параметр исключает из ответа статические потоки.

  • runtime=true (необязательный). Этот параметр добавляет в ответ статистику времени выполнения для Flussonic, потоков, архивов и т.д.

Пример запроса:

В браузере:

http://FLUSSONIC-IP:8080/flussonic/api/read_config

Через curl:

curl http://ADMIN:PASSWORD@FLUSSONIC:8080/flussonic/api/read_config

Пример ответа:

{
    "auth": {
        "url": "http://localhost:3456"
    },
    "cluster_key": "xxxyyy123",
    "edit_auth": {
        "login": "flussonic",
        "password": "mypass123"
    },
    "http": [
        8080
    ],
    "lives": {
        "mylive": {
            "auth": {
                "url": "http://localhost:3456",
                "url_global": "http://localhost:3456"
            },
            "cluster_key": "xxxyyy123",
            "cluster_key_global": "xxxyyy123",
            "position": 1,
            "prefix": "mylive",
            "publish_enabled": true,
            "static": false
        }
    },
    "log_requests": true,
    "loglevel": "debug",
    "mysql": 3307,
    "plugins": {
        "vsaas": {
            "database": "sqlite:///opt/flussonic/priv/vsaas.db",
            "name": "vsaas",
            "position": 1
        }
    },
    "pulsedb": "/var/lib/pulse",
    "root": "wwwroot",
    "rtmp": 1935,
    "rtsp": 8554,
    "snmp": 3000,
    "streams": {
        "ort": {
            "auth": {
                "url": "http://localhost:3456",
                "url_global": "http://localhost:3456"
            },
            "cluster_key": "xxxyyy123",
            "cluster_key_global": "xxxyyy123",
            "name": "ort",
            "position": 1,
            "prepush": 10,
            "static": true,
            "transcoder": [
                [
                    "video_bitrate",
                    1024000
                ],
                [
                    "audio_bitrate",
                    100000
                ]
            ],
            "urls": [
                {
                    "url": "udp://239.1.2.3:1234"
                },
                {
                    "url": "hls://example.com/stream/index.m3u8"
                }
            ]
        }
    },
    "view_auth": {
        "login": "flussonic",
        "password": "viewpass"
    }
}

Пример запроса с параметром skip_streams:

http://FLUSSONIC-IP:8080/flussonic/api/read_config?skip_streams=true

или

curl http://ADMIN:PASSWORD@FLUSSONIC:8080/flussonic/api/read_config?skip_streams=true

Пример запроса с параметром runtime:

http://FLUSSONIC-IP:8080/flussonic/api/read_config?runtime=true

или

curl http://ADMIN:PASSWORD@FLUSSONIC:8080/flussonic/api/read_config?runtime=true

Изменение конфигурации сервера передачей JSON объекта (modify_config) Anchor Anchor x2

Вызов modify_config — это часть HTTP API, позволяет редактировать фрагмент конфигурационного файла Flussonic и сохранять изменения.

URL запроса: /flussonic/api/modify_config

Параметры:

  • HTTP request payload (обязательный параметр) — JSON объект с фрагментом конфигурации. Этот фрагмент заменит или будет добавлен в существующую конфигурацию.

Ответ: Новая полная конфигурация сервера в формате JSON.

На вход передаётся конфиг в виде JSON. Передаваемый конфиг объединяется с рабочим конфигом на сервере, и результат сохраняется на диск в текстовый файл /etc/flussonic/flussonic.conf.

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

Поля в передаваемом объекте соответствуют параметрам текстового файла с конфигурацией. Группы объектов, такие как потоки и префиксы публикации, группируются внутри полей "streams" и "lives". Значение некоторых параметров тоже представляет собой объект, а не строку.

Для того, чтобы удалить параметр, надо задать ему значение null.

Как правильно указывать параметры в JSON формате

Узнать, как именно должен быть представлен в виде JSON какой-то определённый параметр, можно с помощью вызова API read_config, который покажет существующую конфигурацию Flussonic.

Пример. Авторизация

Допустим, уже включена глобальная авторизация, http backend с дополнительно передаваемым параметром:

auth http://localhost:4567/auth secret=xyz;

Мы хотим вместо этого использовать скрипт myscript.lua, и передавать ему ещё один параметр mykey=123 в дополнение к secret=xyz.

Для этого надо передать такой JSON объект:

{"auth": {"url": "myscript.lua", "extra": {"mykey": "123"}}}

В результате в конфиге сохранится:

auth myscript.lua mykey=123 secret=xyz;

Чтобы отключить авторизацию, надо передать {"auth": null}.

Пример. Операции с потоками

Доступ к настройкам потока происходит через поле "streams", которому передаётся объект с потоками. Название потока является ключом.

Например, надо явно отключить авторизацию на потоке channel_01. Для этого надо задать URL false:

'{"streams": {"channel_01": {"auth": {"url": false}}}}'

В результате в настройки этого потока попадёт параметр auth со значением false:

stream channel_01 {
   url hls://myvideo.com/mylive;
   auth false;
   ...
}

Источников у потока может быть несколько, поэтому они представлены в виде массива "urls":

{"streams":
  {"channel_01":
    {"urls": [{"url": "tshttp://example.com/mystream"},
              {"url": "udp://239.1.1.1:1234"}
   ]}}}

Как удалить поток:

'{"streams" : {"channel_01" : null}}'

Покажем пример запроса на удаление потока через curl:

curl -d '{"streams" : {"test1" : null}}' http://ADMIN:PASSWORD@FLUSSONIC:8080/flussonic/api/modify_config

Обновить конфигурацию (update_config) Anchor Anchor x2

Для обновления конфигурации необходимо передать текст нового файла конфигурации в качестве тела POST запроса.

Важное отличие от save_config в том, что новая конфигурация применяется к запущенному серверу, но сам файл конфигурации на жестком диске не изменяется.

URL: /flussonic/api/update_config

Параметры:

  • HTTP request payload — текст нового файла конфигурации.
    Обязательный параметр
    В этом запросе вы передаете полный текст нового файла конфигурации как данные, приложенные к запросу.
    Если использовать curl, то имеется в виду параметр --data-binary:
    curl ... --data-binary '# Global settings:\nhttp 80;\nrtsp 554;\nrtmp 1935;\npulsedb /var/run/flussonic;'

Ответ: true в случае успешной обработки запроса.


Сохранить новый файл конфигурации (save_config) Anchor Anchor x2

Для обновления конфигурации необходимо передать текст нового файла конфигурации в качестве тела POST запроса.

Важное отличие от update_config в том, что новая конфигурация не только применяется к запущенному серверу, но и заменяет собой существующий файл конфигурации в /etc/flussonic/flussonic.conf.

URL: /flussonic/api/save_config

Параметры:

  • HTTP request payload — текст нового файла конфигурации.
    Обязательный параметр
    В этом запросе вы передаете полный текст нового файла конфигурации как данные, приложенные к запросу.
    Если использовать curl, то имеется в виду параметр --data-binary:
    curl ... --data-binary '# Global settings:\nhttp 80;\nrtsp 554;\nrtmp 1935;\npulsedb /var/run/flussonic;'

Ответ: true в случае успешной обработки запроса.