前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FFmpeg filter浅析--上篇

FFmpeg filter浅析--上篇

作者头像
雪月清
发布2022-11-19 10:13:19
7930
发布2022-11-19 10:13:19
举报
文章被收录于专栏:雪月清的随笔雪月清的随笔

filter

FFmpeg的滤镜模块AVFilter是一种以管道的方式对音视频进行滤镜(filter)操作以添加特效功能的框架

(filter翻译为过滤器更为合适,下面统一以“过滤器”为准)

原始的音频帧(如PCM)或视频帧(如YUV,RGB等)经过filter处理后,得到具有特殊效果的音频帧或视频帧,比如添加旋转、缩放、降噪效果的视频帧,添加回声效果、重采样、音量大小调节后的音频帧等

FFmpeg的libavfilter库内置了非常丰富的过滤器,从官方网站上可以看到audio filters有116个,video filters高达288个,在内置filter不满足需求时还可以自定义filter

代码语言:javascript
复制
http://ffmpeg.org/ffmpeg-filters.html

filter graphs

filter可以单独使用,也可以多个filter形成filter chain,filter chain形成filter graph,过滤器图可以划分为simple和complex

Simple filtergraphs

simple filtergraphs是指只有一个输入和一个输出,且两者都是同一个类型,即只能为音频filter或者只能为视频filter

语法要点

代码语言:javascript
复制
// -vf: 视频filter
// -af: 音频filter
// 多个filter形成链时, 用逗号分隔, filter的参数用冒号分隔
filter1,filter2,...,filterN

举例如下:

单个filter处理

代码语言:javascript
复制
ffmpeg -i oceans.mp4 -vf drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5 out.mp4

上述命令将对输入视频用线宽为2的白色线画一个3x3的网格

多个filter处理

代码语言:javascript
复制
ffmpeg -i oceans.mp4 -vf drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5,scale=w=iw/2:h=ih/2 out.mp4

上述命令先将输入视频用线宽为2的白色线画一个3x3的网格作为中间输出,然后作为scale过滤器的输入执行w/h减半的处理,最终输出out.mp4

每个过滤器需要传哪些参数可以参考官方文档,也可以用如下命令进行查询

ffmpeg -h filter=filter_name

比如上面的drawgrid过滤器

Complex filtergraphs

complex filtergraphs是指不能简单的描述为应用于一个流的线性处理链,即当图形中有多个输入/输出,或者输出流类型与输入不同

语法要点:

相同filter线性链之间用逗号分隔;

不同filter线性链之间用分号分隔;

[in_link_N]、[out_link_N]: 用来标识输入输出的标签

举例如下

代码语言:javascript
复制
/**
 * input -> split ------[main]------> overlay -> output
              |                           |
            [tmp]                      [flip]
             |                          |
             + ---> crop ---> vflip ----+
 *
*/

命令为

代码语言:javascript
复制
ffmpeg -i oceans.mp4 -vf "split[main][tmp];[tmp]crop=iw:ih/2:0:0,vflip[flip];[main][flip]overlay=0:H/2" -b:v 3859k out.mp4

上述命令先将输入文件经过split过滤器,输出main和tmp;

tmp依次经过crop过滤器和vflip过滤器,输出为flip;

main和flip输入overlay过滤器输出out文件

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雪月清的随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档