Developing a custom device driver or Developing a plugin

Hello everyone,

We are working on a project where we have an RTSP video source that also provides real-time location information (metadata) associated with the video stream (e.g. GPS coordinates or similar telemetry).

We would like to integrate both the video and the live metadata into Milestone XProtect, so that:

  • The video is handled as a standard camera stream

  • The location data is available as live metadata (and ideally recordable/searchable)

From the Milestone SDK point of view, we are not fully sure about the best architectural approach and would appreciate some guidance.

Specifically, we are considering two options:

  1. Developing a custom device driver

    • The driver would handle the RTSP streaming

    • And push the associated metadata using MetadataLiveContent from the Milestone SDK

  2. Developing a plugin

    • Using an existing RTSP camera configuration

    • And injecting the metadata separately via the Metadata API

Our main questions are:

  • What is the recommended approach for this kind of use case?

  • Is a custom device driver the correct way when video and metadata are tightly coupled?

  • Or is it better to rely on an existing RTSP device and handle metadata purely via a plugin?

  • Are there any reference examples or best practices for live metadata associated with video streams?

Any pointers, documentation references, or architectural recommendations would be very helpful.

Thank you in advance.

Developing a custom driver would be the recommendation here.

When using this option there will be a tight coupling. Both the camera device and the metadata device will be under the same hardware device in the Management Client.

While it is possible to create an application that would feed metadata through an existing driver this does not ensure the coupling. I will not recommend this route.

There is a very good sample that includes metadata channels, please explore the Demo Driver sample.

I also recommend to read Introduction to the MIP Driver Framework and Introduction to metadata

We are exploring the “GPS Metadata Provider” (https://doc.developer.milestonesys.com/mipsdk/samples/ComponentSamples/GpsMetadataProvider/README.h… that creates a virtual hardware and adds location metadata. I’ve also looked at the sample plugin that visualizes this metadata. (https://github.com/milestonesys/mipsdk-samples-plugin/tree/main/LocationView)

In our setup, we already have cameras registered in Milestone coming from RTSP server streams. I would like to know if it’s possible to use a similar approach to link location metadata to these existing cameras, instead of creating new drivers.

What we need is a process similar to “GPS Metadata Provider” that will inject this type of metadata into a camera that we already have registered in the system.

Any guidance or similar experiences would be very helpful. Thanks in advance!

After adding the GPS Metadata Provider as a device in XProtect, the next step is to associate it with the camera. In the Management Client, select the camera, go to the Client tab in the Properties pane, and under Related metadata click the Browse (…) button to locate and select the appropriate metadata device.

This association step can be automated by developing an application, service, or Management Client plugin that performs the linkage programmatically using classes such as VideoOS.Platform.ConfigurationItems.Camera.

If you want the camera and metadata devices to appear as part of the same hardware unit, this can be achieved by developing a driver. Whether this additional effort is worthwhile depends on your specific requirements and preferences.

If you have further questions or need clarification, feel free to ask.