Справочник по Nimble Streamer API

Nimble Streamer используется в различных ситуациях и сценариях. Многие клиенты используют несколько экземпляров Nimble для балансировки нагрузки и обеспечения отказоустойчивости. Требуется в режиме реального времени принимать решения о том, какой сервер должен обрабатывать каждый входящий запрос. Лучший способ этого добиться - получать статус для каждого сервера. Имея такой срез состояний, входной интерфейс может поменять URL медиа-потоков на веб-странице так, что любой плеер сможет подхватить их для воспроизведения.
Документация ниже описывает набор методов API, предоставляемых Nimble Streamer для получения статусов вещания в режиме реального времени. Можно также прочитать статьи про API, чтобы узнать про варианты применения API для Nimble и для WMAPanel.
Упомянутные API могут быть использованы для создания более совершенной балансировки нагрузки вещания между несколькими экземплярами Nimble Streamer.
Веб-консоль WMSPanel позволяет управлять маршрутами Nimble Streamer для настройки вещания и ретрансляции VOD маршрутов. Прочтите статью API для управления маршрутами Nimble Streamer.

Использование pull API - через GET запросы

WMSPanel позволяет осуществлять доступ к данным через API вызовы.
Каждый вызов - это GET запрос через HTTP.
В качестве ответа на запрос выдаётся JSON структура с требуемыми данными.

Начинаем: включить API доступ

Чтобы заставить Nimble Streamer реагировать на API запросы необходимо задать настройки API конфигурационном файле /etc/nimble/nimble.conf. Детальную информацию про параметры настройки можно узнать в описании настроек.
Все приведённые ниже параметры в настройках по умолчанию убраны.

management_listen_interfaces
Этот параметр указывает, какие IP-адреса могут быть использованы для выполнения API запросов. Если этот параметр не установлен, никакие API запросы не будут обрабатываться.
Примеры:
management_listen_interfaces = * - all available interfaces are used
management_listen_interfaces = 127.0.0.1, 192.168.0.1


management_port
Этот параметр определяет, какой порт будет использован для получения API запросов. Если этот параметр не установлен, то по умолчанию будет использоваться порт 8082.
Например:
management_port = 8086

management_token
Этот параметр устанавливает токен (или пароль), который используется при авторизации API запросов. Более детальная информация приведена в разделе "Создание авторизованных запросов".
Если пропустить этот параметр, то авторизация не будет выполняться и любой сможет получить информацию.
Пример:
management_token = mypassword

Свернуть этот раздел

Дополнительно: Создание авторизованных запросов

Это дополнительный шаг в случае использования параметра management_token для авторизации запросов. Для выполнения авторизации запросов необходимо сгенерировать хэш MD5, основанный на указанном токене.
Следуйте примеру из кода ниже, чтобы сгенерировать необходимый хэш.

    <?php
$salt= rand(0, 1000000);
$key = "mypassword"; // токен, указанный в параметре management_token 
$str2hash = $salt . "/". $key;
$md5raw = md5($str2hash, true);
$base64hash = base64_encode($md5raw);
$request_url = "http://127.0.0.1:8082/manage/server_status?salt=$salt&hash=$base64hash";
echo $request_url;
?>

Свернуть этот раздел

Получение основных сведений о состоянии сервера

Эта функция API позволяет получить информацию о текущем количестве соединений и состоянии канала (скорости передачи данных).
Запрашиваемый URL:
/manage/server_status
Параметры ответа:

  • Connections - количество активных соединений
  • OutRate - текущая скорость передачи, бит в секунду
  • ap - доступные процессоры
  • scl - загрузка центрального процессора
  • tpms - общий объём физической памяти
  • fpms - доступный объём физической памяти
  • tsss - общий объём области подкачки (свопа)
  • fsss - свободный объём области подкачки (свопа)
Пример запроса:
curl -vvv http://127.0.0.1:8082/manage/server_status
Пример ответа:
{"Connections": 10, "OutRate": 5120000, "SysInfo": {"ap":2,"scl":0,"tpms":2098434048,"fpms":775127040,"tsss":2145382400,"fsss":1707151360}}

Свернуть этот раздел

Получить статус RTMP соединений

Эта функция позволяет получить текущий статус RTMP вещания.
Запрашиваемый URL:
/manage/rtmp_status
Параметры ответа:

  • app - название приложения; если приложений несколько, то все они будут перечислены
  • streams - список потоков и их параметров
    • strm - имя потока
    • bandwidth - скорость передачи
    • resolution - резрешение видео
    • vcoded - спецификация видео-кодека
    • acodec - спецификация аудио-кодека
Пример запроса:
curl -vvv http://127.0.0.1:8082/manage/rtmp_status
Пример ответа:
[{"app":"live","streams":[{"strm":"stream","bandwidth":"507882","resolution":"424x240","vcodec":"avc1.66.30","acodec":"mp4a.40.2"}]}]

Свернуть этот раздел

Получить настройки RTMP

Эта функция позволяет получить настройки RTMP вещания.
Запрашиваемый URL:
/manage/rtmp_settings
Параметры ответа: Вложены в узел RtmpSettings.

  • hash - хэш-ответ
  • interfaces - какие интерфейсы установлены для обработки RTMP вещания
  • login - логин для публикации RTMP
  • password - пароль для публикации RTMP
  • duration - длительность фрагментов по умолчанию
  • protocols - при помощи каких протоколов генерируются выходые потоки
  • apps - настройки, относящиеся к приложениям
  • abr - индивидуальные настройки для потоков с адаптивным битрейтом (ABR)
    • app - название приложения
    • stream - название потока
    • streams - потоки с постоянным битрейтом, включённые в поток с ABR, у каждого есть имя потока и имя приложения
Пример запроса:
curl -vvv http://127.0.0.1:8082/manage/rtmp_settings
Пример ответа:
{"RtmpSettings":{"hash":"1414983917310","interfaces":[{"ip":"*","port":1936}],"login":"","password":"","duration":6,"protocols":["HLS"],"apps":[],"abr":[{"app":"nimble_live_abr","stream":"abrstream","streams":[{"app":"live","stream":"stream"}]}]}}

Свернуть этот раздел

Получить статус подключений MPEG-TS

Эта функция позволяет получить текущий статус MPEG-TS вещания.
Запрашиваемый URL:
/manage/mpeg2ts_status
Параметры ответа:

  • CamerasHash - хэш-ответ
  • Cameras - информация о каждом потоке
    • id - идентификатор источника потока
    • ip - IP-адрес иточника потока
    • port - порт источника потока
    • protocol - используется UDP или HTTP протокол.
Пример запроса:
curl -vvv http://127.0.0.1:8082/manage/mpeg2ts_status
Пример ответа:
{"CamerasHash":"1414986417897","Cameras":[{"id":"5456fab17d5c00547f000002","ip":"127.0.0.1","port":1234,"protocol":"udp"}]}

Свернуть этот раздел

Получить настройки MPEG-TS

Эта функция позволяет получить текущий статус MPEG-TS вещания.
Запрашиваемый URL:
/manage/mpeg2ts_settings
Параметры ответа: Вложены в узел RtmpSettings.

  • hash - хэш-ответ
  • interfaces - какие интерфейсы установлены для обработки RTMP вещания
  • login - логин для публикации RTMP
  • password - пароль для публикации RTMP
  • duration - длительность фрагментов по умолчанию
  • protocols - при помощи каких протоколов генерируются выходые потоки
  • apps - настройки, относящиеся к приложениям
  • abr - индивидуальные настройки для потоков с адаптивным битрейтом (ABR)
    • app - название приложения
    • stream - название потока
    • streams - потоки с постоянным битрейтом, включённые в поток с ABR, у каждого есть имя потока и имя приложения
Пример запроса:
curl -vvv http://127.0.0.1:8082/manage/mpeg2ts_settings
Пример ответа:
{"RtmpSettings":{"hash":"1414983917310","interfaces":[{"ip":"*","port":1936}],"login":"","password":"","duration":6,"protocols":["HLS"],"apps":[],"abr":[{"app":"nimble_live_abr","stream":"abrstream","streams":[{"app":"live","stream":"stream"}]}]}}

Свернуть этот раздел

Получить список архивов DVR

Метод позволяет получить список архивов DVR и детальную информацию о них.
Запрашиваемый URL:
/manage/dvr_status
Параметры запроса:

  • [опционально] timeline - показывает временнУю развертку архива
Параметры ответа:
  • size - размер архива (всех сегментов)
  • bandwidth - размер, поделенный на длительность
  • resolution - разрешение потока
  • acodec - кодек аудио
  • vcodec - кодек видео
  • path - путь на диске, где хранится архив
  • space_available - свободное место на разделе, где хранится архив
  • periods - количество сессий записи в архиве (сколько раз был pull/push)
  • stream - имя потока
  • duration - общая длительность архива
  • timeline - набор пар с длительностью и временем каждой сессии
Пример запроса:
curl -vvv http://127.0.0.1:8082/manage/dvr_status?timeline=true
Пример ответа:
[
   {
      "size" : 11333929,
      "bandwidth" : 1619128,
      "resolution" : "1080x608",
      "periods" : 1,
      "stream" : "live/stream1",
      "acodec" : "mp4a.40.2",
      "vcodec" : "avc1.4d401f",
      "path" : "/var/cache/nimble/dvr/live/stream1",
      "duration" : 56,
      "space_available" : 57962266624,
      "timeline" : [
         {
            "duration" : 56,
            "start" : 1470753122
         }
      ]
   },
   {
      "size" : 22041265,
      "bandwidth" : 1663488,
      "resolution" : "1080x608",
      "periods" : 2,
      "stream" : "live/stream2",
      "acodec" : "mp4a.40.2",
      "vcodec" : "avc1.4d401f",
      "space_available" : 57962266624,
      "path" : "/var/cache/nimble/dvr/live/stream2",
      "duration" : 106,
      "timeline" : [
         {
            "start" : 1470753194,
            "duration" : 53
         },
         {
            "duration" : 53,
            "start" : 1470753378
         }
      ]
   }
]

Свернуть этот раздел

Очистить архив DVR

Данный метод POST позволяет очистить архив DVR для заданного потока.
Запрашиваемый URL:
/manage/dvr/cleanup_archive/application/stream
Параметры запроса:

  • status - shows the result
Пример запроса:
curl -X POST http://127.0.0.1:8082/manage/dvr/cleanup_archive/application/stream
Пример ответа:
{"status": "Ok"} или {"status": "Not found"}

Свернуть этот раздел



Справочник WMSPanel API