Windows下QT中引用ffmpeg库的方法

一.写在前面

需要准备的材料:

  1. qt5.13.2安装包: 下载地址:https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.13/5.13.2/

  2. ffmpeg4.2.2安装包:此处建议使用我提供的安装包:链接:https://pan.baidu.com/s/1dEPQI1hibP4CZFubH-TZ_A
    提取码:z1so

    网上的很多教程因为位数问题编译器和ffmpeg不匹配导致不能正常编译。此处我全部采用64位的版本,所以在安装qt的时候,勾选qt的编译器选项,一定要勾选mingw_64位,不然后期配置环境会有问题。

二.安装并测试qt

安装qt时,需要注意的地方只有一处:勾选所需的组件,一定要勾选mingw64位参考下图
在这里插入图片描述 (图一) 在这里插入图片描述(图二)
图二,红色部分必选,MSVC可选可不选,图一按照图中选项选上。

测试qt时,主要是测试64位编译器的正常工作:
step_one: 新建项目
在这里插入图片描述
step_two: 选取编译器
在这里插入图片描述
中间省略了一些基础步骤,不再展开,只需注意,大部分均为默认,但:文件路径和文件名均不可以是中文

step_three
在这里插入图片描述
点击红色圈起的绿三角,进行编译运行,出现窗口,即为成功。

三.引入ffmpeg库文件

step_one:解压文件到相应位置
解压得到两个文件
在这里插入图片描述
先打开dev文件夹,检查是否有include和lib文件:
在这里插入图片描述
将上面的文件夹的上一级文件夹名更改为ffmpeg,然后复制整个文件ffmpeg文件夹。
在qt项目的pro文件同级目录中新建名称为lib的文件夹,并把刚才复制的ffmpeg文件夹粘贴到lib文件夹中
在这里插入图片描述
红线所指即为新建的文件夹。将ffmpeg文件夹放在该文件夹之下。
在这里插入图片描述
可以对照上图再确认一下。

step_two:更改项目文件
在项目的pro文件中添加如下内容

INCLUDEPATH += $$PWD/lib/ffmpeg/include
LIBS += -L$$PWD/lib/ffmpeg/lib -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lpostproc -lswresample -lswscale

参考效果如下:
在这里插入图片描述
因为ffmpeg库是用C语言编写的,QT是中引用要采用extern"C"{}引入各个头文件。

extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
}

在建立的测试项目中,只有一个mainwindow类,上述代码放置于mianwindow.h文件中,参考效果如下:
在这里插入图片描述
此时静态库已经引入完成,在mainwindow中插入测试代码如下:

 unsigned version = avcodec_version();
    qDebug()<<"version:"<<version;

测试代码放在mainwindow的构造函数中,记得包含QDebug头文件。效果如图:
在这里插入图片描述
此时仅仅可以实现代码的正确调用。需要运行成功要再引入动态库。

四.引入ffmpeg动态链接

此次需要用到shared文件夹中的内容
在这里插入图片描述
复制shared下bin文件中所有的内容:
在这里插入图片描述
粘贴到项目编译后得到的文件debug文件中
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
执行完这些之后,再qt中再运行项目,得到结果如下
在这里插入图片描述
可以看到正确打印输出了版本号,说明库调用且编译成功。

*文章借鉴参考内容如下:

http://blog.yundiantech.com/?log=blog&id=7
http://blog.yundiantech.com/?log=blog&id=37
https://blog.csdn.net/qq_37348221/article/details/115407046

瑞斯拜,瑞斯拜~*

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值