一.写在前面
需要准备的材料:
-
qt5.13.2安装包: 下载地址:https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.13/5.13.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
瑞斯拜,瑞斯拜~*