1.配置ffmpeg
首先就下下载ffmpeg的压缩包并且解压https://www.gyan.dev/ffmpeg/builds/
接下来就是将解压得到的bin目录添加到环境变量中,主要是要使用其中的可执行程序和动态库。
然后新建qt程序,把ffmpeg文件中的include文件和lib文件复制到qt工程目录pro文件所在目录
下面就是到项目中配置,打开项目,找到相关的pro配置文件打开在最后添加以下代码
//添加头文件所在位置
INCLUDEPATH += $$PWD/include
//声明静态库的所在位置
LIBS += $$PWD/lib/avcodec.lib \
$$PWD/lib/avdevice.lib \
$$PWD/lib/avfilter.lib \
$$PWD/lib/avformat.lib \
$$PWD/lib/avutil.lib \
$$PWD/lib/postproc.lib \
$$PWD/lib/swresample.lib \
$$PWD/lib/swscale.lib \
这里有一个小细节,就是如果查看相关的库引用是否成功我们按住Ctrl键然后鼠标放在引用库的代码上如果可以出现下划线就代表引用成功。
接下来我们需要测试一下,然后在头文件中添加代码,因为ffmpeg源码是c语言所以引用如下方式
extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavdevice/avdevice.h>
#include <libavformat/version.h>
#include <libavutil/time.h>
#include <libavutil/mathematics.h>
#include <libavutil/imgutils.h>
}
下面我们测试在cpp文件中输出
qDebug("this version:%d",avcodec_version());
如果正确会输出版本号,但是我没有成功我遇到以下问题,如果你正确打印了版本号,就不需要看下面的内容了。
2.问题报错
我首先遇到了这个报错'undefined reference to `avcodec_version' 然后呢,经过我的查找发现是因为我使用的编译器是MinGW-32-bit,但是我下载的ffmpeg是最新的,而最新的ffmpeg大都是64位的,所以我们必须使用64位的编译器。这个时候我打算使用MSVC2017编译器,但是呢,我发现我没有配置MSVC2017这个编译器,接下来就是配置。
如果你电脑是哪个已经安装了vs2019那么是可以直接使用MSVC2019的,没有的话需要去下载相应的MSVC2017生成工具和相应的windows SDK,我没有下载MSVC2017,因为我发现2019也是可行的。
接下来配置,一次点击qt项目左侧的项目,然后右键标圈的MSVC2017,点击Manage kits
进入后找到msvc2017,分别配置Complier和Debugger,找到c和c++编译器的位置,他会自动检测你电脑中的MSVC,把两个都选择MSVC2019-64-bit相应的即可。
然后是配置debugger
这个地方一般也是会自动加测出的,但是如果检测不出相关的SDK我们需要一些操作,首先找到控制面板——程序——程序和功能——找到windows Software Development kits然后右键change勾选如下
结束后在debugger 位置就会自动检测出SDK了。
之后就是配置完成,虽然那个还是会显示感叹号,但是我发现是可以使用的没有任何报错。
选择配置好的MSVC2017再次执行程序打印了相应版本号