VS2013 Qt中配置使用FFMpeg

参考:https://blog.csdn.net/huangqi734044860/article/details/60956995

开发版本VS2013 + Qt5.8,主要是为了使用VS开发Qt中使用FFmpeg,

并记录下配置FFMpeg中遇到的一些问题,方便以后查阅。

首先要下载FFMpeg,我这里下载的是2.5.2版本,打开压缩包后有三个文件夹

传送门:https://download.csdn.net/download/qq_36131739/10357076

解压ffmpeg-2.5.2-win32-dev.7z, 保留include 和 lib即可,其它删除不用

VS2013 Qt中配置使用FFMpeg_第1张图片

好了,接下去就开始配置吧。

1. 打开VS,新建一个Qt项目。

2.右击项目选择属性->配置属性->C/C++->常规->附加包含目录,如图所示

VS2013 Qt中配置使用FFMpeg_第2张图片

选择编辑这个目录,

VS2013 Qt中配置使用FFMpeg_第3张图片

这里编辑完成确定后,选择链接器->常规->附加库目录,并把lib目录添加到这里,如图所示。VS2013 Qt中配置使用FFMpeg_第4张图片

基本的配置就差不多好了(其实还没好,后面会遇到这个问题)。

3.编写测试代码。

在main函数中添加如下代码:

extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
}

using namespace std;

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);

	//测试FFmpeg,打印版本信息
	cout << "Hello FFmpeg!" << endl;
	av_register_all();
	unsigned version = avcodec_version();
	cout << "version is:" << version;

	//Qt的窗口
	VideoPlayerVS w;
	w.show();
	return a.exec();
}

4.运行后出现如下错误:

无法解析的外部符号 _avcodec_version
无法解析的外部符号 _av_register_all

VS2013 Qt中配置使用FFMpeg_第5张图片

解决方法:右击项目,选择属性->链接器->输入->附件依赖项, 编辑依赖项,弹出如下窗口

VS2013 Qt中配置使用FFMpeg_第6张图片

在其后添加如下这些lib文件。

avcodec.lib
avdevice.lib
avfilter.lib
avformat.lib
swscale.lib

swresample.lib

保存后再次运行.

5.又出现错误,error LNK2026: 模块对于 SAFESEH 映像是不安全的。

VS2013 Qt中配置使用FFMpeg_第7张图片

解决方法:右击项目,选择链接器->命令行,在其它选项中输入如下字符串:/SAFESEH:NO 

VS2013 Qt中配置使用FFMpeg_第8张图片

保存。重新运行。

6.再次出现错误,丢失avcodec-56.dll

VS2013 Qt中配置使用FFMpeg_第9张图片

解决方法:打开刚才下载的FFmpeg压缩包中的ffmpeg-2.5.2-win32-shared.7z文件夹,进入bin文件夹,把里面所有内容copy到工程目录下的Debug目录,如下所示:

VS2013 Qt中配置使用FFMpeg_第10张图片

好了,再次运行就可以弹出一个窗体了~等等...打印的信息去哪了???

OK,因为这里默认只弹出Qt编写的窗体,打印信息的黑窗口并没有出现,可以设置为两个都出现。

方法:右击项目,属性->链接器->系统->子系统选择控制台。保存

大功告成,可以在VS版Qt中愉快的使用FFmpeg了!

VS2013 Qt中配置使用FFMpeg_第11张图片

End

你可能感兴趣的:(C++,FFMpeg,Qt)