我使用 OpenCV 的 VideoCapture(使用 ffmpeg 支持编译)从 IP 摄像机流式传输 H264 内容。
到目前为止,一切正常,但每隔一段时间我就会遇到解码错误(我猜是来自 ffmpeg):
[h264 @ 0x103006400] mb_type 137 in I slice too large at 26 10
[h264 @ 0x103006400] error while decoding MB 26 10
[h264 @ 0x103006400] negative number of zero coeffs at 25 5
[h264 @ 0x103006400] error while decoding MB 25 5
[h264 @ 0x103006400] cbp too large (421) at 35 13
[h264 @ 0x103006400] error while decoding MB 35 13
[h264 @ 0x103006400] mb_type 121 in P slice too large at 20 3
[h264 @ 0x103006400] error decoding MB 20 3
这些消息显示在控制台中。有没有什么干净的方式来听这些?我想跳过处理有问题的帧。
有任何提示/技巧吗?
最近我解决了同样的问题并尝试解释我遵循的步骤。
我更新了最新的opencv_ffmpeg.dll https://github.com/alalek/opencv_3rdparty/tree/ffmpeg/master_20160207/ffmpeg(我将 opencv_ffmpeg.dll 重命名为 opencv_ffmpeg310.dll 以与 OpenCV 3.1 一起使用,还重命名相同的 dll opencv_ffmpeg2412.dll 以与 OpenCV 2.4.12 一起使用
通过这样做,基本的捕获帧和显示成功,没有问题。但如果我进行一些图像处理或检测,仍然会出现同样的问题,导致捕获帧之间的延迟。
为了解决第二个问题,我使用一个线程连续抓取帧并更新全局Mat
进行加工。
here https://github.com/sturkmen72/opencv_samples/blob/master/rtsp/VideoCapture-thread-test.cpp你可以找到我的测试代码(它需要一些改进,例如在更新 Mat 时使用互斥体和锁定内存)
我希望这些信息有用(抱歉我的英语不好)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)