Nx Witness VMS Plugin Advantages

Seamlessly integrate 3rd party video analytics systems, devices, and more with Nx Witness VMS with Plugins.

High Performance

Plugins built with the Metadata SDK are installed on the Nx Server application and result in seamless, high-performance integrations.


Plugins can be built for a single OS – like Windows – or for all operating Systems supported by Nx Witness VMS, including Ubuntu Linux and ARM platform based devices.

Metadata Overlays

The Metadata SDK allows developers to create plugins which draw bounding boxes and display identified metadata tags as overlays on live and archived video in the Nx Desktop client.

Custom Plugin Events

Plugins built with the Metadata SDK can send Events to Nx Witness VMS which can be used to create sophisticated Rules in the Nx Witness VMS Rules Engine.

Optimized For Objects

Optimized and designed for object-oriented, deep-learning / A.I. driven video analytics solutions which detect and identify objects and their associated attributes, with a dedicated object database and standard UX for searching and playing back associated live or archived video.

The Metadata SDK is FREE.

The Metadata SDK is freely accessible from Nx Cloud and integrations never require an additional Nx Witness license to activate and utilize.

Creating a Plugin

The process you should take to create a plugin, with notes about how VisionLabs worked with Nx to create a seamless integration between the LUNA Identification Platform and Nx Witness VMS.

Step 1: Getting the Metadata SDK

The Metadata SDK free, based on C++, and available on Nx Cloud.

  • The Metadata SDK is available in the Nx Cloud interface and on My Nx in the Download Page under Cross Platform SDK (at the bottom).
  • Unzip the Metadata SDK to someplace familiar and open the Readme.md file to get started.

Step 2: Utilize Sample Code & Examples

The Metadata SDK includes sample code and instructions on how to get started.

  • VisionLabs began the integration with Nx Witness VMS via the Metadata SDK by taking a look at the Stub Analytics Plugin – an example / reusable base code for speeding up integrations.
  • The Metadata SDK includes a sample Analytics Plugin written in C++ – the Stub Analytics Plugin – samples/stub_analytics_plugin/.
  • The Stub Analytics plugin receives video frames from a camera, ignores them, and generates stub metadata Objects looking as a rectangle moving randomly across the frame, and also some hard-coded Events.
  • This plugin has certain settings which allow to test various SDK features, some of its settings (those related to the Plugin object) are located in stub_analytics_plugin_ini.h.
  • The included `Stub Analytics Plugin` source files can be compiled and linked using CMake, yielding stub_analytics_plugin.dll on Windows, or libstub_analytics_plugin.so on Linux.

Step 3: Integrate with Stub Analytics Plugin as a starting point.

Vision Labs began by using the Stub Analytics Plugin as the base code for their Nx Witness Plugin.

  • Determine the best way to integrate the two systems (VisionLabs + Nx Witness) to take advantage of Nx Witness’s ability to draw bounding boxes around detected objects.
  • After connecting objects VisionLabs moved on to identifying the bounding box coordinates of detected objects and tracking the object between sequential frames.
  • The VisionLabs Luna Platform is able to detect faces and identify matching faces in their database.
  • The VisionLabs Luna Platform is also able to identify specific attributes of objects – whether or not an individual is wearing glasses, estimate age, guess gender, and guess emotional state of detected faces.
  • The objects (faces) and their associated attributes are then relayed via the Metadata SDK to Nx Witness VMS and displayed on the Nx Desktop client which draws the object’s bounding box and associated attributes as tags over live or recorded video.
  • Objects and their associated attributes are also stored in a dedicated object database in Nx Witness that enables rapid search of archived video for system operators based on object attributes (e.g. a license plate number, a person’s name, gender).

Step 4: Optimize for Performance

After VisionLabs had accomplished a basic integration they moved on to optimizing how the integration worked in Nx Witness VMS.

  • Developers working with the Metadata SDK at this stage should focus on optimizing their code for speed, accuracy, and usability for Nx Witness operators, specifically the ability to change settings on the fly,
  • After successfully integrating the LUNA Platform with Nx Meta VMP using the Stub sample as a template VisionLabs worked with Nx to optimize how to show the “Best Face” captured by the platform in the Notifications Panel of the Nx Witness Desktop client, using a specific frame to generate previews in both platforms.

Step 5: Create Custom Events

After successfully pulling video, recognizing objects, and optimizing for usability the next step is to generate and send custom events to Nx Witness VMS.

  • After optimizing the ability to pull video from Nx Meta VMP, recognize faces, and return the best face the VisionLabs team turned their attention to generating Events with the Metadata SDK to be displayed in the Notification Panel of the Nx Desktop to notify operators of successfully identified faces or unrecognized individuals.
  • During this phase Plugin developers should decide which and what type of Events the Plugin should be able to send to Nx Witness VMS.
  • Plugin events can be used by System Operators to create Rules in the Nx Witness Rules Engine to execute Actions (e.g. open a layout, show a notification, send an email, open a door, etc) based on 3rd party generated Events.
  • The Nx Witness Rules Engine allows system operators to create Rules by combining Events (like a Plugin Event) and Actions to automate System Reactions – e.g. send a notification, send an email, open a layout, etc.
  • Integrations with object-oriented platforms like VisionLabs LUNA can be used to implement entirely new business capabilities – like hands free access control during business hours.

Step 6: Create Plugin Configuration Table

The Metadata SDK allows developers to create a view to input configuration information to link Nx Witness VMS with the 3rd party system / device.

  • Plugins can require configuration or work out-of-the-box.
  • Plugin Configuration can be exposed by developers using the Plugin dialog settings via a JSON manifest.
  • VisionLabs created a Plugin configuration dialog that requires the IP Address of the LUNA server, an authentication token, and a default List ID (for recognized faces). They also have worked over time to expose additional configuration settings for the LUNA recognition engine in order to optimize recognition between Nx Witness VMS and the VisionLabs Luna Platform.

Step 7: QA - Test & Optimize

Test your plugin with Nx and optimize it before publishing.

  • Nx worked closely with the VisionLabs team to test the Luna Platform plugin across a variety of network and hardware environments.
  • Every Plugin should be extensively tested across all supported operating systems to ensure a bug-free user experience.
  • The Nx team will assist in testing Plugins in-house on request and we have a full channel of Beta testers across the Powered-by-Nx ecosystem who are ready and willing to assist in QA tests – both in controlled environments and in the wild.

Step 8: Publish and Promote

Notify Nx you're ready to publish your new Works with Nx Plugin.

  • When you’ve completed the testing and optimization of a Plugin Nx let the team know by emailing meta@networkoptix.com and we’ll help you promote your Plugin to Nx Witness Resellers, Tech Partners , and end users on the Works with Nx Marketplace and – soon – in Nx Cloud.
  • VisionLabs and Nx have teamed up to promote the Luna Platform Plugin through the Nx Witness and Powered-by-Nx channel around the world – through demo videos, exhibitions, and more.


Download Nx Witness and get 4 free licenses to try for 30 days!

Try it today