Opencv 如何处理cv::VideoCapture解码错误?

Opencv 如何处理cv::VideoCapture解码错误?,opencv,ffmpeg,h.264,decoding,ip-camera,Opencv,Ffmpeg,H.264,Decoding,Ip Camera,我正在使用OpenCV的视频捕获(使用ffmpeg支持编译)从IP摄像机中传输H264内容 到目前为止,一切正常,但每隔一段时间我就会收到解码错误(我猜是来自ffmpeg): 这些消息显示在控制台中。有没有干净的方法来听这些?我想跳过处理故障帧 有什么提示吗?我也有同样的问题。在我看来,这个问题源于这样一个事实,即发起流的源比解码流的源慢。对于解码,您可能有一个无止境的循环读取帧并解码它们,这可能比您的源发送给您的要快 我不知道怎么停下来等缓冲区满了。。我正在使用一个文件,这样我的相机源会写入一

我正在使用OpenCV的视频捕获(使用ffmpeg支持编译)从IP摄像机中传输H264内容

到目前为止,一切正常,但每隔一段时间我就会收到解码错误(我猜是来自ffmpeg):

这些消息显示在控制台中。有没有干净的方法来听这些?我想跳过处理故障帧


有什么提示吗?

我也有同样的问题。在我看来,这个问题源于这样一个事实,即发起流的源比解码流的源慢。对于解码,您可能有一个无止境的循环读取帧并解码它们,这可能比您的源发送给您的要快


我不知道怎么停下来等缓冲区满了。。我正在使用一个文件,这样我的相机源会写入一个文件,然后在解码程序中读取其中的帧。到目前为止,我还无法同步它们。最近,我解决了同样的问题,并试图解释我遵循的步骤

我更新了最新的(我将opencv_ffmpeg.dll重命名为opencv_ffmpeg310.dll以用于opencv 3.1,也将相同的dll重命名为opencv_ffmpeg2412.dll以用于opencv 2.4.12)

通过这样做,基本的帧捕获和显示变得成功,没有问题。但如果我做一些图像处理或检测,仍然会出现相同的问题,导致捕获帧之间的延迟

为了解决第二个问题,我使用一个线程连续抓取帧并更新一个全局
Mat
进行处理

您可以找到我的测试代码(它需要一些改进,比如在更新Mat时使用互斥锁和锁定内存)

我希望这些信息会有用(对不起,我的英语很差)

所说的绝对正确,opencv版本是2413,出于某种原因,我无法将opencv更新为310,我知道opencv310不会有任何类似的解码错误。因此,首先,我将libopencv\u ffmpeg310\u 64.dll复制到我的可执行文件路径E:\GITHUB\jpertspcamera\vs2013\jpertspcamera\x64\Rel轻松


然后我只需删除opencv\u ffmpeg2413.dll并将名称opencv\u ffmpeg310\u 64.dll更改为opencv\u ffmpeg2413.dll。它很有效!!!

你说得对,我有一个无休止的循环,但还没有找到解决问题的方法。我正在考虑在控制台输出中使用opencv/ffmpeg的管道,并使用frames o只有当破解过程中没有遇到解码错误,但还没有时间去实现或找到更优雅的解决方案时,我也考虑过同样的问题,但我不知道如何解决这个问题……面对同样的问题……有什么解决方案吗???我还没有尝试过,但它看起来比尝试在错误消息中插入管道要优雅得多最近我在他的博客上解释了我的方法
[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