Получение видео и аудиопотоков

Получение потоков в режиме реального времени в SDK устроено следующим образом:

  1. На сервер отправляется команда запроса потока, содержащая в себе следующие обязательные параметры:

    channel - guid канала;

    stream - тип запрашиваемого потока:

    • main - основной поток;
    • sub - дополнительный поток;
    • archive_main - архив основного потока;
    • archive_sub - архив дополнительного потока.

    container - формат получаемого потока:

    • flv - поток в flash-формате;
    • jpeg - поток в виде одного кадра в формате JPG;
    • mjpeg - поток в формате MJPEG;
    • rtsp - RTSP поток;
    • hls - поток в формате HLS;
    • custom - аудиопоток.

    sid - уникальный id сессии.

    При необходимости в команду можно добавить дополнительные необязательные параметры:

    quality - качество сжатия потока от 0 до 100% для форматов JPG (container=jpeg) и MJPEG(container=mjpeg).

    framerate - для формата MJPEG(container=mjpeg) скорость получение потока (от 0 до 60000):

    • 0 - поток в реальном времени;
    • 60000 - поток со скоростью 1 кадр в минуту.

    audio - для формата RTSP(container=rtsp) включить передачу аудиопотока вместе с видеопотоком (audio=pcmu).

    hw - логический параметр включающий запрос архива с устройства:

    • true - в потоке архива с устройства;
    • false - в потоке архива сервера.
  2. В ответ сервер выдает уникальный Token с помощью которого формируется конечная строка для получения аудио- или видеопотоков.

Подсказка

GUID канала можно узнать с помощью запроса дерева объектов /objects, либо с помощью команды быстрого запроса списка каналов /channels.

Важно

Обратите внимание, что все команды относящиеся к получению видео: /channels, /archive_status, /archive_command, /get_video должны выполнять с использованием сессии полученной под произвольным пользователем (НЕ через пароль от SDK).

Примеры запросов Token с канала channel=CKq5LLiO:

  • получение основного видеопотока(stream=main) со скоростью 1 кадр/сек(framerate=1000), перекодированного в формат MJPEG(container=mjpeg) и качеством сжатия 80%(quality=80):

    https://192.168.1.200:8080/get_video?channel=CKq5LLiO&container=mjpeg&quality=80&stream=main&framerate=1000&sid=WP6IRcrQ
    		
  • получение RTSP потока(container=rtsp) дополнительного потока(stream=sub):

    https://192.168.1.200:8080/get_video?channel=CKq5LLiO&container=rtsp&stream=sub&sid=WP6IRcrQ
    		
  • получение архива основного потока(stream=archive_main) перекодированного в формат MJPEG(container=mjpeg):

    https://192.168.1.200:8080/get_video?channel=CKq5LLiO&container=mjpeg&stream=archive_main&sid=WP6IRcrQ
    		
  • получение аудио(container=custom) с основного потока (stream=main):

    https://192.168.1.200:8080/get_video?channel=CKq5LLiO&container=custom&stream=main&sid=WP6IRcrQ
    		

Пример ответа сервера:

    {
        "success" : 1,
        "token" : "c4Z0qkuu"
    }
	

В данном примере ответ содержит:

  • "success" : 1 - сообщение что авторизация прошла успешно;
  • "token" : "c4Z0qkuu" - уникальный Token для получения видео;

Примеры запросов на получение видео- и аудиопотоков:

  • основного и дополнительного потоков и их архивов:

    http://192.168.1.200:555/c4Z0qkuu
    		
  • RTSP потока

    rtsp://192.168.1.200:555/c4Z0qkuu
    		
  • поток в формате HLS:

    https://192.168.1.200:8080/hls/c4Z0qkuu/master.m3u8
    		
  • аудиопотока:

    http://192.168.1.200:555/media/c4Z0qkuu?stream=audio&container=ogg&channels=2&bitrate=64000&samplerate=44100
    		

В данных примерах запрос содержит:

  • c4Z0qkuu - Token, полученный ранее;
  • stream=audio - передавать аудиопоток;
  • container=ogg - кодек аудиопотока (aac или ogg);
  • channels=2 - количество каналов передаваемого аудиопотока;
  • bitrate=64000 - степень сжатия аудиопотока;
  • samplerate=44100 - частота дискретизации аудиопотока (8000, 11025, 16000, 22050, 24000, 32000, 44100 или 48000).

Важно

Время жизни Token равно 10 сек и при отсутствии постоянных запросов он "умирает". Для продления его жизни, например, на паузе при просмотре архива или при просмотре видео с большим framerate, необходимо выполнить запрос:

http://192.168.1.200:555/c4Z0qkuu?ping
	

Важно

Получение потока архива выполняется по следующему алгоритму:

  1. Выполнить запрос Token с параметром container=archive_main или container=archive_sub.
  2. По Token выполнить запрос потока.
  3. С помощью команд управления архивом указать точку начала воспроизведения и запустить воспроизведение видео.

Подсказка

Обратите внимание, что поток передается по протоколу http (перед ip-адресом указывается http://) и по порту 555 (порт потокового вещания можно изменить в настройках сервера). Для получения потока по протоколу RTSP (перед ip-адресом указывается rtsp://) и так же используется порт 555.