FFplay文档解读-38-视频过滤器十三
前言
Github
地址:Github
简书地址:简书
专辑地址:FFplay专辑
29.120 pad
将填充添加到输入图像,并将原始输入放在提供的x,y坐标处。
它接受以下参数:
width, w
height, h
使用添加的填充指定输出图像大小的表达式。如果width
或height
的值为0
,则相应的输入大小用于输出。
width
表达式可以引用高度表达式设置的值,反之亦然。
width
和height的
默认值为0
。
x
y
指定偏移以将输入图像相对于输出图像的top/left
边界放置在填充区域内。
x
表达式可以引用y
表达式设置的值,反之亦然。
x
和y
的默认值为0
。
如果x
或y
计算为负数,则它们将被更改,因此输入图像以填充区域为中心。
color
指定填充区域的颜色。有关此选项的语法,请检查(ffmpeg-utils
)颜色语法。
颜色的默认值为black
。
eval
指定何时评估宽度,高度,x
和y
表达式。
它接受以下值:
值 | 结果 |
---|---|
init | 仅在过滤器初始化期间或处理命令时计算表达式一次 |
frame | 评估每个传入帧的表达式 |
默认值是:‘init’
。
aspect
填充方面而不是分辨率。
width
,height
,x
和y
选项的值是包含以下常量的表达式:
in_w
in_h
输入视频的宽度和高度。
iw
ih
这些与in_w
和in_h
相同。
out_w
out_h
输出宽度和高度(填充区域的大小),由width
和height
表达式指定。
ow
oh
这些与out_w和out_h相同。
x
y
x
和y
偏移量由x和y表达式指定,如果尚未指定,则为NAN
。
a
和iw/ih
一样
sar
输入样本宽高比
dar
输入显示宽高比,与(iw/ih)* sar
相同
hsub
vaus
水平和垂直色度子样本值。 例如,对于像素格式yuv422p
,hsub
为2
,vsub
为1
。
29.120.1 示例
-
在输入视频中添加颜色为“紫色”的填充。 输出视频大小为
640x480
,输入视频的左上角位于第0
列第40
行。pad=640:480:0:40:violet
上面的示例等效于以下命令:
pad=width=640:height=480:x=0:y=40:color=violet
-
填充输入以获得尺寸增加
3/2
的输出,并将输入视频放在填充区域的中心:pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
-
填充输入以获得大小等于输入宽度和高度之间的最大值的平方输出,并将输入视频放在填充区域的中心:
pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
-
填充输入以获得
16:9
的最终w/h
比率:pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
-
在变形视频的情况下,为了正确设置输出显示方面,有必要在表达式中使用
sar
,根据以下关系:(ih * X / ih) * sar = output_dar X = output_dar / sar
因此,前面的示例需要修改为:
pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
-
将输出大小加倍并将输入视频放在输出填充区域的右下角:
pad="2*iw:2*ih:ow-iw:oh-ih"
29.121 palettegen
为整个视频流生成一个调色板。
它接受以下选项:
max_colors
设置调色板中要量化的最大颜色数。 注意:调色板仍然包含256
种颜色; 未使用的调色板条目将为黑色。
reserve_transparent
创建最多255
种颜色的调色板,并保留最后一种透明度。 保留透明度颜色对于GIF
优化很有用。 如果未设置,则调色板中的最大颜色将为256
。可能希望为独立图像禁用此选项。 默认设置。
transparency_color
设置将用作透明背景的颜色。
stats_mode
设置统计模式。
它接受以下值:
值 | 解释 |
---|---|
full | 计算全帧直方图 |
diff | 仅计算与先前帧不同的部分的直方图。 如果背景是静态的,这可能与更重视输入的移动部分有关 |
single | 计算每个帧的新直方图 |
默认值是:full
。
过滤器还会导出帧元数据lavfi.color_quant_ratio(nb_color_in / nb_color_out)
,可以使用它来评估调色板的颜色量化程度。 此信息在信息记录级别也可见。
29.121.1 示例
-
使用
ffmpeg
生成给定视频的代表性调色板:ffmpeg -i input.mkv -vf palettegen palette.png
29.122 paletteuse
使用调色板对输入视频流进行下采样。
过滤器有两个输入:一个视频流和一个调色板。 调色板必须是256
像素的图像。
它接受以下选项:
dither
选择抖动模式。 可用的算法如下:
算法 | 解释 |
---|---|
bayer | Ordered 8x8 bayer dithering (deterministic) |
heckbert |
Paul Heckbert 在1982 年定义的抖动(简单误差扩散)。 注意:这种抖动有时被认为是wrong (错误的),并作为参考 |
floyd_steinberg |
Floyd 和Steingberg 抖动(误差扩散) |
sierra2 |
Frankie Sierra 抖动 v2(误差扩散) |
sierra2_4a |
Frankie Sierra 抖动 v2Lite (误差扩散) |
默认值是:sierra2_4a
。
bayer_scale
选择拜耳抖动时,此选项定义图案的比例(交叉线图案可见多少)。 较低的值意味着更明显的图案用于较少的条带,而较高的值意味着较少的可见图案以较多的条带为代价。
该选项必须是[0,5]
范围内的整数值。 默认值为2
。
diff_mode
如果设置,请定义要处理的区域:
区域 | 解释 |
---|---|
rectangle | 仅重新处理更改的矩形。 这类似于GIF 裁剪/抵消压缩机制。 如果只有一部分图像在变化,此选项对于速度非常有用,并且具有使用案例,例如将误差差异‘dither’ 的范围限制为限制移动场景的矩形(如果是,则会导致更确定的输出 场景变化不大,结果减少了移动噪音和更好的GIF 压缩) |
默认值是:none
。
new
为每个输出帧选择新的调色板。
alpha_threshold
设置透明度的alpha
阈值。 高于此阈值的Alpha
值将被视为完全不透明,低于此阈值的值将被视为完全透明。
该选项必须是[0,255]
范围内的整数值。 默认值为128
。
29.122.1 示例
-
使用调色板(例如使用
palettegen
生成)使用ffmpeg
对GIF
进行编码:ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
29.123 perspective
正确的视频透视不垂直于屏幕记录。
接下来的参数的描述如下:
x0
y0
x1
y1
x2
y2
x3
y3
设置左上角,右上角,左下角和右下角的坐标表达式。 默认值为0:0:W:0:0:H:W:H,哪个透视图保持不变。 如果sense选项设置为source,则指定的点将被发送到目标的角落。 如果sense选项设置为destination,则源的角将被发送到指定的坐标。
表达式可以使用以下变量:
变量 | 解释 |
---|---|
W | |
H | 视频帧的宽度和高度 |
in | 输入帧数 |
on | 输出帧数 |
interpolation
设置透视校正的插值。
它接受以下值:
参数 |
---|
linear |
cubic |
默认值是:‘linear’
。
sense
设置坐标选项的解释。
它接受以下值:
参数 | 解释 |
---|---|
0, source | 将给定坐标指定的源中的点发送到目标的角 |
1, destination | 将源的角发送到给定坐标指定的目标中的点 |
默认值是:‘source’
。
eval
在计算坐标x0,y0,... x3,y3
的表达式时设置。
它接受以下值:
值 | 解释 |
---|---|
init | 仅在过滤器初始化期间或处理命令时评估表达式 |
frame | 计算每个传入帧的表达式 |
默认值是:‘init’
。
29.124 phase
将隔行扫描视频延迟一个场时间,以便字段顺序发生变化。
预期用途是将以相反场顺序捕获的PAL
电影固定到电影到视频传输。
接下来的参数的描述如下:
mode
设置相位模式。
它接受以下值:
值 | 解释 |
---|---|
t | 捕获字段顺序排在前面,先转移到底部。 过滤器将延迟底部字段 |
b | 捕获字段顺序排在后面,先转移到顶部。 过滤器将延迟顶部字段 |
p | 使用相同的字段顺序捕获和传输。 此模式仅适用于要引用的其他选项的文档,但如果实际选择它,则过滤器将忠实地执行任何操作 |
a | 捕获字段顺序由字段标志自动确定,转移相反。 滤波器使用场标志逐帧地在t 和b 模式中进行选择。 如果没有可用的字段信息,那么这就像‘u’ 一样 |
u | 捕获未知或变化,转移相反。 过滤器通过分析图像并选择在字段之间产生最佳匹配的替代方案,逐帧选择t 和b
|
T | 捕获前5 名,转移未知或变化。 过滤器使用图像分析在t 和p 之间进行选择 |
B | 捕获底部优先,转移未知或变化。 过滤器使用图像分析在b 和p 之间进行选择 |
A | 捕获由字段标志确定,传输未知或变化。 过滤器使用字段标志和图像分析在't' ,'b' 和'p' 中进行选择。 如果没有可用的字段信息,那么这就像'U' 一样。 这是默认模式 |
U | 捕获和传输都是未知的或变化的。 过滤器仅使用图像分析在t ,b 和p 中进行选择 |
29.125 pixdesctest
像素格式描述符测试过滤器,主要用于内部测试。 输出视频应等于输入视频。
例如:
format=monow, pixdesctest
可用于测试monowhite
像素格式描述符定义。
29.126 pixscope
显示颜色通道的样本值。 主要用于检查颜色和级别。 支持的最低分辨率为640x480
。
过滤器接受以下选项:
x
设置范围X
位置,X
轴上的相对偏移。
y
设置范围Y
位置,Y
轴上的相对偏移。
w
设置范围宽度。
h
设置范围高度。
o
设置窗口不透明度。 该窗口还包含有关像素区域的统计信息。
wx
设置窗口X
位置,X
轴上的相对偏移。
wy
设置窗口Y
位置,Y
轴上的相对偏移。
29.127 pp
使用libpostproc
启用指定的后处理子过滤器链。 应该使用GPL
构建(--enable-gpl)
自动选择此库。 子过滤器必须用'/'
分隔,并且可以通过添加' - '
来禁用。 每个子过滤器和一些选项具有可以互换使用的短名称和长名称,即dr / dering
是相同的。
过滤器接受以下选项:
subfilters
设置后处理子过滤字符串。
所有子过滤器都有共同的选项来确定它们的范围:
a/autoq
尊重此子过滤器的质量命令。
c/chrom
也进行色度过滤(默认)。
y/nochrom
仅进行亮度滤波(无色度)。
n/noluma
仅进行色度过滤(无亮度)。
这些选项可以附加在子过滤器名称后面,以“|”
分隔。
可用的子过滤器是:
‘hb/hdeblock[|difference[|flatness]]’
水平去块滤波器。
参数 | 解释 |
---|---|
difference | 差异因素,其中较高的值意味着更多的解块(默认值:32 ) |
flatness | 平坦度阈值,其中较低的值表示更多解块(默认值:39 ) |
vb/vdeblock[|difference[|flatness]]
垂直去块滤波器。
参数 | 解释 |
---|---|
difference | 差异因素,其中较高的值意味着更多的解块(默认值:32 ) |
flatness | 平坦度阈值,其中较低的值表示更多解块(默认值:39 ) |
ha/hadeblock[|difference[|flatness]]
精确的水平去块滤波器。
参数 | 解释 |
---|---|
difference | 差异因素,其中较高的值意味着更多的解块(默认值:32 ) |
flatness | 平坦度阈值,其中较低的值表示更多解块(默认值:39 ) |
va/vadeblock[|difference[|flatness]]
精确的垂直去块滤波器。
参数 | 解释 |
---|---|
difference | 差异因素,其中较高的值意味着更多的解块(默认值:32 ) |
flatness | 平坦度阈值,其中较低的值表示更多解块(默认值:39 ) |
水平和垂直去块滤波器共享差值和平坦度值,因此无法设置不同的水平和垂直阈值。
h1/x1hdeblock
实验水平解块滤波器。
v1/x1vdeblock
实验垂直去块滤波器。
dr/dering
Deringing
过滤器。
tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer’
参数 | 解释 |
---|---|
threshold1 | larger -> stronger filtering |
threshold2 | larger -> stronger filtering |
threshold3 | larger -> stronger filtering |
al/autolevels[:f/fullyrange], automatic brightness / contrast correction
参数 | 解释 |
---|---|
f/fullyrange | 拉伸亮度为0-255
|
lb/linblenddeint | 线性混合反交错滤波器,通过使用(1 2 1) 滤波器过滤所有行来解除给定块的隔行扫描 |
li/linipoldeint
线性插值去隔行滤波器,通过每隔一行线性插值来对给定块进行去隔行扫描。
ci/cubicipoldeint
立方插值去隔行滤波器通过每隔一行立方插值来解除给定块的隔行扫描。
md/mediandeint
中值反交错滤波器,通过对每个第二行应用中值滤波器来解除给定块的隔行扫描。
fd/ffmpegdeint
FFmpeg
反隔行扫描过滤器,通过使用(-1 4 2 4 -1)
过滤器过滤每隔一行来解除给定块的隔行扫描。
l5/lowpass5
垂直应用FIR
低通去隔行滤波器,通过使用(-1 2 6 2 -1)
滤波器过滤所有行来解除给定块的隔行扫描。
fq/forceQuant[|quantizer]
使用指定的常量量化器覆盖输入中的量化器表。
值 | 解释 |
---|---|
quantizer | 用来使用的量化器 |
de/default
默认pp
过滤器组合(hb | a,vb | a,dr | a)
fa/fast
快速pp
滤波器组合(h1 | a,v1 | a,dr | a)
ac
高品质pp
滤镜组合(ha | a | 128 | 7,va | a,dr | a)
29.127.1 示例
-
应用水平和垂直解块,
deringing
和自动亮度/对比度:pp=hb/vb/dr/al
-
应用没有亮度/对比度校正的默认滤镜:
pp=de/-al
-
应用默认过滤器和时间降噪器:
pp=default/tmpnoise|1|2|3
-
仅对亮度应用解块,并根据可用的
CPU
时间自动打开或关闭垂直解块:pp=hb|y/vb|a
29.128 pp7
应用后处理过滤器7
。它是spp
过滤器的变体,类似于具有7
点DCT
的spp = 6
,其中在IDCT
之后仅使用中心样本。
过滤器接受以下选项:
qp
强制一个恒定的量化参数。 它接受0
到63
范围内的整数。如果未设置,过滤器将使用视频流中的QP
(如果可用)。
mode
设置阈值模式。 可用的模式是:
值 | 解释 |
---|---|
hard | 设置硬阈值 |
soft | 设置软阈值(更好的去振铃效果,但可能是模糊) |
medium | 设置中等阈值(结果良好,默认) |
29.129 premultiply
将alpha
预乘效果应用于使用第二流的第一平面作为alpha
输入视频流。
两个流必须具有相同的尺寸和相同的像素格式。
过滤器接受以下选项:
planes
设置要处理的平面,将复制未处理的平面。 默认值为0xf
,将处理所有平面。
inplace
不需要第二个输入进行处理,而是使用输入流中的alpha
平面。