ffmpeg文档30-滤镜入门
2016-02-17 21:26
274 查看
30 滤镜入门
FFmpeg通过libavfilter库实现滤镜功能。
在
libavfilter中,一个滤镜可以有多个输入和多个输出。为了尽可能介绍清楚,我们假定有下面的滤镜链图。
[main] input --> split ---------------------> overlay --> output | ^ |[tmp] [flip]| +-----> crop --> vflip -------+
在这个滤镜链图中,利用
split滤镜把输入流分离成了两路流,其中一路通过
crop滤镜和
vfilp滤镜的同一路级联应用,再同另外一路一起通过
overlay滤镜处理的流合成进行输出。则可以采用如下的命令行实现:
ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
这样最终输出将是视频上部是原始,下部是上部的镜像。(倒影效果)
同一路的滤镜间用逗号(',')进行分割,不同路的滤镜间用分号(';')进行分割。在这个例子里面
crop和
vflip是在同一路中的滤镜,
split和
overlay则不是同一路的(同一路的级联是对连续的视频进行,如果涉及到一输多、多输一或者多输多则都不是在同一路的,即不是同一路级联)。可以通过在方括号('[]')中的标签名来命名处理的链路。这个例子里,
split滤镜生成了两路就通过
[main]和
[tmp]进行了标签命名以方便后续处理。
其中被
split处理输出的第二路流被命名为
[tmp],它又被
crop滤镜处理裁去下半部视频,然后通过
vflip进行了水平镜像(垂直翻转,即把视频镜像到下半部了)。这是整个输出被命名为
flip。再把
[main]与
flip通过
overlay进行覆盖合成,即把源输入通过
split滤镜获得的
[main]的上半部分覆盖到由
crop和
vflip滤镜级联处理的输出(这里的
[flip])上最终得到了镜像结果。
一些滤镜支持参数列表: 滤镜名=由冒号(':')隔开的多个参数
还存在所谓的源过滤器(即没有输入音频/视频 的过滤器),以及槽过滤器(即没有任何音频/视频 输出的过滤器)
相关文章推荐
- ORACLE无法登录错误代码 ORA-01033的解决方法
- 关于coursera上Learning How to Learn课程的读书笔记3
- Ubuntu下将文本文件转成PDF文件
- 版本控制:GitHub vs. Bitbucket
- ffmpeg文档29-放缩选项
- 注解定义和获取
- C语言之linux内核--BCD码转二进制与二进制转BCD码(笔试经典)
- C语言之linux内核--BCD码转二进制与二进制转BCD码(笔试经典)
- 【GDOI2003】排列的编码
- JavaBean
- C语言之linux内核--BCD码转二进制与二进制转BCD码
- Error: Can't set headers after they are sent.
- Codeforces Round #242 (Div. 2) <A-D>
- ffmpeg文档28-重采样选项
- 如何规避GRADLE每次都要下载的问题
- Python 17.3 WSGI接口
- POJ 3734 (快速幂)
- 中文乱码问题
- 软件工程师的鄙视链
- ffmpeg文档27-输出设备