微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

释放管道时,如果电缆断开,则rtspsrc会阻塞

如何解决释放管道时,如果电缆断开,则rtspsrc会阻塞

这是我用来显示RTSP流的管道:

gst-launch-1.0 location="rtsp://192.168.82.51:554/axis-media/media.amp?videocodec=h264" latency=150 drop-on-latency=true tcp-timeout=50000 timeout=200000 teardown-timeout=10000000 do-retransmission=false ! decodebin ! videoconvert ! autovideosink

,并且有效。 现在,如果我断开电缆连接,然后尝试取消对管道的引用,它将阻塞大约30秒钟。日志的一部分在这里

0:00:35.688277878  3264   0x7f980392d0 DEBUG                 udpsrc gstudpsrc.c:1024:gst_udpsrc_fill: stop called
0:00:35.688318848  3264   0x7f980392d0 DEBUG                basesrc gstbasesrc.c:1558:gst_base_src_default_create:<udpsrc2> fill returned -2 (flushing)
0:00:35.688355579  3264   0x7f980392d0 DEBUG                basesrc gstbasesrc.c:513:gst_base_src_wait_playing_unlocked:<udpsrc2> live source waiting for running state
0:00:35.688432490  3264   0x7f980392d0 DEBUG                basesrc gstbasesrc.c:515:gst_base_src_wait_playing_unlocked:<udpsrc2> live source unlocked
0:00:35.688464780  3264   0x7f980392d0 DEBUG                basesrc gstbasesrc.c:526:gst_base_src_wait_playing_unlocked:<udpsrc2> we are flushing
0:00:35.688496800  3264   0x7f980392d0 DEBUG                basesrc gstbasesrc.c:2653:gst_base_src_get_range:<udpsrc2> wait_playing returned -2 (flushing)
0:00:35.688527241  3264   0x7f980392d0 INFO                 basesrc gstbasesrc.c:2853:gst_base_src_loop:<udpsrc2> pausing after gst_base_src_get_range() = flushing
0:00:35.688757583  3264   0x7f980392d0 DEBUG                basesrc gstbasesrc.c:3025:gst_base_src_loop:<udpsrc2> pausing task,reason flushing
0:00:35.688863824  3264   0x55a5839050 DEBUG                basesrc gstbasesrc.c:3696:gst_base_src_set_flushing:<udpsrc2> flushing 0
0:00:35.688900794  3264   0x55a5839050 LOG                   udpsrc gstudpsrc.c:1628:gst_udpsrc_unlock_stop:<udpsrc2> No longer flushing
0:00:35.688962955  3264   0x55a5839050 DEBUG                basesrc gstbasesrc.c:3114:gst_base_src_set_allocation:<udpsrc2> deactivate old pool
0:00:35.689132167  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:8014:gst_rtspsrc_close:<rtspsrc0> Teardown on rtsp://192.168.82.51:554/axis-media/media.amp?videocodec=h264
0:00:35.689223448  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:522:default_before_send:<rtspsrc0> default handler
0:00:35.689257778  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:522:default_before_send:<rtspsrc0> default handler
0:00:35.689287658  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:6367:gst_rtspsrc_try_send:<rtspsrc0> sending message
0:00:35.689316158  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9380:gst_rtspsrc_print_rtsp_message:<rtspsrc0> --------------------------------------------
0:00:35.689347549  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9383:gst_rtspsrc_print_rtsp_message:<rtspsrc0> RTSP request message 0x7fa4a37608
0:00:35.689390209  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9384:gst_rtspsrc_print_rtsp_message:<rtspsrc0>  request line:
0:00:35.689449340  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9385:gst_rtspsrc_print_rtsp_message:<rtspsrc0>    method: 'TEARDOWN'
0:00:35.689507710  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9387:gst_rtspsrc_print_rtsp_message:<rtspsrc0>    uri:    'rtsp://192.168.82.51:554/axis-media/media.amp?videocodec=h264'
0:00:35.689562511  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9388:gst_rtspsrc_print_rtsp_message:<rtspsrc0>    version: '1.0'
0:00:35.689589891  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9390:gst_rtspsrc_print_rtsp_message:<rtspsrc0>  headers:
0:00:35.689625322  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9363:dump_key_value:<rtspsrc0>    key: 'User-Agent',value: 'GStreamer/1.16.2'
0:00:35.689652172  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9392:gst_rtspsrc_print_rtsp_message:<rtspsrc0>  body:
0:00:35.689679262  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9472:gst_rtspsrc_print_rtsp_message:<rtspsrc0> --------------------------------------------
void ifm::cam::dspl::{anonymous}::OnSurfaceChange(t_ilm_surface,ilmSurfaceProperties*,t_ilm_notification_mask)
            surface = 8388864
            mask = 0x2
0:01:06.479647990  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9380:gst_rtspsrc_print_rtsp_message:<rtspsrc0> --------------------------------------------
0:01:06.479757301  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9402:gst_rtspsrc_print_rtsp_message:<rtspsrc0> RTSP response message 0x7fa4a37660
0:01:06.479791031  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9403:gst_rtspsrc_print_rtsp_message:<rtspsrc0>  status line:
0:01:06.479831082  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9404:gst_rtspsrc_print_rtsp_message:<rtspsrc0>    code:   '200'
0:01:06.479861612  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9405:gst_rtspsrc_print_rtsp_message:<rtspsrc0>    reason: 'OK'
0:01:06.479892352  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9406:gst_rtspsrc_print_rtsp_message:<rtspsrc0>    version: '1.0
0:01:06.479922453  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9408:gst_rtspsrc_print_rtsp_message:<rtspsrc0>  headers:
0:01:06.479960243  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9363:dump_key_value:<rtspsrc0>    key: 'CSeq',value: '6'
0:01:06.479997163  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9363:dump_key_value:<rtspsrc0>    key: 'Server',value: 'GStreamer RTSP server'
0:01:06.480032784  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9363:dump_key_value:<rtspsrc0>    key: 'Session',value: '9kyYyfRp36O0tMM8; timeout=60'
0:01:06.480067724  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9363:dump_key_value:<rtspsrc0>    key: 'Date',value: 'Sun,29 Dec 2024 04:00:47 GMT'
0:01:06.480100854  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9411:gst_rtspsrc_print_rtsp_message:<rtspsrc0>  body: length 0
0:01:06.480131445  3264   0x55a5839050 LOG                  rtspsrc gstrtspsrc.c:9472:gst_rtspsrc_print_rtsp_message:<rtspsrc0> --------------------------------------------
0:01:06.480161405  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:6269:gst_rtsp_src_receive_response:<rtspsrc0> received response message
0:01:06.480193545  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:6288:gst_rtsp_src_receive_response:<rtspsrc0> got response message 200
0:01:06.480232436  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:8041:gst_rtspsrc_close:<rtspsrc0> closing connection...
0:01:06.480264636  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:5059:gst_rtsp_conninfo_close:<rtspsrc0> closing connection...
0:01:06.480415767  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:5065:gst_rtsp_conninfo_close:<rtspsrc0> freeing connection...
0:01:06.480472408  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:2336:gst_rtspsrc_cleanup:<rtspsrc0> cleanup
0:01:06.480506128  3264   0x55a5839050 DEBUG                rtspsrc gstrtspsrc.c:2272:gst_rtspsrc_stream_free:<rtspsrc0> free stream 0x7f9801d490
0:01:06.480585459  3264   0x55a5839050 DEBUG                 udpsrc gstudpsrc.c:1639:gst_udpsrc_close: closing sockets
0:01:06.481007963  3264   0x55a5839050 DEBUG                 udpsrc gstudpsrc.c:1639:gst_udpsrc_close: closing sockets
0:01:06.481383237  3264   0x55a5839050 DEBUG                basesrc gstbasesrc.c:3927:gst_base_src_change_state:<fakesrc0> PLAYING->PAUSED

我尝试过各种超时操作,但没有任何帮助。 因此,有没有一种方法可以减少从READY到NULL状态所需的时间?


我使用gstreamer 1.16.2版本,并阅读了this rtspsrc参考页。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。