在 Windows 系统中配置 FFmpeg 并集成到 Qt 项目需要以下步骤:
1. 下载 FFmpeg 开发包
步骤说明
-
访问 FFmpeg Windows 预编译包
推荐从以下地址下载官方提供的预编译开发包(包含头文件和库文件):-
Gyan.dev FFmpeg Builds
选择ffmpeg-release-full-shared.7z
(动态链接库)或ffmpeg-release-full-static.7z
(静态链接库)。
开发推荐使用shared
版本,包含动态库和开发文件。
-
-
解压文件
将下载的.7z
文件解压到系统目录(例如C:\ffmpeg
),目录结构如下:C:\ffmpeg ├── bin # 动态链接库(.dll) ├── include # 头文件(.h) └── lib # 静态/动态库文件(.lib)
2. 配置系统环境变量
添加 FFmpeg 到 PATH
-
右键点击 “此电脑” → 属性 → 高级系统设置 → 环境变量。
-
在 “系统变量” 中找到
Path
,点击 编辑 → 新建,添加 FFmpeg 的bin
目录路径:C:\ffmpeg\bin
这一步确保运行时能找到 FFmpeg 的动态库(.dll)。
3. 在 Qt 项目中配置 FFmpeg
修改 .pro
文件
在 Qt 项目的 .pro
文件中添加以下配置:
# FFmpeg 头文件路径
INCLUDEPATH += "C:/ffmpeg/include"
# FFmpeg 库文件路径
LIBS += -L"C:/ffmpeg/lib"
# 链接 FFmpeg 核心库
LIBS += -lavcodec -lavformat -lavutil -lswresample -lswscale -lavfilter
注意:路径中的反斜杠 \
需改为正斜杠 /
,并用引号包裹路径(避免空格问题)。
4. 处理动态库(DLL)
方式一:运行时自动加载(推荐)
确保将 C:\ffmpeg\bin
添加到系统 PATH
(已通过步骤 2 完成),运行时系统会自动找到 DLL。
方式二:手动复制 DLL
将 C:\ffmpeg\bin
目录下的所有 .dll
文件复制到以下位置之一:
-
Qt 编译输出目录(例如
build/release
) -
系统目录(如
C:\Windows\System32
,不推荐)
5. 验证配置
编写测试代码
在 Qt 项目中添加以下代码,验证 FFmpeg 是否配置成功:
cpp
#include <QDebug>
extern "C" {
#include <libavcodec/avcodec.h>
}
void testFFmpeg() {
qDebug() << "FFmpeg 版本:" << av_version_info();
}
运行后应输出类似:FFmpeg 版本: "n6.0"
6. 常见问题解决
错误1:找不到头文件
-
现象:编译时报错
fatal error: libavcodec/avcodec.h: No such file or directory
。 -
解决:检查
.pro
文件中的INCLUDEPATH
路径是否正确。
错误2:链接库失败
-
现象:报错
undefined reference to avcodec_register_all()
。 -
解决:
-
确认
.pro
文件的LIBS
路径和库名称正确。 -
检查库文件是否存在(如
avcodec.lib
在C:\ffmpeg\lib
目录下)。
-
错误3:运行时缺少 DLL
-
现象:程序运行时崩溃,提示
缺少 avcodec-60.dll
。 -
解决:确保
C:\ffmpeg\bin
已加入系统PATH
或手动复制 DLL 到程序目录。
7. 静态链接(可选)
如需静态链接(不依赖外部 DLL),需以下额外配置:
-
下载 静态库版本(
ffmpeg-release-full-static.7z
)。 -
在
.pro
文件中添加静态链接选项:# 静态链接标志 LIBS += -lavcodec -lavformat -lavutil -lswresample -lswscale -lavfilter -liconv -lz -lbz2 -lbcrypt
注意:静态链接需手动处理依赖库(如
zlib
,iconv
等)。
总结
通过以上步骤,你可以在 Windows 系统中成功配置 FFmpeg,并在 Qt 项目中调用其功能处理音频/视频文件。动态链接方式简单易用,适合快速开发;静态链接则适用于需要独立分发的场景。