FFplay文档解读-40-视频过滤器十五
前言
Github
地址:Github
简书地址:简书
专辑地址:FFplay专辑
29.140 removegrain
removegrain
滤镜是渐进式视频的空间降噪器。
m0
设置第一个平面的模式。
m1
设置第二个平面的模式。
m2
设置第三个平面的模式。
m3
设置第四个平面的模式。
模式范围为0
到24
。每种模式的描述如下:
0
保持输入平面不变。默认。
1
使用8
个相邻像素的最小值和最大值剪切像素。
2
使用8
个相邻像素的第二个最小值和最大值来剪切像素。
3
使用8
个相邻像素的第三个最小值和最大值来剪切像素。
4
使用第8
个相邻像素的第四个最小值和最大值来剪切像素。这相当于中值滤波器。
5
线敏感剪辑给出最小的变化。
6
行敏感剪辑,中间。
7
行敏感剪辑,中间。
8
行敏感剪辑,中间。
9
邻居像素最接近的行上的行敏感剪辑。
10
用最近的邻居替换目标像素。
11
[1 2 1]
水平和垂直内核模糊。
12
与模式11
相同。
13
Bob
模式,从邻近像素最接近的行插入顶部字段。
14
Bob
模式,从邻近像素最接近的行插入底部字段。
15
Bob
模式,插入顶部字段。与13
相同,但插值公式更复杂。
16
Bob
模式,插入底部字段。与14
相同,但插值公式更复杂。
17
以最小值和最大值分别对应每对相邻像素的最大值和最小值来剪切像素。
18
使用相对邻居的线敏感剪辑,其与当前像素的最大距离最小。
19
用8
个邻居的平均值替换像素。
20
平均9
个像素([1 1 1]
水平和垂直模糊)。
21
使用相对邻居的平均值来剪切像素。
22
与模式21
相同,但更简单,更快捷。
23
小边缘和光晕去除,但声称无用。
24
类似于23
。
29.141 removelogo
使用图像文件抑制电视台徽标,以确定哪些像素包含徽标。它的工作原理是用相邻像素填充构成徽标的像素。
过滤器接受以下选项:
filename,f
设置过滤器位图文件,该文件可以是libavformat
支持的任何图像格式。图像文件的宽度和高度必须与正在处理的视频流的宽度和高度相匹配。
提供的位图图像中值为零的像素不被视为徽标的一部分,非零像素被视为徽标的一部分。如果您使用白色(255)
作为徽标而使用黑色(0)
作为其余部分,那么您将是安全的。为了制作滤镜位图,建议拍摄带有徽标可见的黑框的屏幕截图,然后使用阈值滤镜,然后使用侵蚀滤镜一次或两次。
如果需要,可以手动修复少量斑点。请记住,如果未覆盖徽标像素,过滤器质量将大大降低。将太多像素标记为徽标的一部分并不会造成太大的伤害,但它会增加覆盖图像所需的模糊量,并会破坏超出必要的信息,而额外的像素会减慢大徽标的速度。
29.142 repeatfields
此过滤器使用Video ES
标头中的repeat_field
标志和基于其值的硬重复字段。
29.143 reverse
反转视频片段。
警告:此过滤器需要内存来缓冲整个剪辑,因此建议进行剪裁。
29.143.1 示例
-
取一个剪辑的前
5
秒,并将其反转。trim=end=5,reverse
29.144 roberts
应用roberts cross
运算符输入视频流。
过滤器接受以下选项:
planes
设置要处理的平面,将复制未处理的平面。 默认值为0xf,将处理所有平面。
scale
设定值将与过滤结果相乘。
delta
设置将添加到筛选结果的值。
29.145 rotate
以弧度表示的任意角度旋转视频。
过滤器接受以下选项:
下面是可选参数的描述。
angle, a
设置一个表达式,用于顺时针旋转输入视频的角度,表示为弧度数。负值将导致逆时针旋转。默认情况下,它设置为0
。
针对每个帧评估该表达式。
out_w,ow
设置输出宽度表达式,默认值为iw
。在配置期间仅对此表达式求值一次。
out_h, oh
设置输出高度表达式,默认值为ih
。在配置期间仅对此表达式求值一次。
bilinear
如果设置为1
,则启用双线性插值,值0
表示禁用。默认值为1
。
fillcolor,c
设置用于填充旋转图像未覆盖的输出区域的颜色。有关此选项的一般语法,请检查(ffmpeg-utils)颜色语法
。如果选择特殊值"none"
,则不打印背景(例如,如果从不显示背景,则非常有用)。
默认值为"black"
。
角度和输出大小的表达式可以包含以下常量和函数:
n
输入帧的序号,从0
开始。在第一帧被过滤之前,它始终为NAN
。
t
输入帧的时间(以秒为单位),配置过滤器时设置为0
。在过滤第一帧之前,它始终为NAN
。
hsub
VSUB
水平和垂直色度子样本值。例如,对于像素格式yuv422p
,hsub
为2
,vsub
为1
。
in_w,iw
in_h, ih
输入视频的宽度和高度
out_w,ow
out_h, oh
输出宽度和高度,即宽度和高度表达式指定的填充区域的大小
rotw(a)
roth(a)
完全包含由弧度旋转的输入视频所需的最小宽度/高度。
这些仅在计算'out_w'
和'out_h'
表达式时可用。
29.145.1 示例
-
顺时针旋转
PI/6
弧度输入:rotate=PI/6
-
逆时针旋转
PI/6
弧度输入:rotate=-PI/6
-
顺时针旋转输入
45
度:rotate=45*PI/180
-
从
PI/3
角度开始应用周期T
的恒定旋转:rotate=PI/3+2*PI*t/T
-
使输入视频旋转以
T
秒的周期和A
弧度的幅度振荡:rotate=A*sin(2*PI/T*t)
-
旋转视频,选择输出大小,以便整个旋转输入视频始终完全包含在输出中:
rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
-
旋转视频,减小输出大小,以便不显示任何背景:
rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
29.145.2 命令行
该过滤器支持以下命令:
a, angle
设置角度表达式。 该命令接受相应选项的相同语法。
如果指定的表达式无效,则保持其当前值。
29.146 sab
应用形状自适应模糊。
过滤器接受以下选项:
luma_radius,lr
设置亮度模糊滤镜强度,必须是0.1-4.0
范围内的值,默认值为1.0
。值越大,图像越模糊,处理速度越慢。
luma_pre_filter_radius,lpfr
设置luma
预滤波器半径,必须是0.1-2.0
范围内的值,默认值为1.0
。
luma_strength,ls
设置luma
最大像素之间的差异仍然要考虑,必须是0.1-100.0
范围内的值,默认值是1.0
。
chroma_radius,cr
设置色度模糊滤镜强度,必须是-0.9-4.0
范围内的值。值越大,图像越模糊,处理速度越慢。
chroma_pre_filter_radius,cpfr
设置色度预滤波器半径,必须是-0.9-2.0
范围内的值。
'chroma_strength,cs'
设置仍然要考虑的像素之间的色度最大差异,必须是-0.9-100.0范围内的值。
如果未明确指定,则每个色度选项值都设置为相应的亮度选项值。
29.147 scale
使用libswscale
库缩放(调整大小)输入视频。
通过更改输出样本宽高比,缩放滤镜强制输出显示宽高比与输入相同。
如果输入图像格式与下一个过滤器请求的格式不同,则缩放过滤器会将输入转换为请求的格式。
29.147.1 选项
过滤器接受以下选项,或libswscale
缩放器支持的任何选项。
有关缩放器选项的完整列表,请参阅(ffmpeg-scaler)scaler_options
。
width, w
height, h
设置输出视频维度表达式。 默认值是输入维度。
如果width
或w
值为0
,则输入宽度用于输出。 如果height
或h
值为0
,则输入高度用于输出。
如果其中一个且只有一个值为-n
且n> = 1
,则比例过滤器将使用一个值,该值保持输入图像的纵横比,从另一个指定的维度计算。 之后,它将确保计算出的尺寸可被n
整除,并在必要时调整该值。
如果两个值都是-n
且n> = 1
,则行为将与之前详细设置为0
的两个值相同。
请参阅下面的维度表达式中使用的已接受常量列表。
eval
指定何时评估宽度和高度表达式。 它接受以下值:
值 | 解释 |
---|---|
init | 仅在过滤器初始化期间或处理命令时计算表达式一次 |
frame | 评估每个传入帧的表达式 |
默认值是:‘init’
。
interl
设置隔行扫描模式。 它接受以下值:
值 | 解释 |
---|---|
1 | 强制隔行扫描意识缩放 |
0 | 不要应用隔行扫描缩放 |
-1 | 根据源帧是否标记为隔行扫描,选择隔行扫描感知缩放 |
默认值是:‘0’
。
flags
设置libswscale
缩放标志。 有关完整的值列表,请参阅(ffmpeg-scaler)sws_flags
。 如果未明确指定,则过滤器应用默认标志。
param0,param1
为需要它们的缩放算法设置libswscale
输入参数。 有关完整文档,请参阅(ffmpeg-scaler)sws_params
。 如果未明确指定,则过滤器应用空参数。
size,s
设置视频大小。 有关此选项的语法,请检查(ffmpeg-utils)视频大小语法
。
in_color_matrix
out_color_matrix
设置/
输出YCbCr
颜色空间类型。
这允许覆盖自动检测的值,并允许强制用于输出和编码器的特定值。
如果未指定,则颜色空间类型取决于像素格式。
可能的值如下:
值 | 解释 |
---|---|
auto | 自动选择 |
bt709 | 符合国际电信联盟(ITU) 建议书BT.709 的格式 |
fcc | 设置符合美国联邦通信委员会(FCC )联邦法规(CFR )标题47(2003)73.682(a) 的色彩空间 |
bt601 | 设置符合以下条件的色彩空间: 1:国际电联无线电通信部门(ITU-R)建议书BT.601 2: ITU-R Rec。 BT.470-6(1998) 系统B,B1 和G 3:电影电视工程师协会 (SMPTE)ST 170:2004
|
smpte240m | 设置符合SMPTE ST 240:1999 的色彩空间 |
in_range
out_range
设置/
输出YCbCr
样本范围。
这允许覆盖自动检测的值,并允许强制用于输出和编码器的特定值。 如果未指定,则范围取决于像素格式。 可能的值:
值 | 解释 |
---|---|
auto/unknown | 自动选择 |
jpeg/full/pc | 设置全范围(8 位亮度时为0-255 ) |
mpeg/limited/tv | 设置MPEG 范围(8 位亮度时为16-235 ) |
force_original_aspect_ratio
如有必要,启用减小或增加输出视频宽度或高度以保持原始高宽比。 可能的值如下:
值 | 解释 |
---|---|
disable | 按指定缩放视频并禁用此功能 |
decrease | 如果需要,输出视频尺寸将自动减小 |
increase | 如果需要,输出视频尺寸将自动增加 |
此选项的一个有用实例是,当您知道特定设备的最大允许分辨率时,可以使用此选项将输出视频限制为该值,同时保留纵横比。 例如,设备A
允许1280x720
播放,的视频为1920x800
。 使用此选项(将其设置为减小)并将1280x720
指定到命令行会使输出1280x533
。
请注意,这与为'w'
或'h'
指定-1
不同,仍需要指定此选项的输出分辨率才能工作。
'w'
和'h'
选项的值是包含以下常量的表达式:
in_w
in_h
输入的宽度和高度。
iw
ih
这些与in_w
和in_h
相同。
out_w
out_h
输出(缩放)宽度和高度。
ow
oh
这些与out_w
和out_h
相同。
a
和iw/ih
一样。
sar
输入样本宽高比。
dar
输入显示宽高比。 从(iw / ih)* sar
计算。
hsub
vsub
水平和垂直输入色度子样本值。 例如,对于像素格式yuv422p
,hsub
为2
,vsub
为1
。
ohsub
ovsub
水平和垂直输出色度子样本值。 例如,对于像素格式yuv422p
,hsub
为2
,vsub
为1
。
29.147.2 示例
-
将输入视频缩放到
200x100
的大小:scale=w=200:h=100
这相当于下面方法:
scale=200:100
或者如下:
scale=200x100
-
指定输出大小的大小缩写:
scale=qcif
也可以写成:
scale=size=qcif
-
将输入缩放为
2x
:scale=w=2*iw:h=2*ih
-
以上内容与:
scale=2*in_w:2*in_h
-
使用强制隔行缩放将输入缩放到
2x
:scale=2*iw:2*ih:interl=1
-
将输入缩放到一半大小:
scale=w=iw/2:h=ih/2
-
增加宽度,并将高度设置为相同的大小:
scale=3/2*iw:ow
-
寻找
Greek harmony
:scale=iw:1/PHI*iw scale=ih*PHI:ih
-
增加高度,并将宽度设置为高度的
3/2
:scale=w=3/2*oh:h=3/5*ih
-
增加大小,使大小为色度子样本值的倍数:
scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
-
将宽度增加到最大
500
像素,保持与输入相同的宽高比:scale=w='min(500\, iw*3/2):h=-1'
-
通过组合
scale
和setsar
使像素成为正方形:scale='trunc(ih*dar):ih',setsar=1/1
-
通过组合
scale
和setsar
使像素成为方形,确保结果分辨率均匀(某些编解码器需要):scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
29.147.3 命令行
此筛选器支持以下命令:
width, w
height, h
设置输出视频维度表达式。 该命令接受相应选项的相同语法。
如果指定的表达式无效,则保持其当前值。
29.148 scale_npp
使用NVIDIA Performance Primitives(libnpp)
在CUDA
视频帧上执行缩放和/或像素格式转换。 设置输出宽度和高度的工作方式与缩放滤镜的工作方式相同。
接受以下附加选项:
format
输出CUDA
帧的像素格式。 如果设置为字符串same
(默认值),则将保留输入格式。 请注意,硬件帧尚不支持自动格式协商和转换
interp_algo
用于调整大小的插值算法。 算法如下:
算法 | 解释 |
---|---|
nn | 最近的邻居 |
linear | |
cubic | |
cubic2p_bspline | 2-parameter cubic (B=1, C=0) |
cubic2p_catmullrom | 2-parameter cubic (B=0, C=1/2) |
cubic2p_b05c03 | 2-parameter cubic (B=1/2, C=3/10) |
super | 超级采样 |
lanczos |
29.149 scale2ref
根据参考视频缩放(调整大小)输入视频。
有关可用选项的比例过滤器,scale2ref
支持相同但使用参考视频而不是主输入作为基础。 scale2ref
还支持'w'
和'h'
选项的以下附加常量:
main_w
main_h
主输入视频的宽度和高度
main_a
与main_w/main_h
相同
main_sar
主输入视频的样本宽高比
main_dar,mdar
主输入视频的显示宽高比。 从(main_w/main_h)* main_sar
计算。
main_hsub
main_vsub
主输入视频的水平和垂直色度子样本值。 例如,对于像素格式“yuv422p”
,hsub
为2
,vsub
为1
。
29.149.1 示例
-
在覆盖之前缩放字幕流(
b
)以匹配主视频(a
)的大小。'scale2ref[b][a];[a][b]overlay'