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

IP камеры и DVR

Видео с IP-камер

Динамические изображения (Dynamic Images) – потоковое видео или снепшоты, загружаемые из ресурса в Интернете или локальной сети. В качестве ресурса может выступать DVR, IP-камера, видео-регистратор, сервер.

Поддерживаются видео-кодеки:

  • JPEG / MJPEG - потоковое видео и по-кадровое получение данных от IP-камеры или регистратора кадры (снеп-шоты) - изображения *.jpg или *.png
  • H.264 / MPEG-4 - видео высокой степени сжатия

Для работы нужна прямая ссылка на изображение или видео-поток (без элементов интерфейса, компонентов ActiveX и т.п.).

где найти прямую ссылку на поток с IP-камеры:

Editor_gallery_project_dynamic_images.png

Добавим ссылку в проект iRidium:

GALLERY >
Project Gallery > Dynamic Images >
Add Dynamic Image

  • добавить в проект ссылку на IP-камеру или поток с регистратора.

Пример ссылки на динамическое изображение:

http:// root:root@ 192.168.0.100 :80 /source/video.mjpg

rtsp:// root:root@ mydomain.com :554 /mpeg4/media.amp

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

Настроим ссылку в проекте:

Editor_gallery_window_dynamic_image(1).png

  • URI - ссылка на видео-поток (или поток кадров). Логин, пароль и порт доступа к камере можно указать в строках ниже
  • Port - для JPEG/MJPEG, по умолчанию, порт: 80, для MPEG-4/H.264 порт: 554
  • Login / Password - логин и пароль доступа к видео-потоку с камеры
  • Refresh (мс) - переподключение к источнику видео
    • Refresh: 0 (мс) - для потокового видео MJPEG/H.264/MPEG-4.
    • Refresh: 1000...n (мс) - для по-кадровой трансляции JPEG
  • Demuxer - автоматический или ручной выбор типа потока FFMPEG (для случаев, когда поток не определяется автоматически). Иногда используется при работе с Mobotix
  • Probe Size : 50000 (Кб) - размер буфера данных в Кб, который приложение загрузит перед началом воспроизведения видео. По умолчанию, если оставить 0, составляет 5 Мб. Можно уменьшить для камер с малым разрешением или для медленного соединения, но, не рекомендуются значения менее 20000 Кб
  • Param - строка для указания типа транспорта RTSP. Укажите
    • **rtsp_transport=tcp;** если RTSP поток с IP камеры загружается через Интернет или его качество неудовлетворительное
    • rtsp_transport=udp; или пустое поле подключает загрузку RTSP потока в локальной сети по UDP
  • ScaleWidth / ScaleHeight - ширина / высота кадра для масштабирования. Если оставить пустые поля, то видео отобразится с оригинальным разрешением.
  • Audio - определяет необходимость воспроизведения аудио-потока с mxpeg камеры (если таковой имеется)

Клавишей Test In Browser вы можете проверить работу JPEG/MJPEG ссылки: камера в браузере должна отображаться без элементов управления, рамок и др. программных оболочек.

Привяжем камеру к графическому элементу:

На элемент, который должен отображать поток с камеры, перетащите динамическое изображение из галереи проекта. После этого можно открыть редактирование ссылки двойным кликом на элемент, к которому она привязана.

StretchIPCamera.png

Чтобы выбрать способ масштабирования потока с IP-камеры на графическом элементе, откройте вкладку "Stretch & Filtration" и укажите способ масштабирования для Image:

  • None - не масштабировать поток с IP-камеры
  • Proportional - масштабировать с сохранением пропорций
  • Full Size - масштабировать без сохранения пропорций, по размеру элемента

Масштабирование изображения на стороне iRidium создает большую нагрузку на устройство визуализации, старайтесь сразу задавать желаемое разрешение в настройках IP-камеры.

Число видимых камер в вашем проекте не должно быть больше 4-5 для стабильной работы проекта iRidium. К видимым относятся все камеры, находящиеся на открытых в данный момент страницах и попапах проекта. Чем больше разрешение камеры и чем меньше ресурсов у панели управления, тем меньше камер можно отобразить.
Превышение рекомендуемого числа камер может привести к проблемам при работе всего проекта.

Через скрипт можно привязать на графический элемент только одно динамическое изображение. Это значит, что нельзя через скрипт установить одно изображение в State 1, и другое - в State 2 элемента.


Погодные информеры

Погодный информер – расположенное по статической ссылке изображение, которое с определенной периодичностью обновляется и доступно для загрузки по НТТР. Коды информеров предоставляются различными сайтами, например:

Яндекс.погода

Сервис предоставляет код для вставки на сайт, из которого нам понадобится только ссылка на изображение (картинку) в формате png или jpg, она настраивается аналогично ссылке на IP-камеру в Gallery > Project Gallery > Dynamic Images:

Пример погодного информера на сайте:

Editor_informer_dynamic_image.png

Пример ссылки на погодный информер в iRidium:

Editor_informer_add_dynamic_image.png

  • URI - ссылка на изображение, проверенная в браузере, целиком вставляется в строку URI настроек камеры.
  • Refresh: 1000...n (мс) - частота обновления картинки, не указывайте меньше 1000 мс

http:// info.weather.yandex.net /moscow/3_white.ru.png

адрес ресурса - источника видео
ссылка на изображение-информер

Клавишей Test In Browser проверьте работу готовой ссылки.

Перетащите изображение на элемент. Размер элемента должен совпадать с разрешением информера для качественного отображения.

Редактировать ссылку можно по двойному клику на элемент, к которому она привязана.


PTZ контроль

PTZ контроль - это управление IP камерой или видео-регистратором по HTTP. Если ваша камера поддерживает команды PTZ, вы можете управлять ей: изменить положение камеры, если она оснащена приводом для поворота, изменить точку фокусировки, усатновить параметры записи и другое.

Команды PTZ необходимо отправлять с помощью драйвера AV & Custom Systems (HTTP), обычно они формируются как GET запросы, котрые можно отправить через барузер. Изучите REST API вашей камеры или регистратора, чтобы получить список команд PTZ, используйте этот список в соответствии с инстуркцией AV & Custom Systems (HTTP).


Видео с камер панели управления

Если i3 pro работает на iOS, Windows или Android устройстве, оснащенном фронтальной камерой (или на ноутбуке с веб-камерой), вы можете подключить отображение видео с этой камеры в проекте iRidium.

Обычно эта возможность используется при работе с SIP видео для демонстрации потока, котрый передается по протоколу SIP другому абоненту.

Чтобы отобразить видео с основной или фронтальной камеры панели управления в своем проекте, привяжите ссылку на камеру к графическому элементу и запустите получение потока. Настройка производится в редакторе скриптов (JS):

IR.AddListener(IR.EVENT_START,0,function()
{
// link the camera image to display Item
IR.GetItem("Page 1").GetItem("Item 1").GetState(0).Image = "ir_camera://";
});
function CameraStart ()
{
// start the camera record and flip it into vertical position (if started on iPad)
IR.Camera(IR.CAMERA_RECORD, IR.CAMERA_FRONT, IR.CAMERA_RESOLUTION_MEDIUM);
IR.Camera(IR.CAMERA_FLIP_VERTICAL, 1);
}
function CameraStop ()
{
// stop the camera record
IR.Camera(IR.CAMERA_STOP);
}

Запустить и остановить демонстрацию видео вы можете, вызывая функции CameraStart и CameraStop командой ScriptCall: JSguide_helloFunction.png

То же самое можно сделать, добавив вызов функций по какому-то событию в скриптах:

IR.AddListener(IR.EVENT_APP_ENTER_FOREGROUND, 0, function()
{
CameraStart (); // start video when iRidium in foreground
});
IR.AddListener(IR.EVENT_APP_ENTER_BACKGROUND, 0, function()
{
CameraStop (); // stop video when iRidium in background
});
  • Настройки видео (качество, поворот картинки и др.) формируются при создании видео-потока методом [IR.Camera()](/SWDL/dev-iridi/Video_API#ircamera), котрый подробно описан в Справочнике по JavaScript.

SIP-видео

Во время видео-вызова SIP необходимо отображать видео-поток, присылаемый абонентом, с которым установлена связь.

Поток генерируется автоматически при установке видео-вызова средствами драйвера SIP, чтобы вывести поток, привяжите его к графическому элементу, который будет отображать видео. Привязка производится в редакторе скриптов (JS):

IR.AddListener(IR.EVENT_START,0,function()
{
// display the SIP video
IR.GetItem("Page 1").GetItem("Item 1").GetState(0).Image = "sip_image://";
});