Перейти к содержимому

Streams API

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

{
"id": "...",
"name": "...",
"type": "...",
"enable": true,
"input": [""]
}
  • name — имя потока
  • type — тип потока spts или mpts
  • enable — 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 будет больше 0
  • cc_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.