Creating a robust custom metadata provider service

Hi everyone,

I am working on projects for Aquaculture and fish feeding cameras. Some suppliers have made adapted versions of Milestone that they sell with their equipment, but we would like to only use plugins in order to maximize flexibility and updatability.

I have previously created some Smart Client plugins for a camera system, where we get two different metadata feeds over http connections. The plugin would establish a connection directly and just fetch info to display on a hardcoded associated video window.

Since we are going to add many camera systems into one Milestone system, we want to make it more proper, by the means of

  1. Make our metadata into something Milestone can accept as metadata
  2. Associate the right metadata providing devices with the right cameras
    1. Using the static IP address of the metadata providing units and the GUID of the camera
    2. In a user-friendly way
    3. Make it happen in the server instead of the client

I’ve looked at this page https://doc.developer.milestonesys.com/html/gettingstarted/intro_metadata.html

My impression is that I must make an application that fetches my data and uses the Milestone API in order to send it to the Xprotect VMS. Then, I must make another plugin(?) in order to view the data in the Xprotect Smart Client. Is it possible to show the metadata live on a camera screen without making a plugin, showing the key and value of the data? Can I show several streams on one camera picture? Where would I do the association between camera and metadata stream, and placement/size on screen?

If you want to have metadata stored in Milestone server then you need to implement a metadata provider device.

Smart Client can show bounding box metadata only so if you want to show your metadata(more than bounding box) on SC then you need to implement plugin on SC.

Hey Rie,

I’ve made an outline for such an application now, using your SDK example.

We will have 15 cameras that each need an overlay feed. It’s not really important to save the feed, only to show live. So I must then

  1. provide 15 channels of metadata to the server
  2. set up the devices that will accept this stream on the server
  3. have 1 or 15 instances of some kind of client plugin

The goal is to not have as little config on client as possible. Any ideas of how I can match together video streams and metadata streams?

I have previously made a plugin for drawing overlay on video, I need to change the source to metadata and understand how to get the correct one, as well as understand when to do it. Is metadata event-driven? Can I listen for change in metadata input on the client?

The easiest way to match together video stream and metadata stream is to assign them on Management Client, please see below picture for setting them -

Hello Rie, thank you for that information, that helps a lot with avoiding mistakes on association.