Функциональность


Viinex 2.0 предоставляет наиболее существенную функциональность для работы с видео. Используя Viinex, вы можете легко добавить эти возможности в ваше программное приложение.

Получение видео

Viinex 2.0 поддерживает возможность получения видео от IP-камер и IP-видеокодеров, которые реализуют протоколы RTSP+RTP и видеокодек H.264. Для доступа к таким устройствам Viinex поддерживает методы аутентификации "Basic" и "Digest", предусмотренные спецификацией RTSP. Для протокола передачи данных - RTP - в Viinex доступны его реализации поверх UDP unicast, UDP multicast, а также TCP (RTP over RTSP, interleaved mode). Viinex 2.0 можно настроить на работу с RTSP-источником видео с известным URL, - таким как, например, синтетический источник видео вроде потокового сервера VLC. Для работы с видеокамерами можно как задать RTSP URL камеры вручную, так и позволить Viinex автоматически выяснить данный URL по протоколу ONVIF.

Видеоархив

Viinex 2.0 записывает видеоданные, полученные от камер, в папку на файловой системе, смонтированной на сервере, где Viinex работает. Это можеть быть либо файловая система на локальном носителе, либо смонтированная удаленная файловая система на NAS, либо локальная файловая система на удаленном хранилище iSCSI SAN.

Viinex 2.0 автоматически соблюдает набор заданных ему ограничений на хранилище видео. Эти ограничения могут определять максимальный размер хранилища - либо в терминах дискового пространства, либо в терминах времени (продолжительности) хранимых записей. При заданном наборе ограничений, Viinex перезаписывает наиболее старые видеозаписи наиболее новыми, - точно так же как и любая система видеонаблюдения.

Видеоданные хранятся в контейнерах стандартного формата MP4, и могут быть просмотрены общедоступными средствами, такими как Windows Media Player, iTunes, и т.п. Структура директорий, которая создается для хранения отдельных записей, прозрачна и очевидна, поэтому при необходимости пользователь может просматривать и даже изменять структуру хранимых данных (делать из нее выдержки, либо объединять фрагменты архива), - простым копированием папок и директорий. Разумеется, если такая активность нежелательна в конкретном окружении, - ее можно запретить, ограничив доступ пользователей к корневой папке видеоархива за счет установки ACL или POSIX-режима доступа.

Потоковое вещание видео

Потоковое вещание живого или архивного видео клиентам осуществляется по протоколу HLS. Аббревиатура HLS означает HTTP Live Streaming, то есть транспортным протоколом для доставки видео является в этом случае HTTP. Как следствие, такая система доставки данных хорошо работает в Internet, даже в присутствии со стороны клиента NAT, брандмауэров, ограничивающих трафик по портам, и т.п.

Использование HLS позволяет проигрывать видеопотоки от Viinex 2.0 в браузерах Apple Safari (в том числе на iOS) и Microsoft Edge - нативно, без дополнительных компонентов. В браузерах Google Chrome и Mozilla Firefox поддерживается часть HTML5 спецификации, называемая Media Streaming Extensions (MSE), что делает возможным проигрывание в них HLS-видеопотока также нативно, за счет исполнения кода на Javascript, - например, одним из готовых плееров, таким как hls.js. Итак, для проигрывания видеопотока, раздаваемого Viinex 2.0, требуется лишь ввести соответствующий URL в адресной строке браузера, либо в javascript-коде направить на этот URL имеющийся на веб-странице тег<video>. Если стоит задача воспроизведения видео в нативном клиентском приложении ("rich client application"), - одним из решений является внедрение в него компонента с браузером, который будет направлен на нужный URL.

В Viinex 2.0 также реализован RTSP сервер для вещания видео на традиционные RTSP-клиенты. Он поддерживает RTP с транспортом UDP unicast, multicast и TCP, реализует digest-аутентификацию, что делает Viinex удобным RTSP прокси к источникам видео. Конечно, RTSP-клиент Viinex 2.0 совместим с его же RTSP-сервером. Это позволяет передавать видеопоток от одного экземпляра Viinex 2.0 на другие экземпляры, которые, в свою очередь, могут раздавать полученные данные по протоколу RTSP или по HLS. Тем самым, с Viinex 2.0 становится возможным масштабирование вещания видеоданных от одного источника к неограниченному числу удаленных клиентов.

Экспорт видео

Процедура экспорта видеофрагмента, осуществляемая с Viinex 2.0, так же проста, как скачивание файла при наличии web-ссылки. Клиентский код решает, за какой временной интервал нужно запросить видео, и по какой камере, - и осуществляет один HTTP запрос. Экспортированные данные клиент получает в теле HTTP ответа.

В качестве выходных форматов для экспорта видео Viinex 2.0 поддерживает контейнеры MP4 и MPEG TS. Таким образом, скачиваемый файл сразу может быть просмотрен стандартными плеерами, встроенными в ОС, - даже на Windows 7 более чем 10-летней давности. Для воспроизведения видео, экспортированного с помощью Viinex, не требуется устанавливать сторонние плееры, кодек-паки или что-либо еще.

Внешнее управление записью

Для приложений, использующих Viinex 2.0, доступен программный интерфейс, который позволяет этим приложениям решать, когда следует начинать и останавливать запись видео в архив. Для удобства, один удаленный вызов (HTTP запрос) может быть использован для того чтобы начать или остановить запись для заранее сформированной группы камер. В Viinex поддерживается буфер предзаписи, так же как и таймаут для постзаписи.

Получение событий и правила для управления записью

Viinex 2.0 использует описанный в спецификации ONVIF механизм подписки, который позволяет получать события от IP камер.
Это позволяет решить две задачи: 1) получение событий от камер в клиентском приложении в реальном времени, через интерфейс web sockets, и 2) задание в Viinex правил для автоматического включения и выключения записи видео, когда возникает "тревожное" событие. Как и в случае внешнего управления записью, эти правила управляют группами камер, и это упрощает настройку Viinex в типичных сценариях.

Детектор лиц

В Viinex 2.0 доступна функциональность детекции лиц. Реализация разделена на два модуля: "движок", который обрабатывает отдельные статические изображения, и "модуль видеоаналитики", который предъявляет движку для анализа последовательность кадров до тех пор, пока не будет получен результат.

Оба модуля доступны для использования через HTTP API. Можно подать на вход движка произвольное изображение, используя утилиту CURL для формирования HTTP POST запросов к Viinex (изображение подается в теле HTTP запроса, и результат детекции лиц возвращается в виде JSON-структуры в теле HTTP ответа). Либо, можно связать модуль видеоаналитики для детекции лиц с видеоисточником - камерой, - для того чтобы по запросу находить лица на видео. В этом случае Viinex самостоятельно получает и передает для анализа требуемые видеоданные, тогда как клиентскому ПО остается получить только готовый разультаты детекции -- координаты лиц на изображении и временную метку кадра, на котором лица были найдены. После того как лица найдены на видео, модуль видеоаналитики сохраняет соответствующий кадр (или кадры) в буфере в оперативной памяти, чтобы клиентское ПО могло обратиться к ним позднее, как к снапшотам. Как и в других компонентах Viinex, для получения в качестве снапшота доступен как полный кадр, так и его отдельные части, ROI, на которых были обнаружены лица.

Видеоисточником, связанным с модулем детекции лиц на видео, может быть как IP камера или RTSP источник видео, так и USB камера, выдающая несжатый видеопоток. Кроме того, один модуль детекции лиц может быть связан с несколькими источниками видео (в том числе - разного типа), - для того чтобы обнаруживать лица на одной и той же сцене, глядя на нее с разных ракурсов, - с Viinex это может быть выполнено клиентским ПО за один вызов к HTTP API.

Распознавание номеров автомобилей

В Viinex 2.0 встроен алгоритм для распознавания номеров автомобилей. Как и другие функции Viinex, этот алгоритм доступен через HTTP RPC. Для распознавания текста на номерной пластине, клиентское приложение отправляет в теле HTTP-запроса к Viinex изображение, и в теле HTTP-ответа получает результат распознавания. Такая схема предполагает, что клиентское приложение знает, в какой момент необходимо выполнить распознавание, или, - когда номерная пластина автомобиля находится в поле зрения камеры. Такое предположение обычно выполняется в задачах, связанных с автоматизацией КПП или весовых терминалов.

Важной особенностью алгоритма распознавания номеров автомобилей, встроенного в Viinex 2.0, является то, что он не привязывается к одной камере: клиентское ПО может использовать один экземпляр этого алгоритма для распознавания номеров по многим камерам.

Система распознавания номеров автомобилей, предлагаемая в Viinex 2.0, не требует настроек, связанных с положением камеры или размером номера в поле зрения. Это существенно упрощает развертывание и использование данного алгоритма. Все, что требуется сделать для распознавания автомобильного номера, - это получить JPEG изображение от камеры, и отправить его HTTP-запросом в алгоритм распознавания, - без каких-либо дополнительных параметров.