Conformance to Standards

Viinex is a middleware solution that enables customers to easily add video surveillance and video management features to their applications. Viinex is equipped with features for acquiring video data from external devices such as IP cameras, raw sources, and third-party VMSs and NVRs. It stores video in a video archive and streams live or recorded video to clients in HTML5 compatible format. Viinex also allows applications to decide when to record video from external sources and handles low-level aspects of video management, including buffering for pre-recording, precise handling of groups of pictures and keyframes within video streams for accurate positioning within the video archive, and accounting for presentation timestamps.

Viinex adheres to ISO-standardized protocols and media formats in its interaction with applications, particularly in media interchange. It provides access to recorded video in formats such as MP4 and MPEG TS and in raw stream form, making it convenient for a number of video processing applications. Internally, Viinex stores and manages the video archive as a sequence of MP4 files named and arranged across subfolders according to video origin and timestamps, allowing for easy operation on the video archive by standard means.

WEB-Ready

Web applications have the advantage of simpler deployment compared to rich client applications, as they do not require specific client workstation requirements or upgrades. Additionally, web applications provide an ability to use the application over the Internet without the need for routing or port forwarding. Viinex was developed with the criterion that all features should be accessible by a web client application written in JS for a modern browser without additional software. Viinex’s HTTP API is based on JSON interchange between client and server, allowing for data acquisition, statistics, commands, events, and video streams to be accessed remotely via stateless REST-like semantics of remote calls. Viinex does not require its clients to use any other transport protocol except HTTP and is totally separated from customer’s application address space.

HTML5-Ready, P2P and Secure Video Streaming

Viinex implements WebRTC and HLS specifications for streaming video to the client, making video playback possible on most popular browsers, including Apple Safari on iOS and Microsoft Edge.

Viinex uses WebRTC to enable peer-to-peer (P2P) connections between a Viinex instance and the client’s browser, allowing for real-time delivery of video content. To facilitate this connection, Viinex also uses the Web Application Messaging Protocol (WAMP), which provides decoupled remote procedure calls for Viinex’s API, WebRTC signaling, and publishing-subscription for events.

Also, Viinex offers full secure video data streaming through WebRTC. In addition to Datagram Transport Layer Security (DTLS) for handshake, the WebRTC standard uses Secure Real-time Transport Protocol (SRTP) for video streaming. This protocol provides confidentiality through AES encryption of video traffic.

Designed as an SDK with HTTP API

Viinex is designed as a software development kit (SDK), meaning that all of its functionality is available via a programming interface. Viinex is typically deployed as a service/daemon in the operating system, but there is an option for integrating software to control the lifecycle of a Viinex instance.

The development of Viinex’s API was based on whether a feature could be used from a web-based client, such as a single-page application. If a JavaScript client running in a browser could use a feature, then rich clients could use it too.

Viinex’s programming interface is a set of HTTP calls that take JSON documents of a terse and simple structure or media data as input and output. Viinex adheres to the REST approach when building the API. Remote calls to Viinex are stateless, meaning that the server maintains no state or context for a specific client.

Viinex’s API is suitable for use from multiple programming languages, including Java, Objective C or Swift, PHP, node.js, C#, Python, and also from Delphi or C++. Its API doesn’t require its clients to link against native libraries, use additional transport protocols (except HTTP), or data formats (except JSON).