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

Видео с IP-камер и изображения из сети

Управление видео-потоками в интерфейсе

В iRidium studio откройте панель CAMERAS - хранилище ссылок на видео-потоки с IP-камер, которые можно использовать, и которые уже используются в интерфейсе визуализации.

Cameras1.png

Режимы просмотра:

  1. Gallery cameras - общий архив типичных ссылок на популярные модели IP-камер. Вы может добавить в архив свои ссылки.
  2. Project cameras - ссылки на IP-камеры, которые вы добавляли в интерфейс визуализации. Удалить не используемые ссылки из проекта можно при помощи инструмента "Неиспользуемые ресурсы" (Unused resources) на вкладке Resources (панель инструментов в правой части экрана).

Настройка видео с IP-камер

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

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

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

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

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

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

IP_Cam1.png

Cameras >
Project cameras > Add camera

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

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

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

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

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

Cameras2.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 камеры (если таковой имеется);

  • Disconnect when minimized - прекращает прием потокового видео при сворачивании приложения или блокировки экрана устройства (это позволяет экономить интернет трафик).

  • Для изменения данного параметра во время работы проекта используются скрипт, пример ниже:

function onDisconnect()
{
            IR.GetImage("Camera name").DisconnectWhenMinimized = state;
}

Где:
Camera name - имя камеры,
state - cостояние параметра (true - включен, false - выключен).

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

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

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

IP_Cam3.png

Выберите способ масштабирования потока с IP-камеры на графическом элементе, в поле "Image Stretch" (окно Project > States):

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

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

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

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

Для удаленного просмотра видео с IP-камер используется внешний IP-адрес, в этом случае неприменим Cloud Gate, т.к. i3 pro получает видео с IP-камер напрямую, минуя iRidium server. Использование внешнего IP-адреса является не безопасным и создаёт уязвимость для проникновения злоумышленников. Для повышения уровня безопасности вы можете использовать следующие варианты:

  • использовать сервис, который обеспечит онлайн-доступ к видео в реальном времени. Для сервиса Ivideon существует одноименный lite-модуль, который позволит встроить видео-поток, транслируемый сервисом, в интерфейс i3 pro. В случае с другими сервисами, видео не удастся встроить в интерфейс, но можно будет открыть в браузере;
  • использовать достаточно сложный пароль к IP-камере, выставить камеры в интернет с помощью DDNS или статического адреса;
  • использовать VPN как единственный способ удаленного подключения ко всему объекту автоматизации;
  • отказаться от просмотра видео с IP-камер через интернет.

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

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

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

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

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

Editor_informer_dynamic_image.png

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

IP_Cam4.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: IP_Cam5.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://";
});