Streams API
В интерфейсе Astra вы можете управлять конфигурациями потоков и контролировать их статус с помощью HTTP API методов.
Конфигурация потока
Заголовок раздела «Конфигурация потока»{ "id": "...", "name": "...", "type": "...", "enable": true, "input": [""]}name— имя потокаtype— тип потокаsptsилиmptsenable—true, если поток включёнinput— список входов потока- другие параметры зависят от конфигурации потока.
Получить конфигурацию потока
Заголовок раздела «Получить конфигурацию потока»Запрос: GET /api/stream-info/{id}
id— уникальный идентификатор потока
В ответе будет JSON с конфигурацией потока
Изменить конфигурацию потока
Заголовок раздела «Изменить конфигурацию потока»Запрос: POST /control/
{ "id": "...", "cmd": "set-stream", "stream": { ... }}id— уникальный идентификатор потокаstream— конфигурация потока
Включить/выключить поток
Заголовок раздела «Включить/выключить поток»Включение или отключение потока. Запрос: POST /control/
{ "cmd": "toggle-stream", "id": "..."}id— уникальный идентификатор потока
Перезапустить поток
Заголовок раздела «Перезапустить поток»Запрос: POST /control/
{ "cmd": "restart-stream", "id": "..."}id— уникальный идентификатор потока
Переключить активный вход
Заголовок раздела «Переключить активный вход»Выбор активного входа. Работает только для потоков с типами резервирования: passive или disable. Запрос: POST /control/
{ "cmd": "set-stream-input", "id": "...", "input": "..."}id— уникальный идентификатор потокаinput— номер входа. Нумерация начинается с 1. Если параметр не указан, будет выбран следующий вход после активного
Какие входы работают, показывает список inputs потока в Мониторинге.
Удалить поток
Заголовок раздела «Удалить поток»Запрос: POST /control/
{ "cmd": "set-stream", "id": "...", "stream": { "remove": true }}id— уникальный идентификатор потока
Получить статус потока
Заголовок раздела «Получить статус потока»Статистика работающего потока из модуля мониторинга. Запрос: POST /control/ или GET /api/stream-status/{id} с необязательным параметром ?t={time}. Оба варианта только для control. Наблюдатель получает 404.
{ "cmd": "stream-status", "id": "a001", "t": 0}id— строка, обязательно. Идентификатор потока: полеidв теле или второй сегмент пути вGET /api/stream-status/{id}. Поток должен быть запущен.t— число, необязательно. Полеtв теле или параметр запроса вGET.1(по умолчанию) — статистика за последний завершённый интервал мониторинга,0— последняя выборка анализатора. Любое другое число возвращает ошибкуnot implemented. Десятичная числовая строка читается как число, любое другое значение считается как1.
Оба варианта отвечают одинаковыми телами.
Интервал мониторинга задаётся настройкой tsdb_interval. Если она не задана, интервал равен 60 секундам.
Ответ:
{ "timestamp": 0, "instance": "...", "name": "...", "input_id": 1, "active": true, "onair": true, "sessions": 0, "bitrate": 0, "packets": 0, "pes_error": 0, "sc_error": 0, "cc_error": 0, "video_count": 1, "audio_count": 1}timestamp— время Unix. Дляt=1конец интервала отчёта. Дляt=0время последней выборки входа-источника,0до первой выборки или пока ни один вход не является источникомinstance— имя экземпляра, если указано в Настройки → Общие → Имя экземпляраname— имя потокаinput_id— номер входа в эфире,1для первого входа.0в отчёте за интервал у неактивного потока и у потокаmpts: его источник - вход0, выход мультиплексаactive—true, если поток активен, илиfalse, если поток работает по требованию и неактивенonair—true, если активный вход работает без ошибокsessions— количество активных сессий на потокеbitrate— битрейт потока в Кбит/сpes_error— количество некорректных PES-пакетовsc_error— количество зашифрованных TS-пакетов. Если поток защищён системой условного доступа (CAS), тоsc_errorиpes_errorбудут больше 0. Если поток расшифрован с неверным ключом, тоsc_errorбудет равен 0, аpes_errorбудет больше 0cc_error— счётчик ошибок CC. Ошибка CC может быть вызвана потерей или избытком пакетовvideo_count— количество видеопотоковaudio_count— количество аудиопотоков
У потока mpts значения относятся к выходу мультиплекса: onair равен true, bitrate - выход мультиплексора в Кбит/с, счётчики ошибок и элементарных потоков равны 0.
Ответы с ошибкой, все со статусом 200:
{"stream-status": "er", "error": "stream id not defined"}— в теле нет строкиidили в пути нет идентификатора. Идентификатор, который не декодируется из URI, считается отсутствующим.{"stream-status": "er", "error": "stream not found"}— нет работающего потока со слотом мониторинга с этим идентификатором: неизвестный или пустой идентификатор, выключенный поток или поток сno_event.{"stream-status": "er", "error": "not implemented"}—tотличается от0и1.