OpenSuse系统编译OpenCV时无法识别已安装FFmpeg问题求助
问题根因
- 核心错误1:
FFMPEG_INCLUDE_DIRS参数配置错误,你填写的/usr/lib64是动态库存放路径,根据你提供的FFmpeg编译配置,头文件路径应为/usr/include/ffmpeg - 核心错误2:OpenCV启用FFmpeg的编译参数为
WITH_FFMPEG而非HAVE_FFMPEG,HAVE_FFMPEG是CMake检测完成后自动生成的结果变量,手动设置无实际生效作用 - 常见遗漏:未安装FFmpeg对应的开发包,仅安装FFmpeg运行时二进制包无法提供编译所需的头文件和链接文件
解决方案步骤
- 先清理历史CMake缓存,直接删除build目录下所有文件,避免旧缓存干扰新参数生效
- 安装FFmpeg开发依赖(OpenSuse环境):
zypper install ffmpeg-3-devel libavcodec-devel libavformat-devel libavutil-devel libswscale-devel libavresample-devel
- 执行正确的CMake编译命令:
如果是编译原生OpenCV:
cmake -D CMAKE_BUILD_TYPE=Release \ -D WITH_FFMPEG=ON \ -D FFMPEG_INCLUDE_DIRS=/usr/include/ffmpeg \ -D FFMPEG_LIBDIR=/usr/lib64 \ ../opencv-4.4.0/
如果是编译opencv-python包:
cmake -D CMAKE_BUILD_TYPE=Release \ -D WITH_FFMPEG=ON \ -D FFMPEG_INCLUDE_DIRS=/usr/include/ffmpeg \ -D FFMPEG_LIBDIR=/usr/lib64 \ -D BUILD_opencv_python3=ON \ ../opencv-python-4.4.0.46/opencv/
FFmpeg检测失败调试方法
- 查看CMake日志:编译目录下
CMakeFiles/CMakeError.log和CMakeFiles/CMakeOutput.log,搜索ffmpeg、avcodec等关键词,即可定位具体失败原因(头文件缺失、库文件缺失、版本不兼容、链接符号错误等) - 开启CMake查找调试模式:执行cmake命令时添加
--debug-find参数,会打印CMake查找FFmpeg各组件的完整路径扫描过程,可直接看到对应组件未被匹配到的原因
内容的提问来源于stack exchange,提问作者Harry Boy
相关产品推荐
相关产品推荐

