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呢

一个题外知识
一秒三十帧的视频为什么大小远小于三十张同等分辨率的图片?

例程
https://cloud.tencent.com/developer/article/1415557
https://blog.csdn.net/qq_43107223/article/details/109726065
https://www.jianshu.com/p/7f81637c84b4
https://blog.csdn.net/wzz953200463/article/details/115983926

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值