I have a python based application which is building the pipeline that I want. However, I cannot find any way to parse the frame-based meta data being attached by nvyolo. I have used a “PadProbe” on the sink of nvyolo, but I don’t see how I can parse that data, and regardless, I am seeing only 8 bytes. I have also experimented with nvmsgconv with the same result.
Questions:
Can this be done?
What python tools are there to decode NVDS_META_PAYLOAD values?
Is there a cap-filter I can apply to nvmsgconv that gives me straight JSON as text?
I don’t want to use nvosd in my pipeline (probably not an issue)
that example of osd_sink_pad_buffer_probe() uses a number of C structs: NvDsMeta, NvDsObjectParams, NvDsFrameMeta … Do I need to work with these in Python myself (ctypes, struct, etc)? It will be fragile stuff if I start doing that.
this might not suite your application but what I have chosen
to do in the past was go down the MQTT route.
Using the gst-dsexample plugin we used C++ paho mqtt
and created a publisher. This for us had a lot of advantages,
in your case you could create a c++ mqtt publisher and a pyton
mqtt subscriber and pull the meta data that way.
MQTT is great, and I would say makes sense as something nvdsgst_msgbroker should be able to do natively.
However, I want my python code to have real-time control over the gst pipeline. In particular, I want it to act on the nvyolo meta data and capture some parts of the realtime video as it is identified. My system is realtime.
Listening to these suggestions, I’m going to reverse-engineer the relevant C structs and parse the data in python.