You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4编译带x264的OpenCV时链接自编译FFmpeg报错如何解决

问题根本原因

你遇到的链接错误由FFmpeg与OpenCV版本不兼容导致:
你使用的FFmpeg为5.x开发版本(对应libavcodec.so.59),已经移除了OpenCV 4.5.3依赖的3个旧版API:av_register_all、av_lockmgr_register、avcodec_get_context_defaults3,因此链接时无法找到对应符号。


问题排查方法

1. 查看OpenCV链接时的依赖库路径

  • 进入OpenCV编译目录,查看CMake缓存的FFmpeg配置:
grep -i ffmpeg CMakeCache.txt

输出会明确显示cmake检测到的libavcodec、libavformat等FFmpeg库的实际路径。

  • 查看完整的编译链接参数:
    编译时添加VERBOSE=1参数即可打印所有ld链接命令,确认FFmpeg相关库的路径是否正确:
make -j4 VERBOSE=1

2. 检查FFmpeg共享库是否正常

  • 首先验证FFmpeg基础功能:执行ffmpeg -version,如果能正常输出版本信息,说明共享库基础加载无问题。
  • 检查库内是否包含目标符号:
# 以检查av_register_all符号为例
nm -D /usr/lib/libavcodec.so | grep av_register_all

如果输出为空,说明当前FFmpeg库确实不存在该符号,可确认是版本不兼容问题。


解决方法

推荐选择方案1,操作门槛更低:

方案1:降级FFmpeg到4.x稳定版

  1. 卸载当前安装的FFmpeg:
sudo dpkg -r ffmpeg
  1. 下载FFmpeg 4.4版本源码(4.x系列最后一个稳定版,支持你需要的x264、树莓派OMX硬件加速等所有特性),按照你之前的配置、编译、安装流程重新部署FFmpeg。
  2. 清空OpenCV编译目录的所有缓存文件,删除CMakeCache.txt后重新执行cmake配置,注意修正cmake命令中的参数错误:原配置里OPENCV_EXTRA_MODULES_PATH参数的等号后多了空格,会导致路径识别错误,改为:
-D OPENCV_EXTRA_MODULES_PATH=$PWD/../opencv_contrib/modules
  1. 重新编译OpenCV即可解决链接错误。

方案2:给OpenCV 4.5.3打FFmpeg 5.x适配补丁

如果需要保留新版FFmpeg,可以从OpenCV官方5.x版本的提交记录中提取FFmpeg API兼容补丁,修改modules/videoio/src/cap_ffmpeg.cpp中的API调用逻辑,适配新版FFmpeg的接口,该方案对Linux操作熟练度要求较高,不推荐新手使用。


内容的提问来源于stack exchange,提问作者Drew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:36:04