在 Windows 系统上搭建 FFmpeg 开发环境需要完成以下关键步骤:
一、安装必要工具
-
MSYS2(Minimal SYStem 2)
- 下载地址:https://www.msys2.org/
- 安装后更新包:
pacman -Syu pacman -Su
-
编译工具链
# 安装64位工具链 pacman -S mingw-w64-x86_64-toolchain # 安装基础开发工具 pacman -S base-devel
-
必要依赖
pacman -S mingw-w64-x86_64-yasm \ mingw-w64-x86_64-nasm \ mingw-w64-x86_64-cmake \ git
二、获取 FFmpeg 源码
git clone https://git.ffmpeg.org/ffmpeg.git
cd ffmpeg
三、编译 FFmpeg
-
配置编译选项
./configure \ --prefix=/mingw64/ffmpeg-build \ --enable-shared \ --disable-static \ --enable-gpl \ --arch=x86_64 \ --target-os=mingw32 \ --toolchain=msvc \ --enable-cross-compile
-
开始编译
make -j8 # 使用8线程加速编译 make install
四、配置 Visual Studio 开发环境
-
创建新项目
- 新建 C++ 空项目
- 配置为 x64 平台
-
包含头文件
- 项目属性 → C/C++ → 常规 → 附加包含目录:
C:\msys64\mingw64\ffmpeg-build\include
- 项目属性 → C/C++ → 常规 → 附加包含目录:
-
配置库目录
- 链接器 → 常规 → 附加库目录:
C:\msys64\mingw64\ffmpeg-build\lib
- 链接器 → 常规 → 附加库目录:
-
添加依赖库
- 链接器 → 输入 → 附加依赖项:
avcodec.lib;avformat.lib;avutil.lib;swscale.lib;
- 链接器 → 输入 → 附加依赖项:
-
设置运行时库
- C/C++ → 代码生成 → 运行库:
/MDd
(Debug) 或/MD
(Release)
- C/C++ → 代码生成 → 运行库:
五、环境变量配置
-
将 DLL 路径加入系统 PATH:
C:\msys64\mingw64\ffmpeg-build\bin
-
或将编译的 DLL 复制到项目输出目录
六、验证测试代码
#include <stdio.h>
#include <libavcodec/avcodec.h>
int main() {
printf("FFmpeg version: %s\n", av_version_info());
printf("Configuration: %s\n", avcodec_configuration());
return 0;
}
七、常见问题解决
-
链接错误 LNK2019
- 确保所有依赖库已添加
- 检查库文件路径是否正确
-
运行时缺少 DLL
# 查看依赖的 DLL ldd your_program.exe # 解决方案: # 1. 将 FFmpeg bin 目录加入 PATH # 2. 将所需 DLL 复制到 exe 同级目录
-
头文件找不到
- 检查 MSYS2 路径中的空格(建议安装在无空格路径)
- 确认包含路径大小写正确
八、高级配置选项
配置选项 | 说明 | 推荐值 |
---|---|---|
--enable-shared | 生成动态库 | ✓ 启用 |
--disable-static | 禁用静态库 | ✓ 启用 |
--enable-debug | 生成调试符号 | 开发时启用 |
--enable-gpl | 启用 GPL 许可功能 | ✓ 启用 |
--enable-libx264 | 启用 H.264 编码 | 按需启用 |
--enable-cuda | NVIDIA CUDA 加速 | 按需启用 |
九、Visual Studio 集成技巧
-
智能感知配置
<!-- 在 .vcxproj 文件中添加 --> <PropertyGroup> <IncludePath>C:\msys64\mingw64\ffmpeg-build\include;$(IncludePath)</IncludePath> </PropertyGroup>
-
调试环境配置
- 调试 → 环境:
PATH=C:\msys64\mingw64\ffmpeg-build\bin;%PATH%
- 调试 → 环境:
-
自定义生成后事件
<PostBuildEvent> <Command>xcopy /Y "C:\msys64\mingw64\ffmpeg-build\bin\*.dll" "$(OutDir)"</Command> </PostBuildEvent>
十、替代方案:使用预编译库
-
下载地址:https://www.gyan.dev/ffmpeg/builds/
-
解压后包含:
bin/
:动态链接库 (.dll)include/
:头文件lib/
:导入库 (.lib)
-
配置项目时直接引用这些目录即可
完成以上步骤后,您就可以在 Windows 平台上进行 FFmpeg 开发了。建议首次编译时使用默认配置,后续再根据项目需求添加特定编解码器支持。