Deepstream + GStreamer Daemon access metadata and frames to upload to a server

• Jetson
• 5.0
• Jetpack 4.5
• TensorRT Version
• Question

Hello, we have an application where we are running deepstream with several instances of nvinfer running. We are running all of these under GStreamer Daemon, so we have no direct, easy access to the gstreamer buffers and metadata directly. Our goal is to upload inference data, and a filepath to a saved image of the frame, to a webserver.

The issues we have is that we cannot access the gstreamer buffers and metadata directly. Our requirement for uploading an image also makes using nvmsgbroker/nvmsgconv insufficient, as we do not have access to the buffer data there as well (please correct this if we can indeed access the data, the sample file provided is not very descriptive of what we can/cannot do, and there doesn’t seem to be any documentation on this).

Is there any method for saving the arriving frames to a file, and formatting then uploading the metadata to a webserver without direct access to the buffers? Maybe something with multifilesink? The only solution we can think of is a custom GStreamer plugin.

Even with the IPC tool GStreamer Daemon, there should be a deepstream app(process) runing, what is the deepstream application? The sample deepstream-app(DeepStream Reference Application - deepstream-app — DeepStream 5.1 Release documentation) or an application you wrote?

Its an application we wrote, unfortunately as mentioned the deepstream app is running on the daemon so we do not have access to it directly.

Why don’t you implement the “upload inference data, and a filepath to a saved image of the frame, to a webserver” functions inside the deepstream application?

Sorry, it seems I did not mention this, but the GStreamer Daemon can only accept input pipelines in the gst-launch syntax, so we cannot provide it with any executable code or custom implementations outside of what we can achieve with gst-launch

Deepstream can save the output to local files or send out as RTSP stream as normal gstreamer app.

Yes I understand that, but we need to send a JSON payload along with the filepath of the frame with the detection on it to a server, so just saving them as local files or outputting an RTSP stream is not enough

With just gst-launch capability, deepstream can do nothing with GStreamer Daemon, and there is no extra IPC mechanism in deepstream.