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

Contents

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

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

Вы можете управлять конфигурацией 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)

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)

Вызов 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)

Для обновления конфигурации необходимо передать текст нового файла конфигурации в качестве тела 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)

Для обновления конфигурации необходимо передать текст нового файла конфигурации в качестве тела 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 в случае успешной обработки запроса.