Windows 10下编译集成libdav1d的FFmpeg问题及操作步骤求助
Windows 10 环境编译集成libdav1d的FFmpeg完整步骤
以下步骤优先满足自行编译libdav1d再集成的需求,解决你遇到的所有编译报错问题:
前置依赖准备
你之前遇到的inline语法报错、找不到lib链接器的问题,核心原因是工具链版本过旧、环境变量配置错误,先完成以下准备:
- 安装Visual Studio 2019及以上版本(VS2010不支持dav1d所需的C11标准语法),安装时勾选「使用C++的桌面开发」工作负载,确保cl.exe、link.exe、lib.exe等MSVC工具完整安装
- 安装MSYS2,不要继续使用老旧的MSYS 1.0环境
- 从Windows开始菜单打开对应VS版本的x64 Native Tools Command Prompt for VS(编译32位版本则选x86对应项),在这个终端中执行
C:\msys64\mingw64.exe启动MSYS2 MinGW 64位终端,这一步会自动加载所有MSVC工具的环境变量,解决找不到lib链接器的问题 - 在启动的MSYS2终端中执行以下命令安装基础编译工具:
pacman -Syu --needed make pkgconf yasm nasm meson ninja
步骤1:编译libdav1d源码
- 将dav1d源码放到本地目录,例如
C:\projects\dav1d - 在MSYS2终端中cd到dav1d源码目录,创建并进入build目录:
mkdir build && cd build
- 执行meson配置,指定编译参数、安装路径(可自行修改prefix后的路径):
meson setup --default-library=static --buildtype=release --prefix=/c/projects/dav1d_output
- 执行编译并安装:
ninja && ninja install
编译完成后,C:\projects\dav1d_output目录下会生成bin、include、lib、lib/pkgconfig四个目录,其中包含dav1d的头文件、静态库、dav1d.pc配置文件。
步骤2:编译集成libdav1d的FFmpeg
- 保持上述MSYS2终端环境不变,cd到FFmpeg源码目录
- 配置PKG_CONFIG_PATH,让pkg-config能识别刚才编译的dav1d:
export PKG_CONFIG_PATH=/c/projects/dav1d_output/lib/pkgconfig:$PKG_CONFIG_PATH
执行pkg-config --modversion dav1d验证,正常会输出dav1d的版本号,说明路径配置正确
3. 执行FFmpeg configure命令,和你之前的参数保持一致,添加libdav1d支持:
./configure --target-os=win64 --arch=x86_64 --toolchain=msvc --enable-shared --enable-libdav1d
- 配置无报错后执行编译:
make -j$(nproc)
编译完成后执行./ffmpeg -decoders | findstr av1,如果能看到av1 libdav1d的条目,说明集成成功。
预编译库替代方案
如果不想自行编译libdav1d,按以下步骤配置即可解决pkg-config找不到的问题:
- 下载对应架构、对应MSVC版本的libdav1d预编译库,解压到
C:\projects\dav1d_prebuilt - 找到解压后目录内的
lib/pkgconfig/dav1d.pc文件,修改prefix参数为prefix=/c/projects/dav1d_prebuilt - 按照步骤2的方法配置PKG_CONFIG_PATH,验证
pkg-config --modversion dav1d正常后,再编译FFmpeg即可。
内容的提问来源于stack exchange,提问作者thomasp
相关产品推荐
相关产品推荐

