从源码编译FFmpeg时如何启用avresample?适配aarch64平台供OpenCV使用
问题原因
FFmpeg 5.0及以上版本已经正式移除了废弃已久的avresample模块,仅保留官方推荐的swresample作为重采样组件。你当前使用的FFmpeg版本对应核心库版本号为59.x,属于5.x版本分支,因此--enable-avresample参数已经不被支持,会触发参数不识别报错。
解决方法
下面提供两种可行的适配方案:
方案1:降级FFmpeg到4.x版本
选择4.4.x这类仍保留avresample模块的LTS版本FFmpeg,重新交叉编译:
- 下载FFmpeg 4.4.x版本源码
- 编译配置时添加
--enable-avresample参数,同时确保交叉编译配置正确,示例配置片段如下:
./configure \ --cross-prefix=aarch64-none-linux-gnu- \ --arch=aarch64 \ --target-os=linux \ --prefix=<你的FFmpeg安装路径> \ --enable-shared \ --enable-gpl \ --enable-avresample \ # 其余你需要的自定义参数
- 完成FFmpeg的编译安装后,重新配置OpenCV的编译选项即可识别到
avresample。
方案2:修改OpenCV编译配置,适配高版本FFmpeg
不需要降级FFmpeg,调整OpenCV的编译参数,让其使用swresample替代avresample:
- 配置OpenCV的cmake参数时添加如下选项:
-DOPENCV_FFMPEG_USE_FIND_PACKAGE=ON \ -DOPENCV_FFMPEG_SKIP_BUILD_CHECK=OFF
- 也可以直接修改OpenCV源码中对应FFmpeg的检测cmake脚本,删除对
avresample的依赖判断,改为依赖swresample,配置完成后重新编译OpenCV,即可正常识别5.x版本的FFmpeg,VideoIO模块的FFmpeg总项会显示为YES。
额外注意事项
- 交叉编译OpenCV前,需要提前将FFmpeg安装路径下的
lib/pkgconfig目录加入PKG_CONFIG_PATH环境变量,确保cmake能正确找到所有FFmpeg相关的库文件和头文件。
内容的提问来源于stack exchange,提问作者ChrisZZ
相关产品推荐
相关产品推荐

