electricwater
electricwater
采纳率0%
2017-10-15 03:55 阅读 8.1k

opencv videocapture以rtsp读取网络摄像头时的问题

20

opencv videocapture以rtsp读取网络摄像头时,如果没网,程序就许停在那,什么都不干,既不会中断,也不会报错,也不往下执行,试过判断读取是否为空,但是在读取的时候就不往下执行了,根本没法判断,求助!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • machi_thisisneo Saeba 2017-10-15 07:35

    原因是 videocapture 裡頭有個 thread (A: consumer thread) 會一直去讀 buffer 裡面的資料, 即使沒網, 該 thread 還是會一直讀去舊資料, 所以不會報錯. 另外一個 thread (B: worker thread) 會在 driver 當中註冊一個 callback fucntion 定時把資料丟向 buffer 會從
    buffer 當中, 此時 buffer 內的資料會被一直覆蓋.

    你該做的事情有兩個. 在條件判斷中新增, 是否有網路存在. 如果沒有, 就要修改 thread A flag 參數, 讓他停下來. 另一件事是預防萬一, 要把讀進來的 buffer, 做 bit-by-bit 比較. 如果都一模一樣, 超過一秒鐘 (一秒種 30 fps, 比對 30 次) 就該修改 thread A flag 參數, 使他停下來.

    希望對你有幫助 !!

    点赞 2 评论 复制链接分享
  • weixin_34154239 weixin_34154239 2017-10-15 07:28

    嗯嗯,格式问题,格式问题,格式问题

    点赞 评论 复制链接分享
  • QTVLC QTVLC 2019-01-07 16:49

    更改opencv中的cap_ffmpeg_impl.hpp中的
    #define LIBAVFORMAT_INTERRUPT_OPEN_TIMEOUT_MS 30000
    #define LIBAVFORMAT_INTERRUPT_READ_TIMEOUT_MS 30000
    30000改小,可能会起效果.

    点赞 评论 复制链接分享

相关推荐