Справочник по 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}}

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

Получить статус исходящих потоков

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

  • app - название приложения; если приложений несколько, то все они будут перечислены
  • streams - список потоков и их параметров
    • strm - имя потока
    • bandwidth - скорость передачи
    • resolution - резрешение видео
    • vcoded - спецификация видео-кодека
    • acodec - спецификация аудио-кодека
    • protocol - название протокола
Пример запроса:
curl -vvv http://127.0.0.1:8082/manage/rtmp_status
Пример ответа:
[ 
   { 
      "app" : "live", 
      "streams" : [ 
         { 
            "acodec" : "mp4a.40.2", 
            "vcodec" : "avc1.42c01f", 
            "publish_time" : "1524060893", 
            "bandwidth" : "1697348", 
            "protocol" : "RTSP", 
            "resolution" : "1280x720", 
            "strm" : "stream_rtsp" 
         }, 
         { 
            "vcodec" : "avc1.42c01f", 
            "publish_time" : "1524060893", 
            "acodec" : "mp4a.40.2", 
            "strm" : "stream_rtmp", 
            "bandwidth" : "1698536", 
            "protocol" : "RTMP", 
            "resolution" : "1280x720" 
         }, 
         { 
            "vcodec" : "avc1.64001e", 
            "publish_time" : "1524060893", 
            "bandwidth" : "286200", 
            "resolution" : "640x360", 
            "protocol" : "ENCODER", 
            "strm" : "stream_360p" 
         } 
      ] 
   } 
]

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

Получить настройки 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 (вкладка "MPEGTS In" В настройках вещания).
Запрашиваемый 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[/application/stream]
Параметры запроса:

  • [опционально] timeline - показывает временнУю развертку архива
  • [опционально] application/stream - показать информацию только по потоку с заданным именем (например, запрос /manage/dvr_status/live/stream вернет статус по архиву /live/stream)
Параметры ответа:
  • 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
Параметры запроса:

  • [опционально] target_depth - оставляет последние N минут записи
  • [опционально] from - удаляет контент, записанный после указанного времени в формате временной метки UTC, напр. from=1507732548
  • [опционально] to (older_than) - удаляет контент записанный ранее указанного времени в формате временной метки UTC, напр. to=1507732600
Параметры ответа:
  • status - результат операции
Пример запроса:
curl -X POST http://127.0.0.1:8082/manage/dvr/cleanup_archive/application/stream
Пример ответа:
{"status": "Ok"} или {"status": "Not found"}

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

Перезагрузить SSL сертификаты

Данный метод POST позволяет перезагрузить SSL сертификаты.
Запрашиваемый URL:
/manage/reload_ssl_certificates
Пример запроса:
curl -X POST http://127.0.0.1:8082/manage/reload_ssl_certificates

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



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

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the Privacy Policy. If you want to know more or withdraw your consent to all or some of the cookies, please refer to the Privacy Policy.
By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to the use of cookies.