参考:https://www.cnblogs.com/WushiShengFei/p/10837264.html
参考:https://blog.csdn.net/leixiaohua1020/article/details/15811977
参考:https://blog.csdn.net/weixin_43834265/article/details/89648294
参考Qt如何添加第三方库文件:https://blog.csdn.net/qq_22374265/article/details/79349779
文末有模板例程下载
前提
一定要搞清楚自己的编译版本才选择FFMPEG的版本:不然会报错
- MSVC版本是64位的就下载64位的FFMPEG的三个文件
- MinGW版本是32位的下载32位的FFMPEG的三个文件
FFmpeg库可以使用源码编译也可以从网上下载已经编译好的库文件,这里使用从网上下载编译好的库文件。编译好的库文件
Static,Shared,Dev三个文件都要下载。
新建工程
过程略,目的为了测试FFMpeg能不能用。
我的文件结构:
在.pro文件里面添加:
INCLUDEPATH += D:/Software/FFMPEG/ffmpeg32/dev/include
LIBS += D:/Software/FFMPEG/ffmpeg32/dev/lib/libavcodec.dll.a\
D:/Software/FFMPEG/ffmpeg32/dev/lib/libavdevice.dll.a\
D:/Software/FFMPEG/ffmpeg32/dev/lib/libavfilter.dll.a\
D:/Software/FFMPEG/ffmpeg32/dev/lib/libavformat.dll.a\
D:/Software/FFMPEG/ffmpeg32/dev/lib/libavutil.dll.a\
D:/Software/FFMPEG/ffmpeg32/dev/lib/libswresample.dll.a\
D:/Software/FFMPEG/ffmpeg32/dev/lib/libswscale.dll.a\
D:/Software/FFMPEG/ffmpeg32/dev/lib/libpostproc.dll.a
或者另一种风格:参考 https://blog.csdn.net/qq_22374265/article/details/79349779
INCLUDEPATH += D:/Software/FFMPEG/ffmpeg32/dev/include
LIBS += -LD:/Software/FFMPEG/ffmpeg32/dev/lib/ -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lpostproc -lswresample -lswscale
在mainwindows.h里面添加
using namespace std;
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>
}
在mainwindows.c里面添加:
ui->setupUi(this);
qDebug() << avcodec_configuration();
unsigned version = avcodec_version();
QString ch = QString::number(version, 10);
qDebug() << "version:" << version;
不知为什么会报错
以上是由于,编译器版本与FFMPEG版本不一样导致的:我的问题是:MSVC2017 64bit + FFMPEG 32bit。所导致的,很明显版本不一样,所以无法运行将其修改成:MSVC2017 64bit + FFMPEG 64bit就没问题了。
最后
编译成功通过,但是运行不起来,这就需要把 D:\Software\FFMPEG\ffmpeg64\shared\bin 文件里面的所有 .dll文件拷贝到生成文件下 D:\Output\Qt_WGT\2.FFmpeg\1.FFmpegTest\build-FFmpegTest-Desktop_Qt_5_11_2_MSVC2017_64bit-Debug\debug 。