运行ffmpeg时提示找不到libopencv_core.so.2.4,求助解决
解决FFmpeg找不到libopencv_core.so.2.4的问题
你的问题核心很明确:当前系统安装的是OpenCV 3.4.1,但你的FFmpeg是编译时链接到旧版OpenCV 2.4的库文件,运行时自然找不到已被替换的旧库。下面给你几个可行的解决方案,按推荐程度排序:
1. 重新编译FFmpeg,适配当前OpenCV 3.4.1
这是最稳妥的长期方案,让FFmpeg直接依赖你现在的OpenCV版本:
- 先卸载现有FFmpeg:
- 如果是通过包管理器安装的,执行
sudo apt remove --purge ffmpeg - 如果是源码编译安装的,进入FFmpeg源码目录执行
sudo make uninstall
- 如果是通过包管理器安装的,执行
- 下载FFmpeg源码(可选择你需要的版本),配置编译参数时启用OpenCV支持:
配置过程中FFmpeg会自动检测系统中的OpenCV 3.4.1,编译完成后就能正常运行了。./configure --enable-opencv [其他你需要的编译参数] make -j$(nproc) sudo make install
2. 安装OpenCV 2.4与3.4.1共存
如果你不想重新编译FFmpeg,可以保留旧版OpenCV库:
- 下载OpenCV 2.4.x的源码包,编译时指定单独的安装路径,避免覆盖现有3.4.1:
mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local/opencv2.4 [其他编译参数] .. make -j$(nproc) sudo make install - 让系统能找到这个旧版库:
- 临时生效:执行
export LD_LIBRARY_PATH=/usr/local/opencv2.4/lib:$LD_LIBRARY_PATH,之后运行FFmpeg即可 - 永久生效:创建文件
/etc/ld.so.conf.d/opencv2.conf,写入/usr/local/opencv2.4/lib,然后执行sudo ldconfig
- 临时生效:执行
3. 应急方案:创建软链接(不推荐)
这个方法能快速解决问题,但可能引发其他依赖OpenCV的程序兼容性问题,仅作为临时应急:
- 先找到OpenCV 3.4.1的核心库路径,执行
find /usr/local/lib -name "libopencv_core.so.3.4" - 假设找到路径是
/usr/local/lib/libopencv_core.so.3.4,创建软链接:sudo ln -s /usr/local/lib/libopencv_core.so.3.4 /usr/local/lib/libopencv_core.so.2.4 - 执行
sudo ldconfig更新库缓存,之后尝试运行FFmpeg
额外检查步骤
你可以先执行 ldd $(which ffmpeg),查看FFmpeg的依赖列表,确认是不是确实缺失libopencv_core.so.2.4,这能帮你更精准定位问题。
内容的提问来源于stack exchange,提问作者MGM
相关产品推荐
相关产品推荐

