其它过滤器文章:
day09-----1-----FFmpeg过滤器框架分析。
day09-----2-----视频过滤器实战。
day09-----3-----音频过滤器实战(ffmpeg进行混音,将两路音频pcm数据合成一路输出)。
day09-----4-----FFmpeg filter补充之使用filter添加水印。
day09-----5-----FFmpeg filter补充之使用复杂的filter过滤视频。
一 视频过滤器的流程
流程实际上就是按照这张图来的,上一篇day09-----1-----FFmpeg过滤器框架分析也有讲到。
代码具体流程为:
// 1 注册avfilter
// 2 开辟系统管理avfilter的结构体
// 3 获取输入源filter--->buffer
// 4 获取输出源sink filter--->buffersink
// 4.1 创建一个滤波器实例AVFilterContext,并添加到AVFilterGraph中(5-8也会创建对应的AVFilterContext)
// 5 获取split filter
// 6 获取crop filter(裁剪过滤器)
// 7 获取vflip filter(镜像反转过滤器)
// 8 获取overlay filter(overlay过滤器表示要保留画面的尺寸大小,例如"y=0:H/2",代表要保留原画面的一半,"y=0:H"保留原画面全部)
// 9 filter之间进行连接
// 9.1 将src filter 连接到 split filter
// 9.2 将split filter连接到overlay filter
// 9.3 将split filter连接到crop filter,注意参2的下标是1,代表是split的第二个分支,上面0代表第一个分支
// 9.4 将crop filter 连接到 vflip filter
// 9.5 将 vflip filter 连接到 overlay filter
// 9.6 最后将 overlay filter 连接到 sink filter
// 10 检查 filter graph,看上面的步骤处理是否有报错。
// 11 读取yuv数据
// 12 往buffer输入源添加帧数据
// 13 直接获取输出源数据即可。
二 代码
关于代码,因为后续需要改动,赖得每次改完后这里还得改,就不贴出来了。
三 过滤效果
这里可以对比看到第一帧的效果,上面是原视频流,下面是经过过滤处理的视频流画面。