C++代码中使用 cv::VideoCapture
读取视频文件时,视频文件路径正确,依然无法读取视频。
我的发现并解决过程(简易版):
1. 确保图片可以正常读取
路径正确!
有读取权限!
读取图像可以成功!
2. 检查 OpenCV 编译配置
确保 OpenCV 支持 MP4 格式的视频解码。你可以检查 OpenCV 编译时是否启用了 FFmpeg:
bash cv::getBuildInformation()
查看是否包含 FFmpeg
,如果没有,你可能需要重新编译 OpenCV 支持 FFmpeg。
果然把上面的结果打印出来没看到的FFmpeg相关的内容,大概锁定原因。可能是无法读取 MP4 文件的关键原因。在 OpenCV 中,MP4 文件的读取通常依赖 FFmpeg 库来进行解码。
3. 解决方法1:重新编译 OpenCV,启用 FFmpeg
需要重新编译 OpenCV,并确保包含 FFmpeg 支持。编译步骤大致如下:
- 下载 FFmpeg 源码并进行编译,生成静态或动态库。
- 重新编译 OpenCV 时,确保启用了 FFmpeg 支持:
确保cmake -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_TOOLCHAIN_FILE=<your_android_toolchain> \ -D WITH_FFMPEG=ON \ -D OPENCV_ENABLE_NONFREE=ON \ -D BUILD_opencv_videoio=ON \ -D BUILD_opencv_highgui=ON \ <other_flags> \ ..
W