gstreamer管道rtspsrc重新连接
我试图添加一些功能来将我的rtspsrc重新连接到IP摄像头。 当应用程序启动时,一切正常。 然后我重新启动IP摄像机以模拟连接问题。 当在rtsp连接的消息总线上收到错误时,rtspsrc会在这些状态中移动:暂停 - >空 - >准备 - >播放。 我还发现,重新启动后(rtph264depay),我需要将rtspsrc src焊盘重新链接到下一个元素的接收器焊盘。 我只将src打击垫和视频帽连接起来(这是流水线在工作时最初启动的方式)。
这是事情变得模糊的地方。 连接到autovideosink(名称= autovideosinkHome下面)的视频输出仍然冻结。 要查看数据停止的位置,我将一个阻塞探针逐个添加到管道链中的每个缓冲区,放下所有缓冲区并查看数据是否到达每个缓冲区。 在我下面的第一条管道中,没有在autovideosink前面有一个队列,数据一直到达autovideosink的sink pad。 然而,一旦我移除了阻塞探针,在autovideosink之前,我将得到以下错误:
gstpasesrc.c(2950):void gst_base_src_loop(GstPad *)():/ GstPipeline:pipeline0 / GstRTSPSrc:rtsp_Home / GstUDPSrc:udpsrc6:流停止,原因错误(-5)
它看起来像-5等同于一个DATA_FLOW_ERROR。 如果我在autovideosink前添加一个queue2元素,数据流会很快停下来(但不会出错)
这里是没有队列的管道:
rtspsrc debug = true retry = 200 timeout = 0 latency = 1000 ntp-sync = false drop-on-latency = false max-size-buffers = 2000 max-size-bytes = 6144000 max-size-time = 1000000000 probation = 200 do -retransmission = true max-rtcp-rtp-time-diff = -1 name = rtsp_Home udp-buffer-size = 6144000 location = rtsp://192.168.1.15:554 / h264Preview_01_main! rtph264depay name = branch_rtsp_Home! h264parse! 解码器! videoconvert! autovideosink name = autovideosinkHome async = false
带队列(与上述相同直到流水线结束):
....! 队列2! autovideosink name = autovideosinkHome async = false
当我重新启动源时,是否有任何事情需要我做准备管道或接收器?
链接地址: http://www.djcxy.com/p/43989.html