FFplay文档解读-26-视频过滤器一

前言

Github地址:Github
简书地址:简书
专辑地址:FFplay专辑

29. 视频过滤器

配置FFmpeg构建时,可以使用--disable-filters禁用任何现有过滤器。 配置输出将显示构建中包含的视频过滤器。

以下是当前可用视频过滤器的说明。

29.1 alphaextract

从输入中提取alpha分量作为灰度视频。 这对alphamerge过滤器特别有用。

29.2 alphamerge

使用第二个输入的灰度值添加或替换主输入的alpha分量。 这旨在与alphaextract一起使用,以允许传输或存储具有不支持alpha通道的格式的alpha的帧序列。

例如,要从正常的YUV编码视频和使用alphaextract创建的单独视频重建完整帧,可以使用:

movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]       

由于此过滤器是为重建而设计的,因此它在不考虑时间戳的情况下对帧序列进行操作,并在任一输入到达流末尾时终止。 如果您的编码管道丢帧,这将导致问题。 如果您尝试将图像应用为视频流的叠加层,请考虑使用叠加层滤镜。

29.3 ass

与字幕过滤器相同,只是它不需要libavcodeclibavformat工作。 另一方面,它仅限于ASSAdvanced Substation Alpha)字幕文件。

除了字幕过滤器中的常用选项外,此过滤器还接受以下选项:

shaping

设置整形引擎

可用值包括:

参数 解释
auto 默认的libass整形引擎,它是最好的
simple 快速,与字体无关的整形器,只能进行替换
complex 使用OpenType进行替换和定位的较慢整形器

默认值是: auto

29.4 atadenoise

将自适应时间平均降噪器应用于视频输入。

过滤器接受以下选项:

0a

为第一个平面设置阈值A。 默认值为0.02。 有效范围是00.3

0b

为第一个平面设置阈值B。 默认值为0.04。 有效范围是05

1a

为第二个平面设置阈值A。 默认值为0.02。 有效范围是00.3

1b

设置第二平面的阈值B。 默认值为0.04。 有效范围是05

2a

为第3平面设置阈值A。 默认值为0.02。 有效范围是00.3

2b

为第3平面设置阈值B。 默认值为0.04。 有效范围是05

阈值A设计用于对输入信号的突然变化做出反应,阈值B设计用于对输入信号的连续变化作出反应。

s

设置帧滤波器将用于平均。 默认值为33。必须是范围[5,129]中的奇数。

p

设置帧滤波器的平面将用于平均。 默认是all

29.5 avgblur

应用平均模糊滤镜。

过滤器接受以下选项:

sizeX

设置水平内核大小。

planes

设置要过滤的平面。 默认情况下,将过滤所有平面。

sizeY

设置垂直内核大小,如果为零则与sizeX相同。 默认值为0

29.6 bbox

计算输入帧亮度平面中非黑色像素的边界框。

此过滤器计算包含亮度值大于最小允许值的所有像素的边界框。 描述边界框的参数将打印在过滤器日志中。

过滤器接受以下选项:

min_val

设置最小亮度值。 默认值为16

29.7 bitplanenoise

显示和测量位平面噪声。

过滤器接受以下选项:

bitplane

设置要分析的平面。 默认值为1

filter

从上面的bitplane滤除噪声像素。 默认为禁用。

29.8 blackdetect

检测(almost)完全黑色的视频间隔。可用于检测章节转换,商业广告或无效录制。输出行包含检测到的黑色间隔的开始,结束和持续时间,以秒为单位。

要显示输出行,需要将loglevel至少设置为AV_LOG_INFO值。

过滤器接受以下选项:

black_min_duration,d

设置以秒为单位表示的最小检测黑色持续时间它必须是非负浮点数。

默认值为2.0

picture_black_ratio_th,pic_th

设置考虑图片"black"的阈值。表达比率的最小值:

nb_black_pixels / nb_pixels

图片被认为是黑色的。默认值为0.98

pixel_black_th,pix_th

设置考虑像素"black"的阈值。

阈值表示像素被认为是"black"的最大像素亮度值。提供的值根据以下等式缩放:

absolute_threshold = luminance_minimum_value + pixel_black_th * luminance_range_size

luminance_range_sizeluminance_minimum_value取决于输入视频格式,YUV全范围格式的范围是[0-255]YUV非全范围格式的范围是[16-235]

默认值为0.10

以下示例将最大像素阈值设置为最小值,并仅检测2秒或更多秒的黑色间隔:

blackdetect = d = 2:pix_th = 0.00

29.9 blackframe

检测(almost)完全黑色的帧。 可用于检测章节转换或商业广告。 输出行包括检测到的帧的帧编号,黑度百分比,文件中的位置(如果已知)或-1以及时间戳(以秒为单位)。

要显示输出行,需要将loglevel至少设置为AV_LOG_INFO值。

此过滤器导出帧元数据lavfi.blackframe.pblack。 该值表示图片中低于阈值的像素百分比。

它接受以下参数:

amount

必须低于阈值的像素百分比; 它默认为98

threshold, thresh

像素值被认为是黑色的阈值; 它默认为32

29.10 blend, tblend

将两个视频帧相互混合。

blend滤波器采用两个输入流并输出一个流,第一个输入是"top"层,第二个输入是"bottom"层。 默认情况下,输出在最长输入终止时终止。

tblend(时间混合)滤波器从一个单独的流中获取两个连续的帧,并输出通过在旧帧的顶部混合新帧而获得的结果。

接下来的选项的描述如下:

c0_mode
c1_mode
c2_mode
c3_mode
all_mode

all_mode的情况下,为特定像素组件或所有像素组件设置混合模式。 默认值是正常的。

组件模式的可用值为:

addition
grainmerge
and
average
burn
darken
difference
grainextract
divide
dodge
freeze
exclusion
extremity
glow
hardlight
hardmix
heat
lighten
linearlight
multiply
multiply128
negation
normal
or
overlay
phoenix
pinlight
reflect
screen
softlight
subtract
vividlight
xor
c0_opacity
c1_opacity
c2_opacity
c3_opacity
all_opacity

all_opacity的情况下,为特定像素组件或所有像素组件设置混合不透明度。 仅与像素组件混合模式结合使用。

c0_expr
c1_expr
c2_expr
c3_expr
all_expr 

all_expr的情况下,为特定像素组件或所有像素组件设置混合表达式。 请注意,如果设置了相关模式选项,则将忽略它们。

表达式可以使用以下变量:

变量 解释
N 过滤帧的序号,从0开始
X
Y 当前样本的坐标
W
H 当前滤波平面的宽度和高度
SW
SH 宽度和高度比例取决于当前过滤的平面。 它是相应的亮度平面像素数与当前平面数之间的比率。 例如: 对于YUV4:2:0,亮度平面的值为1,1,色度平面的值为0.5,0.5
T 当前帧的时间,以秒为单位表示
TOP, A 第一个视频帧(顶层)当前位置的像素分量值
BOTTOM, B 第二视频帧(底层)当前位置的像素分量值

混合滤镜还支持framesync选项。

29.10.1 示例

  • 在前10秒内应用从底层到顶层的过渡:

      blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
    
  • 应用从顶层到底层的线性水平过渡:

      blend=all_expr='A*(X/W)+B*(1-X/W)'
    
  • 应用1x1 checkerboard效果:

      blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
    
  • 应用uncover lef效果:

      blend=all_expr='if(gte(N*SW+X,W),A,B)'
    
  • 应用uncover down效果:

      blend=all_expr='if(gte(Y-N*SH,0),A,B)'
    
  • 应用uncover up-left效果:

      blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
    
  • 对角线分割视频,并在每侧显示顶层和底层:

      blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
    
  • 显示当前帧和上一帧之间的差异:

      tblend=all_mode=grainextract
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容