Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU) GPU
• DeepStream Version 6.3
• Issue Type( questions, new requirements, bugs) question
following is my deepstream pipeline
nvrurisrcbin ! pgi ! tracker ! nvvideoconvertr ! nvjpegenc ! queue ! appsink
self.pipeline.add(source_bin)
padname = "sink_%u" % stream_obj.ID
sinkpad = self.streammux.get_request_pad(padname)
if not sinkpad:
logger.error("Unable to create sink pad bin ")
return
srcpad = source_bin.get_static_pad("src")
if not srcpad:
logger.error("Unable to create src pad bin \n")
srcpad.link(sinkpad)
logger.info(f"Adding downstream elements for uri {stream_obj.uri} ID {stream_obj.ID}")
# creating queue
queue = self.make_element("queue", f"queue-{stream_obj.ID}")
queue.set_property("leaky", 2)
queue.set_property("max-size-buffers", 1)
self.pipeline.add(queue)
sink = self.make_element("appsink", f"sink-{stream_obj.ID}")
sink.set_property("emit-signals", True)
sink.set_property("max-buffers", 2)
sink.set_property("drop", True)
sink.set_property("sync", False)
self.pipeline.add(sink)
# connect tee -> queue -> appsink
padname = "src_%u" % stream_obj.ID
teesrcpad = self.tee.get_request_pad(padname)
if not teesrcpad:
logger.error("Unable to create demux src pad ")
queuesinkpad = queue.get_static_pad("sink")
if not queuesinkpad:
logger.error("Unable to create queue sink pad ")
teesrcpad.link(queuesinkpad)
queue.link(sink)
sinkpad = sink.get_static_pad("sink")
sink.connect("new-sample", self.outbound_func, stream_obj)
state_return = source_bin.set_state(Gst.State.PLAYING)
queue.set_state(Gst.State.PLAYING)
sink.set_state(Gst.State.PLAYING)
I get an error when I remove the appsink during runtime
to_remove = ['source-bin', 'queue', 'sink']
for el in to_remove:
element_name = f'{el}-{stream_obj.ID}'
try:
logger.info(f"removing element {element_name}")
element = self.pipeline.get_by_name(element_name)
state_return = element.set_state(Gst.State.PAUSED)
state_return = element.set_state(Gst.State.READY)
state_return = element.set_state(Gst.State.NULL)
logger.info(f'{element.get_state(0)}')
logger.info(f"{element_name} set to NULL, state return :{state_return}")
if el == 'source-bin' and sinkpad is not None:
sinkpad.send_event(Gst.Event.new_flush_stop(False))
self.streammux.release_request_pad(sinkpad)
elif el == 'queue':
srcpad = self.tee.get_static_pad("src_%u" % stream_obj.ID)
self.tee.release_request_pad(srcpad)
self.pipeline.remove(element)
del element
sometimes I get this error (not everytime)
17-Nov-23 14:31:57 - ERROR - Error: gst-stream-error-quark: Failed to link decodebin to pipeline (1):: gstdsnvurisrcbin.cpp(1166): populate_uri_bin_audio (): /GstPipeline:pipeline0/GstBin:source-bin-45/GstDsNvUriSrcBin:uri-decode-bin
17-Nov-23 14:31:57 - ERROR - Error: gst-stream-error-quark: Failed to populate and link video elements (1):: gstdsnvurisrcbin.cpp(872): cb_newpad (): /GstPipeline:pipeline0/GstBin:source-bin-45/GstDsNvUriSrcBin:uri-decode-bin