Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU) : Jetson Orin Nano
• DeepStream Version : 7.1
• JetPack Version (valid for Jetson only) : 6.2
• TensorRT Version : 10.3.0.30
I am using deepstream docker image - nvcr.io/nvidia/deepstream:7.1-triton-multiarch, in that, i used the deepstream-imagedata-multistream app for testing,
this app has this flow -
streammux -> pgie -> nvvidconv1[for taking input frame] -> filter1[converting the input buffer to rgb format] -> tiler[for displaying multiple streams] -> nvvidconv[for osd] -> nvosd[plotting prediction on the input frame] -> sink
prob is added to the tiler element for getting input frame
and there is another app - 'deepstream-test4` for sending the objects info to cloud, in my experiment, I am using redis
filesrc -> h264parser -> nvv4l2decoder -> nvstreammux -> nvinfer -> nvvideoconvert -> nvdsosd -> tee
tee -> queue1 -> nvmsgconv -> nvmsgbroker
tee -> queue2 -> sink
My plan is to get the image and then send to redis, I modified the pipeline like this -
streammux -> pgie -> nvvidconv1[for taking input frame] -> filter1[converting the input buffer to rgb format] -> tiler[for displaying multiple streams] -> nvvidconv[for osd] -> nvosd[plotting prediction on the input frame] -> tee
tee -> queue1 -> nvmsgconv -> nvmsgbroker
tee -> queue2 -> sink
Added prob tiler_sink_pad_buffer_probe to tiler, and then in the same ,
Then for each object,
user_event_meta = pyds.nvds_acquire_user_meta_from_pool(batch_meta)
if user_event_meta:
# Allocating an NvDsEventMsgMeta instance and getting
# reference to it. The underlying memory is not manged by
# Python so that downstream plugins can access it. Otherwise
# the garbage collector will free it when this probe exits.
msg_meta = pyds.alloc_nvds_event_msg_meta(user_event_meta)
msg_meta.bbox.top = obj_meta.rect_params.top
msg_meta.bbox.left = obj_meta.rect_params.left
msg_meta.bbox.width = obj_meta.rect_params.width
msg_meta.bbox.height = obj_meta.rect_params.height
msg_meta.frameId = frame_number
msg_meta.trackingId = long_to_uint64(obj_meta.object_id)
msg_meta.confidence = obj_meta.confidence
msg_meta = generate_event_msg_meta(msg_meta, obj_meta.class_id)
user_event_meta.user_meta_data = msg_meta
user_event_meta.base_meta.meta_type = pyds.NvDsMetaType.NVDS_EVENT_MSG_META
pyds.nvds_add_user_meta_to_frame(frame_meta,
user_event_meta)
else:
print("Error in attaching event meta to buffer\n")
def generate_event_msg_meta(data, class_id):
meta = pyds.NvDsEventMsgMeta.cast(data)
meta.sensorId = 0
meta.placeId = 0
meta.moduleId = 0
meta.sensorStr = "sensor-0"
meta.ts = pyds.alloc_buffer(MAX_TIME_STAMP_LEN + 1)
pyds.generate_ts_rfc3339(meta.ts, MAX_TIME_STAMP_LEN)
return meta
using this I got the object bbox in redis with msgconv payload-type as 1.
When I added the image like this -
msg_meta.extMsg = frame_bytes
msg_meta.extMsgSize = len(frame_bytes)
msg_meta = generate_event_msg_meta(msg_meta, obj_meta.class_id)
user_event_meta.user_meta_data = msg_meta
user_event_meta.base_meta.meta_type = pyds.NvDsMetaType.NVDS_EVENT_MSG_META
pyds.nvds_add_user_meta_to_frame(frame_meta,
user_event_meta)
It is not sending any data, not even the bbox also
what is the not correct, and
how to add and send the images to redis through msgconv/msgbroker
thanks