初用qt.本来是做unity的 一堆坑 记录一下吧.
qt+vs环境就不说了,网上一堆,主要是和FFmpeg结合.
首先下载ffmpeg的库
https://github.com/BtbN/FFmpeg-Builds/releases下载完的文件
下载好后.我们新建一个qt项目,新建一个文件夹,把下好的文件放进去
然后我们引入一下头文件(c的库要加extern "C"),发现报错
要在项目属性里的附加目录加上ffmpeg的头文件夹
报错解决.
我们打印下ffmpeg的版本信息,验证是否可用
#include "YHPlayer_Main.h"
#include <QtWidgets/QApplication>
#include <iostream>
using namespace std;
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
YHPlayer_Main w;
w.show();
unsigned version = avcodec_version();
cout << "version is:" << version;
return a.exec();
}
哦豁,继续报错,无法启动程序,系统找不到指定文件
无法解析的外部符号
找不到方法,我们要在项目属性里-链接器-附加库目录把ffmpeg的库目录加上去
再次运行!还是不行,我们还要在链接器-输入-附加依赖项把库写入进去
avcodec.lib
avdevice.lib
avfilter.lib
avformat.lib
swscale.lib
swresample.lib
再次运行,之前的报错没有了,现在提示 由于找不到avodec-59.dll,无法继续执行代码,重新安装程序可能会解决此问题
然后我们需要把下载的ffmpeg库里的bin文件夹里的所有文件,拷贝到我们项目的运行文件夹里,就ok了.
再次运行!成功.
不过没有打印信息,没有打印窗口
我们需要在项目属性-链接器-系统-子系统里,把窗口改成控制台,就可以了
总结:用习惯unity+c#的我,第一次使用qt都搞得头昏脑涨了,各种东西要设置,不像unity那样开箱即用,写代码也非常舒服,公司项目需要做一个音视频软件,需要同步局域网内的视频播放等等,unity不好实现+性能太差了.没办法只能学习一下qt.继续加油!
如果有大佬实现过局域网内视频同步的,麻烦联系一下我,有偿