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。


相关推荐
岱宗夫up5 小时前
Python 数据分析入门
开发语言·python·数据分析
码界筑梦坊5 小时前
325-基于Python的校园卡消费行为数据可视化分析系统
开发语言·python·信息可视化·django·毕业设计
多恩Stone6 小时前
【RoPE】Flux 中的 Image Tokenization
开发语言·人工智能·python
李日灐6 小时前
C++进阶必备:红黑树从 0 到 1: 手撕底层,带你搞懂平衡二叉树的平衡逻辑与黑高检验
开发语言·数据结构·c++·后端·面试·红黑树·自平衡二叉搜索树
Risehuxyc6 小时前
备份三个PHP程序
android·开发语言·php
lly2024066 小时前
PHP Error: 常见错误及其解决方法
开发语言
网安墨雨6 小时前
Python自动化一------pytes与allure结合生成测试报告
开发语言·自动化测试·软件测试·python·职场和发展·自动化
毕设源码李师姐6 小时前
计算机毕设 java 基于 java 的图书馆借阅系统 智能图书馆借阅综合管理平台 基于 Java 的图书借阅与信息管理系统
java·开发语言·课程设计
忆~遂愿6 小时前
Runtime 上下文管理:计算实例的生命周期、延迟最小化与上下文切换优化
java·大数据·开发语言·人工智能·docker
沐知全栈开发6 小时前
PostgreSQL中的AND和OR操作符
开发语言