viinex can run on Linux (x64 and arm64 hardware) and on Windows (x64 only). Scenarios with deployment into bare host OS, as well as into containers (Docker, LXC) or virtual machines (KVM, Hyper-V, VMWare) are all supported. There’s basically no performance penalty in any of these scenarios.

When respective hardware is available, viinex makes use of hardware accelerators to decode and encode video streams, if such decoding and encoding is assumed by the configured media processing pipeline.

x64

On a low-performance power-saving Intel CPU (like U-series Core i3, dual core, working at the frequency of 2GHz), viinex utilizes about 2% of time at one core per one video channel being recorded. It also takes additional 1% of time on one CPU core to re-stream one video channel to a remote client, no matter whether it is a live stream or a video archive data. That is, with viinex one can write and re-stream video data from at least 50 video cameras using this moderate CPU. With a quad-core i5 CPU this number is doubled.

Some other examples of viinex being used in real environments include:
– serving the configuration with ~7000 cameras available for re-streaming on demand with just 8-core and 16GB virtual machine. As clients request about 300 new media streaming sessions per minute and keep about 150 streaming sessions alive, the box load stays below 20%; RAM usage by viinex stays less than a half of total provisioned amount.
– serving the configuration for running a third party video analytics (vehicle license plate recognition), in the amount of 80 video channels on a single VM provisioned with 104 CPU cores and 110 GB RAM, retrieving and decoding about 44000 frames per minute, sending about 21000 frames for processing by video analytics, and generating about 1000 events (identified vehicle tracks) per minute. In this scenario CPU usage by viinex itself is around 1200%, that is 12 CPU cores; this includes media data retrieval and decoding of said 80 channels. No hardware acceleration was available for video decoding in that setup.

arm64

For arm64, results given for a rk3399-based system. Viinex utilizes 4% CPU time per each video channel being received and written, and additional 2% of CPU time per each video channel being re-streamed to a remote client. These numbers refer to the whole device (not to a single core). Overall the system is capable of serving (writing and re-streaming) about 12 video cameras with viinex software.

Another example would be that a device based on Rockchip 3588 is capable of running viinex configuration for retrieving, decoding and feeding raw media to a third party vehicle license plate recognition engine, for three FullHD video channels, with the overall CPU load staying below 20% and RAM usage limited to 4GB (out of 8 GB available). In this setup, the frame rate of ingested/archived/decoded video is 2700 frames per minute, and the processing rate by video analytics is 1800 frames per minute. Hardware acceleration specific to Rockchip is used for video decoding and video analytics in this scenario.