Video Analytics Integration

Viinex is a video analytics agnostic and neutral middleware, offering a variety of tools for incorporating analytics functionality into your video applications independently. We have firsthand experience with these tools, having used them to integrate and offer multiple video analytic engines over the years.

Being a video management middleware development company, Viinex provides an independent approach to integrating video analytics algorithms, using two key mechanisms.

Providing raw video for third-party video analytics systems

The first mechanism involves video processing and receiving raw video streams for analytics. Viinex provides an API for obtaining uncompressed video, allowing external processes to access the raw video stream for analytics. This mechanism facilitates the transfer of the raw video stream between processes on a local machine without copying, using a combination of shared memory and named pipes. Viinex provides examples on GitHub, including a QR code reader and object detector and tracking algorithm, demonstrating how this can be done using Python.

Additionally, Viinex also takes advantage of hardware acceleration, allowing for enhanced performance in video decoding using technologies such as Intel Quick Sync, Nvidia CUDA, Direct3D, and VA-API.

Data exchange via standard STDIN/STDOUT mechanism

The second mechanism involves exchanging events with analytics applications. Viinex provides a mechanism of event-driven integration for low-level interaction with any external system, including video analytics systems from third-party vendors. Events-based integration with external systems can be done in any programming language, using a simple interface for exchanging events. Viinex can start an external process, manage its life cycle, and connect to it via named pipe (Windows) or UNIX domain socket (Linux). All events that the external process is subscribed to are serialized in JSON format and Viinex sends them to this process standard input. The reverse is also true – everything that the external process sends to its standard output has to have JSON syntax, which Viinex recognizes as an event from this process. This mechanism is based on simple exchange of JSON commands via stdin/stdout.

Viinex supports PostgreSQL and SQLite for storing events generated by various analytics objects.

By providing these two key mechanisms, Viinex offers an independent and flexible approach to integrating video analytics applications, allowing for easy customization and adaptation over time.