其他分享
首页 > 其他分享> > Qt使用ffmpeg

Qt使用ffmpeg

作者:互联网

最终,还是逃不过要使用这个,一直看到却一直没正式了解它的库:ffmpeg。
这个库简单的说就是用来对视频进行各种处理的:读取、格式转换、播放等等。

目前我是在windows下,在Qt里面使用它的。

首先,到这里下载(通过官网也可以跳转到这里)。

我下载的是 ffmpeg-n4.4-latest-win64-lgpl-shared-4.4。你可以根据自己的需求下载。
然后在Qt里面引入库以及头文件

INCLUDEPATH += D:/Qt/ffmpeg/ffmpeg-n4.4-latest-win64-lgpl-shared-4.4/include
LIBS += -LD:/Qt/ffmpeg/ffmpeg-n4.4-latest-win64-lgpl-shared-4.4/lib\
-lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswresample -lswscale

接着就可以在Qt中愉快地使用了。

需要注意的是,在include ffmpeg的头文件时,需要增加extern “C”,

extern "C"{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}

否则会出现类似下面的问题:

mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "int __cdecl avformat_alloc_output_context2(struct AVFormatContext * *,struct AVOutputFormat *,char const *,char const *)" (?avformat_alloc_output_context2@@YAHPEAPEAUAVFormatContext@@PEAUAVOutputFormat@@PEBD2@Z),该符号在函数 "public: __cdecl MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QEAA@PEAVQWidget@@@Z) 中被引用

此外,ffmpeg4.x版本一些函数的用法和之前不太一样,所以查到网上的代码时,需要根据手册自行修正。
ffmpeg4.x为什么不再需要调用av_register_all呢

标签:lgpl,ffmpeg,win64,使用,shared,include,Qt
来源: https://blog.csdn.net/joyopirate/article/details/122453254