当前位置: 首页 > news >正文

5.2 Qt Creator 使用FFmpeg库

一、目录结构

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

二、xx.pro文件

QT -= gui
CONFIG += c++11 # console
CONFIG -= app_bundleDEFINES += QT_DEPRECATED_WARNINGS
SOURCES += main.cwin32 {# 使用 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\includeLIBS += $$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\includeLIBS += $$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测试文件

#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。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 【09】设计并实现一套面向 Agent 任务规划的 DSL 语言
  • python:使用 OpenAI CLIP 模型进行图像与文本的语义匹配,并用彩虹色带可视化 CLIP 模型的相似度矩阵
  • TodoList 案例(Vue3): 使用Composition API
  • 嵌入式开发之嵌入式系统架构如何搭建?
  • 【StarRocks系列】建表优化
  • AI与SEO关键词协同进化
  • HarmonyOS 5 NPU支持哪些AI框架?
  • 系统化的Node.js服务器搭建攻略
  • 如何用 eBPF 实现 Kubernetes 网络可观测性?实战指南
  • 读者写者问题与读写锁自旋锁
  • 文献调研[eeg溯源的深度学习方法](过程记录)
  • AI大模型学习之基础数学:微积分在AI大模型中的核心-梯度与优化(梯度下降)详解
  • 《Effective Python》第九章 并发与并行——总结(基于物流订单处理系统)
  • Flink流水线+Gravitino+Paimon集成
  • Go实战项目OneX介绍(5/12):通过测试,了解 OneX 项目的使用方式和功能
  • 微前端MFE:(React 与 Angular)框架之间的通信方式
  • c++中 Lambda表达式
  • 57-Oracle SQL Profile(23ai)实操
  • 项目练习:Jaspersoft Studio制作PDF报表时,detail和column footer之间存在很大的空白区
  • RocketMQ--为什么性能不如Kafka?
  • 南昌城市旅游网站建设/哈尔滨关键词排名工具
  • 哪个网站做免费广告好/媒体营销
  • 网站中宣传彩页怎么做的/百度软件中心下载
  • 什么网站算是h5做的/最大的推广平台
  • 如何做授权网站/培训心得体会200字
  • 黑龙江外贸网站制作/企业网络营销策划案例