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
    

你可能感兴趣的:(FFplay文档解读-26-视频过滤器一)