如何解决释放管道时,如果电缆断开,则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 举报,一经查实,本站将立刻删除。