Video management middleware

Встраиваемая система видеонаблюдения

Viinex — это встраиваемый программный компонент, который позволяет добавить функции по работе с видео в ваше приложение. Viinex реализует функциональность для получения видеоданных от видеокамер по отраслевым стандартам и от видеосерверов сторонних VMS по их проприетарным протоколам, предоставляет возможность хранения видео в видеоархиве и управления репликацией видеоархивов, раздачу видеопотоков клиентам, – как “живых”, так и архивных. Кроме того, Viinex берет на себя всю низкоуровневую работу по буферизации видео для предзаписи, корректной обработке последовательностей между ключевыми кадрами (GOP-ов), точному позиционированию в архиве, точному учету временных меток в видеопотоке, и тп. Предоставляет возможность использовать уже встроенную видеоаналитику или самостоятельно добавить сторонние библиотеки.

Viinex может использоваться вашим приложением как на периферии на физических серверах (stand alone), так и в дата-центрах с развертыванием и использованием в виртуальной среде. Для целей организации видеонаблюдения в Интернет, важно отметить, что возможно использовать P2P соединение между экземпляром Viinex и браузером пользователя для доставки видео, а также обеспечить шифрование передачи видео по SRTP.

Разработано для использования в WEB

Web-приложения имеют огромное преимущество перед нативными приложениями (rich client applications) в том, что первые значительно проще в развертывании. При запуске веб-приложения обычно нет строгих требований к окружению на клиентских рабочих местах, таких как конкретная версия Windows или .NET, наличие расширений OpenGL, и т.д. Сказанное относится и к обновлениям веб-приложений: после обновления сервера, все клиенты автоматически получают новую версию пользовательского интерфейса. Наконец, с веб-приложением вы автоматически получаете возможность использовать его через Интернет, чаще всего не беспокоясь о маршрутизации, перенаправлении портов и прочих хрупких обстоятельствах, зависящих от окружения, за которыми нужно отдельно следить в случае нативных приложений.

Viinex разработан с учетом следующего критерия: вся функциональность, реализуемая Viinex, должна быть доступна для использования веб-клиентом, написанном на Javascript и работающем в современном браузере, – без другого дополнительного ПО. Мы предполагаем, что если веб-клиент может использовать некую функциональность, то и нативный клиент также сможет ее использовать. Этот критерий выполнен: получение данных, статистики, передача команд и событий, а также видеопотоков, доступно в Viinex через программный интерфейс, основанный на обмене между клиентом и сервером по протоколу HTTP документами в формате JSON, – удаленными вызовами в REST-стиле, без поддержки сервером клиентского состояния. Тем самым, веб-клиент, как и мобильные приложения для Viinex, могут быть разработаны в «естественной» идиоматике используемого frontend-разработчиками окружения, без необходимости в дополнительных приемах, таких как вспомогательные плагины.

Viinex полностью изолирован от адресного пространства вашего приложения: вашему приложению не требуется линковать какие-либо статические или динамические библиотеки, либо подгружать .NET или Java компоненты. Для взаимодействия с Viinex клиентскому ПО не требуется использовать никаких сетевых протоколов кроме HTTP. Приоритетом для Viinex является поддержка web-клиентов, таких как одностраничные приложения (SPA, single page applications), – но обратиться к методам HTTP API достаточно легко и из приложений на других языках, от С/С++ до шелл-скриптов.

Соответствие стандартам

Во взаимодействии с другими приложениями, в частности, при обмене мультимедийными данными, Viinex придерживается протоколов и форматов медиа, стандартизованных ISO. Viinex работает с видео и предоставляет доступ к записанным данным в таких форматах как MP4, MPEG TS, а также в форме “сырого” потока, удобного для приложений по обработке видео. Внутри видеоархива Viinex хранит данные в виде последовательности MP4-файлов, названных с учетом времени их получения и названия камеры-источника и разложенных по подпапкам по простейшему правилу. Это позволяет при необходимости манипулировать этими данными с использованием стандартных средств, таких медиаплееры – например, если носитель с видеоархивом был извлечен из компьютера, на котором работает ваше приложение, и перенесен на другую систему, не содержащую дополнительного ПО).

HTML5-совместимое вещание

Для раздачи видеопотоков клиентам Viinex реализует спецификации WebRTC и HLS, что позволяет воспроизводитить видео из Viinex на большинстве популярных браузеров и мобильных клиентов. Кроме этого, протокол WebRTC позволяет передавать видео в реальном времени с минимальной задержкой, — приемлемой для управления поворотными камерами в ручном режиме, т.к. этот протокол изначально создавался для использования в видеоконференцсвязи.

Разработано как SDK

Viinex спроектирован и разработан как SDK. Это значит, что любой элемент функциональности, реализованный в Viinex, доступен через программный интерфейс, – и наоборот, – функциональность считается реализованной, только если она программно доступна для внешнего приложения.

Критерием для разработчиков программного интерфейса Viinex была возможность использования каждого конкретного элемента функциональности в веб-приложениях, таких как SPA (single-page application). Мы подразумеваем, что если клиентский код на Javascript, работающий в браузере, может использовать некую функцию, то и нативный клиент (rich client) также сможет ее использовать.

Программный интерфейс Viinex – это набор HTTP вызовов, которые принимают на вход и выдают на выходе либо JSON-документы, по возможности лаконичные и простые, – либо мультимедийные данные (видео). Viinex придерживается принципов REST при реализации программного интерфейса. Удаленные вызовы Viineх не создают на сервере состояния, т.е. сервер создает и не запоминает контекст, связанный с каждым клиентом, осуществляющим вызовы.

Viinex не требует от использующих его приложений, чтобы они линковали какие-либо нативные библиотеки, использовали какие-либо дополнительные транспортные протоколы (кроме HTTP) или форматы данных (кроме JSON). Программный интерфейс Viinex подходит для использования не только из кода на Javascript, работающего в веб-браузере, то также легко может быть использован из Java, Objective C или Swift, PHP, node.js, C#, Python, а также из Delphi или C++. Viinex является программным обеспечением связующего уровня (middleware), и может использоваться как пользовательскими, интерфейсными компонентами приложения, так и серверными его частями, – в зависимости от различных сценариев использования. Например, сетевой видеорегистратор может быть реализован с использованием одной только серверной функциональности, реализованной в Viinex, – так что разработка NVR на базе Viinex будет сосредоточена только на frontend-е. С другой стороны, отраслевые решения, такие как PSIM, которые обязательно имеют серверную часть логики, не связанную с видеонаблюдением, – легко могут интегрировать Viinex в окружении своего сервера приложений, чтобы расширить его функциональность работой с видео.

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

Ознакомиться с HTTP API документацией Viinex можно по ссылке.

Видеоаналитика

Поддерживает встроенные в IP-камеры детекторы через стандарт ONVIF, содержит базовые детекторы и алгоритмы распознавания, а также алгоритмы проективного преобразования изображений.

Viinex содержит следующие алгоритмы:

базовые детекторы;

проективное преобразование;

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

распознавание номеров грузовых железнодорожных вагонов;

распознавание номеров контейнеров;

детектор лиц.

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

интеграция внешних программных процессов.