libavfilter介绍
libavfilter是FFmpeg提供的滤波器类,可以用其做一些音视频处理,如音视频倍速、水平翻转、裁剪、加方框、叠加文字等功能。
例如之前介绍过的音频重采样,视频的像素格式转换,本质上也是滤波,所以libavfilter也可以实现libswresample、libswscale提供的对音视频格式变换的功能。
1、基本概念:
libavfilter结构类似于directShow,可以同时存在多个filter(滤波器)。
每个filter具有input及output端口,经过filter后,音视频数据会根据滤波器特性进行相应处理。
一个filter的output可以和另一个filter的input link起来,多个filter组合后统一到libavfilter的Graph(滤波器组图表)之中。第一个滤波器称为src,它只有output端口,最后一个滤波器称为sink,它只有input端口。
使用时,用户将数据放入src中,经过多个filter处理后,从sink获取处理后的数据。
2、基本结构:
一整个滤波的流程称为滤波过程。下面是一个滤波过程的结构
结构体AVFilterGraph 用于统合这整个滤波过程的结构体,代表所有滤波器整合的图表。
滤波所用到的各个结构体,各个结构体有如下作用:
AVFilter
滤波器,滤波器的实现是通过AVFilter以及位于