Windows下Aubio(aubioonset.exe)无法找到FFmpeg库的求助
Windows下Aubio调用FFmpeg库失败的解决方案
一、预编译Aubio二进制运行报错问题
运行aubioonset.exe时出现如下错误:
C:/Peter/aubio/aubio/aubio-0.4.6-win64-ffmpeg/bin/aubioonset.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory
确实是FFmpeg依赖库找不到导致的,解决步骤:
- 下载64位FFmpeg开发包(注意是带头文件和库文件的
dev包,不是普通的bin运行包),版本尽量和Aubio预编译包适配 - 解压后进入
bin目录,找到avcodec-*.dll、avformat-*.dll、avutil-*.dll这三个核心DLL文件 - 把这几个DLL复制到Aubio的
bin目录(也就是C:/Peter/aubio/aubio/aubio-0.4.6-win64-ffmpeg/bin/),直接覆盖原有文件(如果有) - 重新运行
aubioonset.exe即可正常使用
二、自行编译Aubio时无法检测到FFmpeg的问题
从你的./waf configure输出看,核心问题是没找到pkg-config,导致无法自动检测FFmpeg路径。以下是具体解决步骤:
1. 准备FFmpeg开发环境
- 下载64位FFmpeg开发包(
ffmpeg-*-win64-dev.zip),解压到固定路径,比如C:\ffmpeg-win64-dev,这个目录下会有include(头文件)和lib(静态/动态库)两个子目录
2. 设置环境变量
- 打开系统环境变量设置,添加两个系统变量:
FFMPEG_INCLUDE_DIR:值设为C:\ffmpeg-win64-dev\includeFFMPEG_LIB_DIR:值设为C:\ffmpeg-win64-dev\lib
- 或者在编译前的命令行里临时设置(仅当前会话有效):
set FFMPEG_INCLUDE_DIR=C:\ffmpeg-win64-dev\include set FFMPEG_LIB_DIR=C:\ffmpeg-win64-dev\lib
3. 修改Aubio的waf配置文件
因为Windows下没有pkg-config,需要手动指定FFmpeg路径:
- 进入Aubio源码目录,打开
wscript文件 - 搜索
libav或ffmpeg找到检测FFmpeg的代码块,把原来依赖pkg-config的检测代码替换成手动指定路径的逻辑:# 替换原有check_cfg的代码 conf.check_cxx(includes=os.environ.get('FFMPEG_INCLUDE_DIR', ''), libpath=os.environ.get('FFMPEG_LIB_DIR', ''), libs=['avcodec', 'avformat', 'avutil'], uselib_store='LIBAV', mandatory=False) - 保存修改后的
wscript
4. 重新编译Aubio
- 打开VS2017的x64 Native Tools Command Prompt(必须用这个,保证编译环境是64位MSVC)
- 进入Aubio源码目录,依次执行:
./waf configure --with-ffmpeg ./waf build ./waf install - 此时
configure步骤应该能成功检测到FFmpeg库,编译完成后的Aubio就会带有FFmpeg支持
内容的提问来源于stack exchange,提问作者Peter Wirdemo
相关产品推荐
相关产品推荐

