Viinex provides the most essential functionality for video management. With Viinex, you can have all of that features right in your application.

Video acquisition

Viinex is capable of acquiring video from IP cameras and IP encoders supporting RTSP+RTP protocols and H.264 video format. Viinex supports "Basic" and "Digest" RTSP authentication methods. For RTP, the UDP unicast, UDP multicast, and TCP (RTP over RTSP, interleaved mode) implementations are available. Viinex can be set up to work with an RTSP video source with a known URL, - that is, it can be also some synthetic video source, such as VLC streaming server. For video cameras, it is possible to specify RTSP URL or to let Viinex find it out automatically via ONVIF protocol.

Video storage

Viinex stores video data acquired from cameras in a folder on a filesystem mounted at the server where Viinex is running. This can be a local storage device, or a remote folder (NAS), or a local folder on a remote storage like iSCSI SAN.

Viinex automatically maintains the restrictions set for video storage, which can determine maximum video archive size in terms of disk space or maximum video archive depth in terms of time. Given the restrictions set, older video records are overwritten by newer ones, like with any other video management system.

Video data is stored in containers of standardized MP4 format, which can be viewed by means of traditional widely available tools like Windows Media Player, QuickTime, etc. Directory structure where video data is written is very transparent, so it is possible for a user to inspect stored video data and even manipulate it (make excerpts from, or merge fragments) if required - by simply copying files and folders.

Video streaming

Streaming of live or archive video data to clients is performed using HLS protocol. HLS stands for HTTP Live Streaming, which means that HTTP is the transport protocol for video delivery. As a consequence, this approach works well on Internet, even in presence of NAT, restrictive firewalls, and so on.

The use of HLS allows playing video streams from Viinex natively in Apple Safari (including iOS) and Microsoft Edge browsers. Google Chrome and Mozilla Firefox support Media Streaming Extensions, which makes possible to play HLS using javascript-based players, for instance hls.js. So, in order to play video re-streamed by Viinex one just have to navigate to the corresponding URL in the browser, or point <video> tag to that URL. If the goal is to have video in a "rich client application", one can simply embed a browser control, pointing it to Viinex video URL mentioned above.

Viinex also implements RTSP server for streaming video to traditional RTSP clients. It supports RTP over UDP unicast, multicast and TCP, implements digest authentication, which allows using Viinex as a convenient RTSP proxy. Of course, Viinex RTSP client is compatible with Viinex RTSP server, enabling an option to get the live video stream from one Viinex instance to other Viinex instances, who, in their turn, can stream the same data over RTSP or over HLS. This makes it possible with Viinex to scale the streaming of data from a single video camera to an unlimited number of remote clients.

Last but not least, Viinex implements a WebRTC server for video streaming. This allows a peer-to-peer connection between the Viinex instance and client's browser to be used to deliver video content to the client in real time, with the latency below 300 milliseconds, -- which is appropriate for live surveillance, PTZ and telepresence applications. WebRTC is also used when a video archive of a third-party VMS needs to be accessed via Viinex.

Video exporting

Exporting video fragment with Viinex is as easy as downloading a file using a web link. Client code determines a time interval which should be exported and issues a HTTP request. The exported media is returned in HTTP response.

Viinex supports MP4 and MPEG TS containers as exported output formats; that is, downloaded file can be played on standard media players built into OSes, even 10+ years old (like Windows 7). There is no need to install third-party players, codec packs or whatever, in order to play video exported by Viinex.

External control over video recording

For applications using Viinex, an API is exposed to control over when the video recording should start and stop. For convenience, one API call is used to start/stop recording on a pre-configured group of cameras (the group may consist of one camera). Of course, pre-recording buffers are supported, and post-recording timeout is supported as well.

PTZ support

Viinex support for PTZ cameras and allows send a PTZ command with just simply HTTP calls for:

  • managing presets
  • moving the PTZ device to a preset
  • moving the PTZ to an arbitrary positionViinex does not save state of the PTZ device; neither does it perform additional checks on call parameters. As a result, the most complicated call to the PTZ API in Viinex accepts as much as just 3 arguments for pan, tilt and zoom coordinates.

    Events acquisition and rules for video recording

    Viinex contains built-in basic video analytics. Also Viinex supports subscription mechanism which allows obtaining events from video cameras supporting ONVIF specification. This makes possible to do two things: a) to get these events in embedding applications via web sockets interface, right in real time, and b) to set up the rules for automatically triggering the video recording on and off, when an alarm events occur. As with external control over video recording, the rules are aware of groups of cameras, which makes the setup really easy for basic scenarios.