【问题标题】:how to restart gstreamer pipeline that is streaming over udp if network connection breaks如果网络连接中断,如何重新启动通过 udp 流式传输的 gstreamer 管道
【发布时间】:2022-01-20 03:39:38
【问题描述】:

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

【问题讨论】:

标签: linux bash shell gstreamer nvidia-jetson


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以为发送方尝试以下操作:这里使用低分辨率的 videotestsrc,在 NVMM 内存中将硬件重新缩放为 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 上进行了测试,既是发送方又是接收方并使用网络管理器断开/重新连接。网络上的其他情况可能更复杂。

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 2018-07-19
      • 1970-01-01
      • 2015-03-14
      相关资源
      最近更新 更多