本文基于QT6.8实测验证。
一、下载预编译库
从官方或第三方源获取FFmpeg的Windows动态库(Shared版本),解压后需包含以下目录:
- bin
DLL文件(运行时依赖) - include
头文件 - lib
.lib或.dll.a链接库文件
官网ffmpeg库下载地址: https://www.gyan.dev/ffmpeg/builds/
比如ffmpeg-release-full-shared.7z
二、工程配置
2.1 编译配置
2.1.1 cMake场景
在CMakeLists.txt中添加如下内容:
设置头文件路径
include_directories(${PROJECT_SOURCE_DIR}/ffmpeg/include)
链接动态库
target_link_libraries(target
${PROJECT_SOURCE_DIR}/ffmpeg/lib/avcodec.lib
${PROJECT_SOURCE_DIR}/ffmpeg/lib/avformat.lib
)
2.1.2 qmake场景
Pro文件中增加如下:
INCLUDEPATH += $$PWD/ffmpeg/include
LIBS += -L$$PWD/ffmpeg/lib -lavcodec -lavformat -lavutil
2.2 移植库文件
在QT工程根目录下,创建ffmpeg目录,将下载的ffmpeg库的include目录和lib目录拷贝到ffmpeg目录下。
2.3 运行时依赖库链接
2.3.1 复制库文件
将bin目录下的avcodec-xx.dll、avformat-xx.dll、avutil-58.dll等 FFmpeg的DLL 文件复制到生成的可执行文件目录(如debug或release目录)。
2.3.2 指定库路径
通过系统环境变量指定DLL路径。
set PATH=%PATH%;FFmpeg下载库\bin
三、部分源码
main.cpp:
#include "mainwindow.h"
#include <QApplication>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
qDebug() << "FFmpeg version:" << avcodec_version();
w.show();
return a.exec();
}
四、说明
- 编译器匹配:确保Qt项目的编译器(如MinGW/MSVC)与FFmpeg库的编译工具链一致
- 位数一致:64位Qt项目需链接64位FFmpeg库
- 版本兼容性:检查FFmpeg API与Qt 6.8的兼容性,避免废弃函数导致编译错误