QT结合FFmpeg音视频解码(学习笔记)——环境搭建、分析reference to ‘avcode_configuration‘问题

环境搭建

步骤一:官方网站

进入网站ffmpeg官方网站

步骤二:下载库

首先我们进入网页后可以看到如下,我把下面分成4个部分,我用不同颜色方框括起来了。
红色部分大家一般可以选择距离自己时间比较相近的版本,高版本一般是可以兼容低版本的。
蓝色部分大家根据自己QT是几位的来选择。这里解释一下,如果你QT里面使用sizeof(指针)的结果为4就是32位的。
黄色部分有三个(小箭头点一下),这三个都要下载。(分别是dev、shared、static)
绿色部分我们默认选择GPL(GPL 3.0版本比 LGPL 3.0版本更完整,因为它们可以包含 x264和 x265。)。

在这里插入图片描述

步骤三:解压处理

下载好三个文件后解压并且重命名
在这里插入图片描述

步骤四:创建一个QT项目,并且导入资源

首先,我们现在先创建一个QT项目,在工程的根目录面创建一个ffmpeg文件夹。

注意:这里不要建立影子目录!!!
注意:这里不要建立影子目录!!!
注意:这里不要建立影子目录!!!
在这里插入图片描述

然后,把ffmpeg-20200802-b48397e-win64-dev.zip解压后文件夹里的   include文件夹和lib文件夹   复制到上面的ffmpeg文件夹中。把ffmpeg-20200802-b48397e-win64-shared.zip解压后文件夹里的bin文件夹复制到到ffmpeg里去。

接着在pro文件末尾加上这段代码,表示添加第三方库。

#添加库   注意这里的  $$PWD  表示在当前目录下查找
INCLUDEPATH += $$PWD/ffmpeg/include

#添加依赖文件
LIBS    += $$PWD/ffmpeg/lib/avcodec.lib \            
	$$PWD/ffmpeg/lib/avdevice.lib \            
	$$PWD/ffmpeg/lib/avfilter.lib \            
	$$PWD/ffmpeg/lib/avformat.lib \            
	$$PWD/ffmpeg/lib/avutil.lib \            
	$$PWD/ffmpeg/lib/postproc.lib \            
	$$PWD/ffmpeg/lib/swresample.lib \            
	$$PWD/ffmpeg/lib/swscale.lib \

最后,再把ffmpeg的bin文件夹下所有的dll文件放到QT工程的debug文件夹中,这一步是为了QT工程可以正常使用动态库(即ffmpeg库的头文件那些)。

步骤五:测试

最后测试,加入代码
头文件部分

extern "C"
{
//avcodec:编解码(最重要的库)
#include <libavcodec/avcodec.h>
//avformat:封装格式处理
#include <libavformat/avformat.h>
//swscale:视频像素数据格式转换
#include <libswscale/swscale.h>
//avdevice:各种设备的输入输出
#include <libavdevice/avdevice.h>
//avutil:工具库(大部分库都需要这个库的支持)
#include <libavutil/avutil.h>
}

在main函数里面加上下面这段来测试

    qDebug("------------------------------------------------------------------------");
    qDebug("%s", avcodec_configuration());
    qDebug("version: %d", avcodec_version());
    qDebug("------------------------------------------------------------------------");

测试结果如下
在这里插入图片描述

编译出现reference to 'avcode_configuration’的问题

  1. 可能是你使用ffmpeg的一些头文件,但是你没有用extern “C” 的花括号括起来。

  2. QT编译器是32位的,但是下载的库是64位的。

猜你喜欢

转载自blog.csdn.net/l1206715877/article/details/107827633