我在Windows 7上使用OpenCV 2.4.5来捕获RTSP流。但是我之间得到了一些损坏的图像。我发现错误是在ffmpeg层中解码。我想丢弃这些损坏的帧。但是我我无法做到这一点,因为opencv Mat :: empty永远不会返回true。 可能是造成这种情况的根本原因,请让我知道相同的解决方案。
以下是参考图片:
答案 0 :(得分:1)
解决此问题的一个方法是强制RTSP协议使用TCP作为传输。
您可以将?tcp
附加到您的网址中,例如rtsp://ip-address:port/xyz?tcp
然后将其传递给open方法。
此解决方案对我有用,我尝试过Axis,D-Link,Acti和Panasonic。
答案 1 :(得分:0)
我正在使用2.4.6并且没有这样的帧。然而,已知ffmpeg在解析h264帧时存在问题。查找ffmpeg h264解析器补丁或类似内容。使用补丁构建ffmpeg并在项目中使用它应该可以解决它。