原理
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 读取了