0

0

怎么在Windows下编译和使用开源软件(如ffmpeg)【动手】

煙雲

煙雲

发布时间:2026-01-21 10:52:00

|

557人浏览过

|

来源于php中文网

原创

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

怎么在windows下编译和使用开源软件(如ffmpeg)【动手】

如果您希望在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

Quinvio AI
Quinvio AI

AI辅助下快速创建视频,虚拟代言人

下载

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

相关专题

更多
点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

183

2023.11.24

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

4

2026.01.21

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

641

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

528

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

264

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

550

2024.04.09

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

513

2024.04.09

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

621

2023.07.26

excel表格操作技巧大全 表格制作excel教程
excel表格操作技巧大全 表格制作excel教程

Excel表格操作的核心技巧在于 熟练使用快捷键、数据处理函数及视图工具,如Ctrl+C/V(复制粘贴)、Alt+=(自动求和)、条件格式、数据验证及数据透视表。掌握这些可大幅提升数据分析与办公效率,实现快速录入、查找、筛选和汇总。

0

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 9.6万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号