5.2 Qt Creator 使用FFmpeg库

一、目录结构

bash 复制代码
├─3rdparty          # 第三方依赖库
│  └─ffmpeg-4.4.3   # ffmpeg库
│      ├─mingw      # 用MinGW64编译的库
│      │  ├─bin
│      │  ├─include
│      │  └─lib
│      └─msvc       # 用MSVC编译的库
│          ├─bin
│          ├─include
│          └─lib
├─demo3.pro         # 项目配置文件
└─main.c            # 源码目录

二、xx.pro文件

bash 复制代码
QT -= gui
CONFIG += c++11 # console
CONFIG -= app_bundle

DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += main.c

win32 {
    # 使用 QT_ARCH 检测架构
    contains(QT_ARCH, x86_64) {
        message("Configuring for 64-bit")

        # 公共配置:定义安装目标路径(根据构建模式自动区分)
        CONFIG(release, debug|release) {
            ffmpeg_dlls.path = $$OUT_PWD/release  # Release模式目标路径
        } else {
            ffmpeg_dlls.path = $$OUT_PWD/debug    # Debug模式目标路径
        }
        INSTALLS += ffmpeg_dlls  # 注册安装目标

        # 编译器类型检测
        win32-msvc* {
            message("Using MSVC toolchain")
            INCLUDEPATH += $$PWD\3rdparty\ffmpeg-4.4.3\msvc\include
            LIBS += $$PWD\3rdparty\ffmpeg-4.4.3\msvc\lib\avdevice.lib   \
                    $$PWD\3rdparty\ffmpeg-4.4.3\msvc\lib\avfilter.lib   \
                    $$PWD\3rdparty\ffmpeg-4.4.3\msvc\lib\avformat.lib   \
                    $$PWD\3rdparty\ffmpeg-4.4.3\msvc\lib\avcodec.lib    \
                    $$PWD\3rdparty\ffmpeg-4.4.3\msvc\lib\swscale.lib    \
                    $$PWD\3rdparty\ffmpeg-4.4.3\msvc\lib\swresample.lib \
                    $$PWD\3rdparty\ffmpeg-4.4.3\msvc\lib\avutil.lib

            # 指定需要安装的DLL文件
            ffmpeg_dlls.files = $${FFMPEG_MSVC_DIR}\bin\*.dll
        }

        win32-g++ {
            message("Using MinGW toolchain")
            INCLUDEPATH += $$PWD\3rdparty\ffmpeg-4.4.3\mingw\include
            LIBS += $$PWD\3rdparty\ffmpeg-4.4.3\mingw\lib\libavdevice.dll.a   \
                    $$PWD\3rdparty\ffmpeg-4.4.3\mingw\lib\libavfilter.dll.a   \
                    $$PWD\3rdparty\ffmpeg-4.4.3\mingw\lib\libavformat.dll.a   \
                    $$PWD\3rdparty\ffmpeg-4.4.3\mingw\lib\libavcodec.dll.a    \
                    $$PWD\3rdparty\ffmpeg-4.4.3\mingw\lib\libswscale.dll.a    \
                    $$PWD\3rdparty\ffmpeg-4.4.3\mingw\lib\libswresample.dll.a \
                    $$PWD\3rdparty\ffmpeg-4.4.3\mingw\lib\libpostproc.dll.a   \
                    $$PWD\3rdparty\ffmpeg-4.4.3\mingw\lib\libavutil.dll.a

            # 指定需要安装的DLL文件
            ffmpeg_dlls.files =$$PWD\3rdparty\ffmpeg-4.4.3\mingw\bin\*.dll
        }
    }
    else {
        message("32-bit builds not configured")
    }
}

说明:

  • 指定安装位置和目标,当执行make install 时拷贝dll文件到输出目录。
  • 注意区分动态库导入库和静态库文件,可以通过库文件大小来判断。

三、main.c测试文件

c 复制代码
#include <stdio.h>
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
#include "libavfilter/avfilter.h"
#include "libavformat/avformat.h"
int main()
{
    printf("avcodec version is %u \n",avcodec_version());
    printf("avdevice version is %u \n",avdevice_version());
    printf("avfilter version is %u \n",avfilter_version());
    printf("avformat version is %u \n",avformat_version());
    return 0;
}

四、编译后自动拷贝dll文件

如何触发make install ?在项目设置哪里添加一个make install。


相关推荐
StockTV7 分钟前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
chaofan9807 分钟前
GPT-5.5 领衔 Image 2.0:像素级控制时代,AI 绘图告别开盲盒
开发语言·人工智能·python·gpt·自动化·api
爱码小白27 分钟前
Python 异常处理 完整学习笔记
开发语言·python
c++之路42 分钟前
C++20概述
java·开发语言·c++20
芝士就是力量啊 ೄ೨1 小时前
Python如何编写一个简单的类
开发语言·python
逻辑驱动的ken1 小时前
Java高频面试考点18
java·开发语言·数据库·算法·面试·职场和发展·哈希算法
MoonBit月兔1 小时前
「Why MoonBit 」第一期——Singularity Note AI 学习助手
开发语言·人工智能·moonbit
木木_王1 小时前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习
冷雨夜中漫步2 小时前
Claude Code源码分析——Claude Code Agent Loop 详细设计文档
java·开发语言·人工智能·ai
超龄编码人2 小时前
Qt Widgets Designer QTabWidget无法添加布局
开发语言·qt