ffmpeg过滤器系列:序章,什么是ffmpeg过滤器?ff

这是我参与更文挑战的第1天,活动详情查看: 更文挑战

前言

本文用于说明ffmpeg过滤器和ffmpeg过滤器中filters, sources和sinks用法

什么是ffmpeg

ffmpeg是个音视频流媒体处理库,可以用来支持很多种设备、协议和音视频文件的拉流、解封装,解码、编码、封装、推流以及音频特效、视频特效等等操作。

什么是ffmpeg的filter

filter是ffmpeg库中用于赋予音频和视频的特殊的特效效果,让视频和音频呈现出更特殊的效果。

ffmpeg的filter能做什么

讲了那么多,究竟能做出什么的样视频特效和音频特效呢,要搞懂这个,就得从filter的实现原理来讲了

filter的处理流程

一般的filter流程都是一个或多个输入,filter处理完后,当然也可以输出一个或者多个输出项。
我们也可以利用这个特性制作非常复杂的过滤器,来实现复杂的视频特效和音频特效。

                [main]
input --> split ---------------------> overlay --> output
            |                             ^
            |[tmp]                  [flip]|
            +-----> crop --> vflip -------+

复制代码

举个例子

ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT

这个过滤器视图是将输入流分成两个流,然后通过“裁剪”过滤器和“垂直翻转”过滤器处理后将两个流又都叠加在一起,最后合并成一个流进行输出。
我们现在还不必了解这两个“过滤器”的用法,在后续的文章中,博主会陆续更新

filter用法说明

通过上面的例子,我们已经知道可以使用很多的filter串联起来制作出很复杂的视频效果。

如何组合使用这些filter呢?

同一Filter链中的过滤器用逗号分隔,不同的Filter链用分号分隔。

在上面的示例中, crop、vflip位于一个Filter链中,split和 overlay分别位于另一个Filter链中。Filter链连接的点用方括号括起来的名称标记。
在上面示例中,split过滤器生成与标签[main]和[tmp]关联的两个输出。
发送到split的第二个输出的流,标记为 [tmp],通过裁剪过滤器处理,裁剪掉视频的下半部分,然后垂直翻转。overlay过滤器中输入,split过滤器的第一输出不变(其标记为[main]),以及overlay上通过所产生的其下半部分的输出vflip Filter链。

一些过滤器输入参数列表:它们在过滤器名称和等号之后指定,并用冒号分隔。

filter允许存在没有音频/视频输入的源过滤器和没有音频/视频输出的接收过滤器。

ffmpeg的具体filter有很多,都需要单独拆出来单独进行描述和讲解。

如果觉得博主写的还不错,欢迎“点赞,收藏,关注”一波!!!