繁体   English   中英

如果网络连接中断,如何重新启动通过 udp 流式传输的 gstreamer 管道

[英]how to restart gstreamer pipeline that is streaming over udp if network connection breaks

我在 jetson xavier NX 中运行 gstreamer 管道,并通过 udp 将 4k 实时 stream 流式传输到服务器。 我正在运行一个 shell 脚本,该脚本直接使用 CLI 运行管道。 当连接中断并且 stream 断开时,管道会显示“网络无法访问”。 但是,随着网络很快自行重置,我希望管道重新启动。 如何确定管道是否已停止并重新启动? 管道停止但进程继续运行并且它不会自行重新启动。 如果管道中断,我想重新启动该过程。

正确的方法是编写自己的应用程序,而不是像已经建议的那样使用 gst-launch。 这方面的学习曲线非常陡峭,因此替代方法是监视标准错误 output 并解析消息以查找“网络无法访问”信息,终止旧进程并重新启动 gst-launch。

您可以为发件人尝试以下操作:此处使用低分辨率的 videotestsrc,在 NVMM memory 中将 HW 重新缩放为 4K,用于 H264 编码和 RTP/UDP 多播流:

gst-launch-1.0 -ev videotestsrc ! video/x-raw,width=320,height=240,framerate=30/1 ! nvvidconv ! 'video/x-raw(memory:NVMM),format=NV12,width=3840,height=2160' ! nvv4l2h264enc insert-sps-pps=1 ! h264parse ! rtph264pay config-interval=1 ! udpsink port=5000 host=224.1.1.1 

接收者:

gst-launch-1.0 -ev udpsrc port=5000 multicast-group=224.1.1.1  ! application/x-rtp,encoding-name=H264 ! rtpjitterbuffer latency=500 ! rtph264depay ! h264parse ! nvv4l2decoder ! nvvidconv ! video/x-raw,width=1920,height=1080 ! fpsdisplaysink text-overlay=0 video-sink=xvimagesink

启动或重新启动后连接和显示可能需要几秒钟,但在网络连接停止然后再次可用后似乎重新启动正常,但这仅在单个 AGX Xavier 作为发送方和接收方并使用网络管理器断开连接/重新连接。 网络上的其他情况可能更复杂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM