在Windows中用MSYS2+MinGW-w64可从源码构建FFmpeg:安装MSYS2并更新,配置UCRT64环境;安装依赖库;克隆源码、configure静态编译;make并install;验证ffmpeg -version及转码功能;vcpkg为VS用户提供替代方案。

如果您希望在Windows系统中从源代码构建并运行开源软件(例如ffmpeg),需要配置编译环境、获取依赖、执行构建流程并验证可执行文件。以下是具体操作步骤:
一、安装MSYS2并配置MinGW-w64工具链
MSYS2提供类Unix环境和包管理器pacman,是Windows下编译C/C++开源项目的主流选择;其内置的MinGW-w64工具链支持生成原生Windows可执行文件,无需依赖第三方运行时。
1、访问 https://www.msys2.org 下载最新msys2-x86_64.exe安装程序。
2、运行安装程序,选择安装路径(建议避免含空格或中文的路径,如 C:\msys64)。
3、启动MSYS2 UCRT64终端(非MSYS或MINGW64),执行 pacman -Syu 更新核心包,关闭窗口后重新打开UCRT64终端。
4、再次执行 pacman -Su 完成剩余更新,随后安装基础编译工具:pacman -S base-devel mingw-w64-ucrt-x86_64-toolchain git make cmake。
二、获取FFmpeg源码与依赖库
FFmpeg依赖大量外部库(如libx264、libvpx、libmp3lame等),直接编译需预先构建或通过包管理器安装;MSYS2的pacman可快速部署常用依赖,减少手动编译负担。
1、在UCRT64终端中执行 mkdir -p ~/src && cd ~/src 创建源码工作目录。
2、使用git克隆官方FFmpeg仓库:git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg。
3、安装预编译依赖(以常用编码器为例):pacman -S mingw-w64-ucrt-x86_64-x264 mingw-w64-ucrt-x86_64-x265 mingw-w64-ucrt-x86_64-libvpx mingw-w64-ucrt-x86_64-lame mingw-w64-ucrt-x86_64-opus mingw-w64-ucrt-x86_64-freetype mingw-w64-ucrt-x86_64-fontconfig。
三、配置并编译FFmpeg源码
FFmpeg使用configure脚本生成Makefile,需指定目标平台、启用/禁用组件及依赖路径;UCRT64环境下应使用对应前缀的工具链,并确保pkg-config能识别已安装的MinGW库。
1、进入FFmpeg源码目录:cd ~/src/ffmpeg。
2、执行配置命令(启用常见编码器与解码器,静态链接避免DLL依赖):./configure --prefix=/mingw64 --enable-gpl --enable-version3 --enable-sdl2 --enable-static --disable-shared --enable-libx264 --enable-libx265 --enable-libvpx --enable-libmp3lame --enable-libopus --enable-libfreetype --enable-libfontconfig --enable-nonfree。
3、运行 make -j$(nproc) 开始并行编译;若内存不足或编译失败,改用 make -j2 降低并发数。
4、执行 make install 将生成的ffplay、ffmpeg、ffprobe安装至/mingw64/bin目录。
四、验证编译结果并调用可执行文件
编译完成后需确认二进制文件可独立运行,且能正确识别硬件特性与编解码器;由于采用静态链接,生成的ffmpeg.exe不依赖外部DLL,适合跨机部署。
1、在UCRT64终端中输入 ffmpeg -version,检查输出是否包含版本号及启用的libx264等组件标识。
2、执行 ffmpeg -encoders | grep libx264,确认h264_videotoolbox以外的libx264 encoder存在。
3、将/mingw64/bin添加至Windows系统PATH:右键“此电脑”→“属性”→“高级系统设置”→“环境变量”,在系统变量PATH中新增 C:\msys64\mingw64\bin。
4、打开CMD或PowerShell,直接运行 ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4 测试转码功能。
五、使用Visual Studio配合vcpkg构建(替代方案)
vcpkg是微软维护的C++库管理工具,支持为Visual Studio生成静态/动态链接库;适用于习惯IDE开发、需集成到大型C++项目的场景,但FFmpeg官方未完全适配vcpkg默认构建逻辑,需额外补丁。
1、下载vcpkg:git clone https://github.com/Microsoft/vcpkg.git,进入目录后执行 .\bootstrap-vcpkg.bat。
2、安装FFmpeg端口(含部分依赖):.\vcpkg install ffmpeg:x64-windows-static;若提示缺失libx264等,依次执行 .\vcpkg install x264:x64-windows-static x265:x64-windows-static vpx:x64-windows-static。
3、在Visual Studio新建空C++项目,右键项目→“属性”→“常规”→“Vcpkg集成”设为“是”,并在“C/C++→常规→附加包含目录”中添加 $(VcpkgRoot)installed\x64-windows-static\include。
4、链接器→输入→附加依赖项中填入 avcodec.lib;avformat.lib;avutil.lib;swscale.lib;swresample.lib,并设置“附加库目录”为 $(VcpkgRoot)installed\x64-windows-static\lib。










