Qt Windows平台调用ffmpeg动态库

发布于:2025-06-26 ⋅ 阅读:(21) ⋅ 点赞:(0)

  本文基于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的兼容性,避免废弃函数导致编译错误

网站公告

今日签到

点亮在社区的每一天
去签到