从原理理解并解决 Opencv 无法读取视频

原理

Opencv 利用 VideoCapture 读取视频,底层是由 FFmpeg 支持解析读取视频,这个文件是 Opencv2_4_9\build\x64\vc12\bin 目录下的 opencv_ffmpeg249_64.dll,不同的 Opencv 版本名字不一样

Opencv 不能读取视频时,要去查 FFmpeg 支持的视频编码格式,而不是文件的格式

FFmpeg 支持的视频编码格式才能被 Opencv 读取

如何查看视频的编码方式:https://blog.csdn.net/CV2017/article/details/86090592

FFmpeg 支持的视频编码格式:https://blog.csdn.net/caoshangpa/article/details/51200110

视频编码格式、视频格式区别:https://www.zhihu.com/question/20997688/answer/29642529

示例

现有两个同是 MP4 文件格式的视频,1.mp4 可以被 Opencv 读取,2.mp4 无法被 Opencv 读取,这是因为 1.mp4 的编码方式为 hecv,2.mp4 编码方式为 h264,可以查 FFmpeg 支持的视频编码格式得知如下图

 可以看到 HEVC 无法被 FFmpeg 编码,而 h264 可以

解决方案

更换相机或转换视频编码方式

下载 Apowersoft视频转换王 https://www.apowersoft.cn/video-converter-studio

导入视频后,可以看到 2.mp4 为 hevc 封装格式,那么要进行下一步转换了

点击设置,确保红色圈内是 H.264后,点击确定

 

 点击输出目录右边的下箭头,选择输出的目录,然后点击转换即可,那么新转换后的视频就可以被 Opencv 读取了

猜你喜欢

转载自blog.csdn.net/CV2017/article/details/86089942