Получение потоков в режиме реального времени в SDK устроено следующим образом:
-
На сервер отправляется команда запроса потока, содержащая в себе следующие обязательные параметры:
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 - в потоке архива сервера.
- В ответ сервер выдает уникальный 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
Важно
Получение потока архива выполняется по следующему алгоритму:
- Выполнить запрос Token с параметром container=archive_main или container=archive_sub.
- По Token выполнить запрос потока.
- С помощью команд управления архивом указать точку начала воспроизведения и запустить воспроизведение видео.
Подсказка
Обратите внимание, что поток передается по протоколу http (перед ip-адресом указывается http://) и по порту 555 (порт потокового вещания можно изменить в настройках сервера). Для получения потока по протоколу RTSP (перед ip-адресом указывается rtsp://) и так же используется порт 555.

