My platform is GPU and I am using DeepStream 6.1 with 8.2.5 TensorRT. Driver Version: 510.85.02
Basically, I want first to check all the URLs and find the working ones. And in the next stage connect only the working sources. For checking URLs I am using “GstPbutils.Discoverer”
Gst.init(None)
discoverer = GstPbutils.Discoverer()
status = []
for i, path_ in enumerate(Sources):
try:
info = discoverer.discover_uri(path_)
if info.get_video_streams():
print('# Stream OK', path_)
status.append(True)
else:
print('Stream Not OK!')
status.append(False)
except Exception as e:
print('Error while opening # video removed it from Sources list.', path_, e)
status.append(False)```
The problem is when I use pre-source checking, my obtained boxes fluctuate. I am adding the sample image.

For example, for 50 frames it works fine, then suddenly these meaningless boxes pop up.
What’s the behavior if you skip the checking (by GstPbutils.Discoverer) and run inference on this source directly? The extra bounding boxes seem to be from your inference of the model but not removed by post processing (such as NMS).
GstPbutils.Discoverer is just a tool to get the uri information. The key is how do you handle the pipeline with the information. Please debug your implementation to find out the impatc to the pipeline.
I guess this is a bug in the system or something. After obtaining whether the source is active or not I handle it as the following way.
for i in range(number_sources):
if status[i]:
print("Creating source_bin ",i," \n ")
uri_name=Sources[i]
uri_names.append(uri_name)
if uri_name.find("rtsp://") == 0 :
is_live = True
source_bin=create_uridecode_bin(i, uri_name)
if not source_bin:
sys.stderr.write("Unable to create source bin \n")
g_source_bin_list[i] = source_bin
pipeline.add(source_bin)
padname="sink_%u" %i
else:
print(f"ALERT ! {Processed_Sources[i]} is not working. Not adding the source to stream at beginning, will work on it after!")
Note: For sake of debugging, I just commented GstPbutils.Discoverer part and fill the status list with fake data (ex : [True, True, False, False]). This time everything works just fine. This proves that the problem is exactly in GstPbutils.Discoverer part.
Again let me stress one more time that the problem did not arise when I fakely fill some values to the status list. But it arises when it is filled by actual values gotten from discoverer.discover_uri(path_).
I have checked the ‘GstPbutils.Discoverer’ in one of the python sample apps. However, it works perfectly.
I am using custom YOLO implementation of the Deepstream. The same code made meaningless bboxes. The only main difference is the custom implementation of nvdsinfer. How does ‘GstPbutils.Discoverer’ affect the result?
There is no update from you for a period, assuming this is not an issue anymore. Hence we are closing this topic. If need further support, please open a new one. Thanks
Can you provide a method to reproduce the failure?