[我正在Windows 7上使用OpenCV 2.4.5捕获RTSP流。但是我之间发现了一些损坏的图像。我发现错误是在ffmpeg层中解码的。我想丢弃这些损坏的帧。但是我无法执行此操作,因为opencv Mat :: empty永远不会返回true。这可能是根本原因,请让我知道相同的解决方案。
这里是供参考的图像:
解决此问题的一种方法可能是强制RTSP协议使用TCP作为传输工具。您可以将?tcp
附加到您的网址中,例如rtsp://ip-address:port/xyz?tcp
然后将其传递给打开方法。
此解决方案对我有用,我已经尝试过Axis,D-Link,Acti和Panasonic。
我正在使用2.4.6,没有这样的框架。但是,已知ffmpeg在解析h264帧方面存在问题。寻找ffmpeg h264分析器补丁或类似的补丁。用补丁构建ffmpeg并在您的项目中使用它应该可以解决它。
https://github.com/programmeratl/python_opencv_rtsp_recording这可能对您有帮助。记录rtsp摄像机流。