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。


相关推荐
熊猫_豆豆4 分钟前
MATLAB画出湖面波纹相遇所形成的现象
开发语言·matlab·仿真
花心蝴蝶.25 分钟前
Java 中的代理模式
java·开发语言·代理模式
风语者66633 分钟前
perl踩坑系列=====正则表达式捕获
开发语言·perl
我科绝伦(Huanhuan Zhou)36 分钟前
银河麒麟V10编译perl-5.42.0,并设置环境变量
开发语言·perl
大飞pkz41 分钟前
【设计模式】享元模式
开发语言·设计模式·c#·享元模式
茉莉玫瑰花茶1 小时前
C++扩展 --- 并发支持库(补充3)
开发语言·c++
一只乔哇噻1 小时前
java后端工程师进修ing(研一版‖day49)
java·开发语言
枫叶丹41 小时前
【Qt开发】输入类控件(二)-> QTextEdit
开发语言·qt
JAVA学习通2 小时前
微服务项目->在线oj系统(Java-Spring)----[前端]
java·开发语言·前端
hrrrrb3 小时前
【Python】文件处理(二)
开发语言·python