最简单的基于FFmpeg的AVfilter的例子 纯净版

本文介绍了一个基于FFmpeg的纯AVfilter视频特效处理例子,无需依赖libavcodec等库。通过流程图展示了如何使用avfilter初始化和操作,包括去色调、模糊、水平翻转等特效。提供了源码下载链接和效果展示。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

=====================================================

最简单的基于FFmpeg的AVfilter例子系列文章:

最简单的基于FFmpeg的AVfilter例子(水印叠加)

最简单的基于FFmpeg的AVfilter的例子-纯净版

=====================================================


 有关FFmpeg的avfilter已经写过一个水印叠加的例子《最简单的基于FFmpeg的AVfilter例子(水印叠加)》,本文作为补充再记录一个纯净版的avfilter的例子。此前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。


流程中的关键函数如下所示:
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 <stdio.h>#define __STDC_CONSTANT_MACROS#ifdef _WIN32#define snprintf _snprintf//Windowsextern
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值