环境配置
1.官网下载ffmpeg和SDL的压缩包。https://www.gyan.dev/ffmpeg/builds/
2.先对ffmpeg环境配置:
其中include文件里边是需要用到的头文件,lib文件里边是需要使用的库文件。
我们使用Qt创建一个工程,接下来将上面的include文件夹和lib文件夹拷贝到工程目录下。
接下来到pro文件中添加库依赖:
#语法是 LIBS+= -L直接打地址 -l直接打库名,$$PWD则表示的是当前路径。
INCLUDEPATH += $$PWD/include
#ffmpeg
LIBS += -L$$PWD/lib/ -lavcodec
LIBS += -L$$PWD/lib/ -lavdevice
LIBS += -L$$PWD/lib/ -lavfilter
LIBS += -L$$PWD/lib/ -lavformat
LIBS += -L$$PWD/lib/ -lavutil
LIBS += -L$$PWD/lib/ -lpostproc
LIBS += -L$$PWD/lib/ -lswresample
LIBS += -L$$PWD/lib/ -lswscale
#SDL库依赖
LIBS += -L$$PWD/lib/ -lSDL2
LIBS += -L$$PWD/lib/ -lSDL2main
LIBS += -L$$PWD/lib/ -lSDL2test
先进行项目构建,最后将ffmpeg文件夹下的bin目录中的.dll文件拷贝到运行目录(debug目录)下。
3.再对SDL进行环境配置:
解压SDL包后如图所示:
将inlcude文件夹拷贝到工程目录中的inlude文件夹下,并改名为SDL2(方便后续引入头文件),如图:
同理,将SDL中的lib文件夹下的x64文件夹(我的系统是64位)下的多个.lib文件拷贝到工程目录的lib文件夹中:
接下来到pro文件中添加库依赖:如上面代码所示。
最后将lib/x64文件夹下的SDL2.dll拷贝到运行目录(debug目录)下。
最后在工程中引入头文件需注意:
extern "C"//需要按照c的方式进行编译头文件
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswresample/swresample.h"
#include "libswscale/swscale.h"
#include "libavutil/imgutils.h"
#include "SDL2/SDL.h"
}
extern "C"{
#undef main//必须在main文件添加,否则报错一大堆。用于区分QT的main函数入口和SDL2的main函数入口
}
遇到的坑:
1.将SDL2.dll加入debug文件后,运行依旧提示“无法找到SDL2.dll”错误:
解决办法:检查SDL2.dll文件是否存在于正确的位置。可以尝试将SDL2.dll文件复制到系统路径(如C:\Windows\System32)或Qt安装目录下的bin文件夹中。
2.记得在main文件加入#undef mian,这样才行。
3.版本问题,计算机系统位数必须与ffmpeg和SDL对应,否则会出现环境配置失败。