Viinex is designed as an SDK. That is, every piece of functionality implemented in Viinex is available via programming interface, and the functionality is said to be implemented if and only if it is available programmatically.

The criterion for development of Viinex API was whether a feature can be used from web-based client, like a single-page application. We presumed that if a javascript client running in a browser could use a feature, then rich clients can used it, too.

Viinex programming interface is a set of HTTP calls, taking as input and producing as output either JSON documents of terse and simple structure, or the media data. Viinex sticks to REST approach to building the API. The remote calls to Viinex are stateless, i.e. the server maintains no state or context for a specific client.

Viinex does not require its clients to link against native libraries, use additional transport protocols (except HTTP) or data formats (except JSON). Its API is suitable for using not only from Javascript code running in a web browser, but can easily be used from Java, Objective C or Swift, PHP, node.js, C#, Python, and also from Delphi or C++. Viinex is a middleware, it can be used from both client- and server- sides for different use cases. For instance, an NVR can be built solely by means of server-side functionality provided by Viinex, - all the work for developing an NVR would be done on a frontend. On the other hand, a domain-oriented solution, like the ones for alarm monitoring or point of sale, which necessarily have non-video-related server-side parts, can also easily integrate Viinex within the environment of the application server, to incorporate video management functionality.

Video streaming is performed by Viinex according to HLS specification proposed by Apple. As a consequence, video streams produced by Viinex can be played on most browsers - Chrome, Safari, Firefox, Edge, - including mobile devices with iOS. In the most simple scenario, you just type in a video URL into a browser location bar and see the video stream, even on iPhone. This works not only in a local network, but via Internet as well. For a rich client application there can be a number of approaches to rendering such video streams, of which the most simple is embedding a control with a browser capable of rendering the HLS stream. There is also a number of other options for rich client applications - contact us to get an advice!

As of February 2019, Viinex has also support for WebRTC streaming. The WebRTC server makes Viinex suitable for using web technologies to organize low latency real-time video surveillance, including the PTZ-oriented scenarios. WebRTC also makes it possible to stream video from Viinex server to a client's browser in p2p mode, even if both reside behind the NAT.

Viinex is typically deployed as a service/daemon in the operating system, however there is an option for integrating software to control over the lifecycle of Viinex instance. There is also additional information on compatibility and performance of Viinex.

Here's the link to Viinex documentation: