Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU) GPU 3080 • DeepStream Version 6.3 • JetPack Version (valid for Jetson only) • TensorRT Version • NVIDIA GPU Driver Version (valid for GPU only) 535.113.01 • Issue Type( questions, new requirements, bugs) • How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing) • Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)
Hello! I’m new to deepstream and I’m stucked in some problems. I work with 2 sources, and stream0 has a wrong path. If I release the channel 0 for error message(“Resource not found”) in bus_call function, the pipeline doesn’t continue to work for second source. I have suceed it to run the pipeline with multiple sources when one of them (execpt first one) has a wrong path in config.
My question is the next one: If the first source from config cannot start, this may lead to issuses that prevent the pipeline to run?
I’ve met this error in sample runtime_source_add_delete, when i use stop_release_source(channel_id) for sources when they are crated and one of theam has a wrong path.
In bus call, for error message I have this code changed:
elif t == Gst.MessageType.ERROR:
err, debug = message.parse_error()
struct = message.get_structure()
parsed, channel_id = struct.get_uint("stream-id")
source_name = (
str(message.parse_error()).split("/GstURIDecodeBin:")[1].split("/")[0]
)
channel_id = int(source_name.split("-")[2])
sys.stderr.write("Error: %s: %s\n" % (err, debug))
if " Resource not found" in str(err):
stop_release_source(channel_id)
print("source was released")
else:
print(" Another error except not found")
I get the next error: ‘NoneType’ object has no attribute ‘send_event’, because sinkpad has value None.
if state_return == Gst.StateChangeReturn.SUCCESS:
print("STATE CHANGE SUCCESS\n")
pad_name = "sink_%u" % source_id
print(pad_name)
#Retrieve sink pad to be released
sinkpad = streammux.get_static_pad(pad_name)
#Send flush stop event to the sink pad, then release from the streammux
sinkpad.send_event(Gst.Event.new_flush_stop(False))
streammux.release_request_pad(sinkpad)
print("STATE CHANGE SUCCESS\n")
#Remove the source bin from the pipeline
pipeline.remove(g_source_bin_list[source_id])
source_id -= 1
g_num_sources -= 1
So, the problem is when i give as arguments 2 sources, one with wrong path, it doesn’t released the channel for that source and the pipeline doesn’t run with the source that has a good path. How can i release a channel when the runtime starts in order to run just sources that are good. if they exist, else will quit the loop.
I understand that stop_release_source function is used in this sample for deleting the source and releasing the channel in runtime. I’ve used it at the beginning and i don’t undersatnd exactly why it isn’t working. How is the channel created if the source path isn’t found and similar questions.
I try to modify deepstream_rt_src_add_del.py according to your description. If there is a wrong path in it, it will not work.
This is due to the wrong path, and the uridecodebin and sink pad of streammux cannot be linked.
so sinkpad = streammux.get_static_pad(pad_name) is None
If this error is ignored, the entire pipeline will fail because it cannot enter the start state.
Error: gst-core-error-quark: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure. (4):gstbasesrc.c(3468): gst_base_src_start (): /GstPipeline:pipeline0/GstURIDecodeBin:source-bin-01/GstFileSrc:source:
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
When you meet Resource not found error, remove the wrong path branch then restart the pipeline. I don’t think other methods can start successfully.