Smart IP Camera and Plugin Overview
Cameras are getting smarter and a lot of them receive analytics capabilities. It is possible to integrate such cameras with Nx Witness as well.
To implement support for a smart IP camera, you still need to create a plugin using Metadata (Analytics) SDK, but this plugin will not utilize the video stream coming from the server. Instead, the plugin will connect to the camera using an API or protocol, retrieve metadata objects and events from the camera, and send them to the server.
- The plugin acts as ‘device-dependent’ – this should be stated in its Engine manifest
- The user won’t be able to disable it
- The Server will try to initialize the plugin for every camera it discovered
- The plugin detects if the camera is supported or not.
- For every camera, the plugin:
- does not receive the video stream from the Server
- establishes connections with the camera to receive data
- translates the data from the camera into metadata objects and events
- sends them to the Server
To implement a plugin for the specific camera model (or models), the plugin manifest should declare: "capabilities": "deviceDependent"
The Server calls the isCompatible method of the Engine and this method should check the compatibility. It is important that this method should work as fast as possible. If the Engine reports that the camera is compatible, the server will instantiate DeviceAgent automatically.
Time synchronization is very important for metadata objects. The Server uses frame timestamps to synchronize metadata objects and video. The camera must have accurate time, otherwise, the server will have to correct it, but it won’t be able to fix timestamps coming from the plugin.
Also, there is a setting ‘trust camera time’ on the Expert page in camera settings. This setting should be set by the user to true, this will prevent the Server from trying to correct timestamps received from the camera.