c++ ffmpeg内存推流_最简单的基于FFmpeg的AVfilter的例子

本文介绍了如何使用C++和FFmpeg库中的AVfilter实现视频特效处理,无需依赖libavcodec等其他类库。通过avfilter_graph_config()等关键函数,实现了从YUV文件到YUV文件的视频特效应用,包括去色调、模糊、水平翻转、裁剪、加方框和叠加文字等。文章提供了一个纯净版的avfilter使用示例,并展示了各种特效的实际效果。
摘要由CSDN通过智能技术生成

此前libavfilter一直是结合着libavcodec等类库的接口函数使用的,因此我一直以为libavfilter库与libavcodec等类库是高度耦合的(也就是如果想使用libavfilter的视音频特效功能的话必须使用libavcodec等类库的函数)。这两天空闲的时候研究了一下libavfilter的代码后发现实际情况不是这样的:libavfilter可以独立于libavcodec等类库的接口函数作为一个“纯粹”的视音频特效类库进行使用。本文记录的“纯净版”的avfilter的例子即实现了一个纯粹的视频特效添加的功能。该例子输入为一个YUV文件,输出也是一个YUV文件,通过avfilter的功能可以处理该YUV文件实现去色调、模糊、水平翻转、裁剪、加方框、叠加文字等功能。

流程图

该程序的流程图如下所示。AVFilter的初始化比较复杂,而使用起来比较简单。初始化的时候需要调用avfilter_register_all()到avfilter_graph_config()一系列函数。而使用的时候只有两个函数:av_buffersrc_add_frame()用于向FilterGraph中加入一个AVFrame,而av_buffersink_get_frame()用于从FilterGraph中取出一个AVFrame。

5d90ceafcc542ad00016e6728854c2d1.png

流程中的关键函数如下所示:

avfilter_register_all():注册所有AVFilter。

avfilter_graph_alloc():为FilterGraph分配内存。

avfilter_graph_create_filter():创建并向FilterGraph中添加一个Filter。

avfilter_graph_parse_ptr():将一串通过字符串描述的Graph添加到FilterGraph中。

avfilter_graph_config():检查FilterGraph的配置。

av_buffersrc_add_frame():向FilterGraph中加入一个AVFrame。

av_buffersink_get_frame():从FilterGraph中取出一个AVFrame。

代码

/**  * 最简单的基于FFmpeg的AVFilter例子 - 纯净版 * Simplest FFmpeg AVfilter Example - Pure * * 雷霄骅 Lei Xiaohua * leixiaohua1020@126.com * 中国传媒大学/数字电视技术 * Communication University of China / Digital TV Technology * http://blog.csdn.net/leixiaohua1020 *  * 本程序使用FFmpeg的AVfilter实现了YUV像素数据的滤镜处理功能。 * 可以给YUV数据添加各种特效功能。 * 是最简单的FFmpeg的AVFilter方面的教程。 * 适合FFmpeg的初学者。 * * This software uses FFmpeg's AVFilter to process YUV raw data. * It can add many excellent effect to YUV data. * It's the simplest example based on FFmpeg's AVFilter.  * Suitable for beginner of FFmpeg  * */#include  #define __STDC_CONSTANT_MACROS #ifdef _WIN32#define snprintf _snprintf//Windowsextern "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值