参考: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即可,其它删除不用
好了,接下去就开始配置吧。
1. 打开VS,新建一个Qt项目。
2.右击项目选择属性->配置属性->C/C++->常规->附加包含目录,如图所示
选择编辑这个目录,
这里编辑完成确定后,选择链接器->常规->附加库目录,并把lib目录添加到这里,如图所示。
基本的配置就差不多好了(其实还没好,后面会遇到这个问题)。
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
解决方法:右击项目,选择属性->链接器->输入->附件依赖项, 编辑依赖项,弹出如下窗口
在其后添加如下这些lib文件。
avcodec.lib
avdevice.lib
avfilter.lib
avformat.lib
swscale.lib
swresample.lib
保存后再次运行.
5.又出现错误,error LNK2026: 模块对于 SAFESEH 映像是不安全的。
解决方法:右击项目,选择链接器->命令行,在其它选项中输入如下字符串:/SAFESEH:NO
保存。重新运行。
6.再次出现错误,丢失avcodec-56.dll
解决方法:打开刚才下载的FFmpeg压缩包中的ffmpeg-2.5.2-win32-shared.7z文件夹,进入bin文件夹,把里面所有内容copy到工程目录下的Debug目录,如下所示:
好了,再次运行就可以弹出一个窗体了~等等...打印的信息去哪了???
OK,因为这里默认只弹出Qt编写的窗体,打印信息的黑窗口并没有出现,可以设置为两个都出现。
方法:右击项目,属性->链接器->系统->子系统选择控制台。保存
大功告成,可以在VS版Qt中愉快的使用FFmpeg了!
End