How to output multiple rtsp streams based on deepstream-rtsp-in-rtsp-out

Now,I have implemented the access and output of rtsp stream according to here:

But I want to realize that each rtsp stream corresponds to the output of one rtsp stream, how can I do it?

You can use nvstreamdemux to demux multiple sources and use different udpsink/RtspServer. Or to make it easier you can run several python program, each program handles only one stream and output to one different UDP port.

1 Like

According to your practice, I have implemented the access and output of multiple rtsp streams, and the following is my pipeline construction diagram.
3rtsp_demux_pipline.zip (2.7 MB)

Now, I want to dynamically add or remove rtsp streams without terminating the python program. (For example, now the python program has access and output of three rtsp streams, without terminating the python program, manually add one rtsp stream to become the access and output of four rtsp streams.) Can it be implemented?

1 Like

You may refer to this example: deepstream_python_apps/apps/runtime_source_add_delete at master · NVIDIA-AI-IOT/deepstream_python_apps · GitHub

1 Like

Thanks for your answer. I use demux to implement demultiplexing of multiple sources, and implement the construction of dynamic pipelines with reference to the above example. But can the two be used in combination? It means, how to implement functions like dynamically creating uridecodebin and connecting to the pipeline. When the pipeline is running, dynamically create plug-ins such as demux’s srcpad and udpsink, and connect to the running pipeline. (I tried to manually create plugins such as udpsink in the add_sources method, and performed operations such as adding pipelines, setting states, connecting, etc., but ultimately failed)

Sorry, I wrote the code wrong, I have implemented the above function (the sink plugin is replaced by rtmp). But I am confused: uridecodebin is created and connected to the running pipeline, and the running state of uridecodebin needs to be set. I created rtmpsink, flvmux and other plug-ins here, and connected to the running pipeline, and did not set the running status of these plug-ins, and it was successfully implemented. . .


1 Like

I have also been concerned about this problem, great, can I refer to your code? Or have a blog about it,provide a link.Thank you very much.

This is the behavior of GStreamer. Generally speaking, you should set the RUNNING status when you add an element. You can refer the Gstreamer Official introduction and ask them about the confusion.

Dynamically changing the pipeline

https://gstreamer.freedesktop.org/documentation/application-development/advanced/pipeline-manipulation.html?gi-language=c#

1 Like

There is no problem, but since I am also new to deepstream, and there are still many problems with the code. I need to spend about two days to sort it out, and then I will share it with you.

image
感谢

I simply wrote a blog, welcome to exchange and learn together
[deepstream构建动态管道,在运行时添加和删除rtsp源_weixin_45941990的博客-CSDN博客]