FFplay文档解读-45-视频过滤器二十
前言
Github
地址:Github
简书地址:简书
专辑地址:FFplay专辑
29.190 w3fdif
对输入视频进行去交错(w3fdif
代表Weston 3 Field Deinterlacing Filter
)。
基于Martin Weston
为BBC R&D
描述的过程,并基于Jim Easterbrook
为BBC R&D
编写的去隔行算法实现,Weston 3
场反交错滤波器使用由BBC R&D
计算的滤波器系数。
有两组滤波器系数,所谓的"simple"
:和"complex"
。 可以通过传递可选参数来设置使用哪组滤波器系数:
filter
设置隔行扫描滤波器系数。 接受以下值之一:
值 | 解释 |
---|---|
simple | 简单的滤波器系数集 |
complex | 更复杂的滤波器系数集 |
默认值是:‘complex’
。
deint
指定要去隔行的帧。 接受以下值之一:
值 | 解释 |
---|---|
all | 对所有帧进行去隔行扫描 |
interlaced | 仅隔离标记为隔行扫描的帧 |
默认值是:‘all’
。
29.191 waveform
视频波形监视器。
波形监视器绘制颜色分量强度。 默认情况下仅亮度。 波形的每列对应于源视频中的一列像素。
它接受以下选项:
mode, m
可以是row
(行)或column
(列)。 默认为列。 在行模式中,左侧的图表表示颜色分量值0
,右侧表示value = 255
。在列模式中,上侧表示颜色分量value = 0
,下侧表示value = 255
。
intensity, i
设定强度。 较小的值有助于找出在输入行/列中分布了多少相同亮度的值。 默认值为0.04
。 允许范围为[0,1]
。
mirror, r
设置镜像模式。 0
表示未镜像,1
表示镜像。 在镜像模式下,较高的值将在左侧表示行模式,而在顶部表示列模式。 默认值为1
(镜像)。
display, d
设置显示模式。 它接受以下值:
值 | 解释 |
---|---|
overlay | 除了表示颜色分量的图形直接叠加在彼此之外时,呈现与游行中的信息相同的信息。 该显示模式使得更容易发现应该是相同的颜色分量的重叠区域中的相对差异或相似性,例如中性白色,灰色或黑色 |
stack | 在行模式下并排显示颜色组件的单独图形,或在列模式下显示一个在另一个下方的图形 |
parade | 在列模式下并排显示颜色组件的单独图形,或在行模式下显示一个在另一个下方的图形 使用此显示模式,通过比较每个波形的顶部和底部图形的轮廓,可以轻松地在图像的高光和阴影中发现色偏。 由于白色,灰色和黑色的特征是红色,绿色和蓝色的数量完全相等,因此图像的中性区域应显示三个 width/height 大致相等的波形。 如果不是,通过对三个波形进行电平调整,可以很容易地进行校正。 |
默认值是:stack
。
components, c
设置要显示的颜色组件。 默认值为1
,如果输入在RGB
颜色空间中,则表示仅亮度或红色分量。 如果设置为例如7
,它将显示所有3
(如果)可用的颜色分量。
envelope, e
值 | 解释 |
---|---|
none | 没有envelope ,这是默认值 |
instant | 即使step 值很小,图中显示的即时包络,最小值和最大值也很容易看到 |
peak | 保持图表中显示的最小值和最大值。 这样,仍然可以在不经常查看波形的情况下发现超出范围值 |
peak+instant | 峰值和即时包络结合在一起 |
filter, f
值 | 解释 |
---|---|
lowpass | 没有filtering ,这是默认值 |
flat |
Luma 和色度结合在一起 |
aflat | 与上面类似,但显示蓝色和红色色度之间的差异 |
xflat | 与上面类似,但使用不同的颜色 |
chroma | 仅显示色度 |
color | 显示波形上的实际颜色值 |
acolor | 与上面类似,但是亮度显示色度值的频率 |
graticule, g
设置要显示的刻度。
值 | 解释 |
---|---|
none | 不要显示刻度 |
green | 显示绿色标线,显示合法的广播范围 |
orange | 显示显示合法广播范围的橙色标线 |
opacity, o
设置经纬网不透明度。
flags, fl
设置经纬网标志。
值 | 解释 |
---|---|
numbers | 在线条上方绘制数字。 默认情况下启用 |
dots | 画点而不是线 |
scale, s
设置用于显示刻度的比例。
值 |
---|
digital |
millivolts |
ire |
默认值是:digital
。
bgopacity, b
设置背景不透明度。
29.192 weave, doubleweave
编织采用基于场的视频输入,并将每两个连续场连接成单帧,产生一个新的双倍高度剪辑,帧速率为帧速率的一半,帧数为一半。
双层编织与编织相同,但没有将帧速率和帧数减半。
它接受以下选项:
first_field
设置第一个字段。 可用值包括:
|top, t|将帧设置为top-field-first
|
|bottom, b|将帧设置为bottom-field-first
|
29.192.1 示例
-
使用
select
和separatefields
过滤器交错视频:separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
29.193 xbr
应用专为像素艺术设计的xBR
高质量放大滤镜。 它遵循一组边缘检测规则,请参阅http://www.libretro.com/forums/viewtopic.php?f=6&t=134。
它接受以下选项:
n
设置缩放尺寸:2
表示2xBR
,3
表示3xBR
,4
表示4xBR
。 默认值为3
。
29.194 yadif
对输入视频进行去交错(yadif
表示"yet another deinterlacing filter"
)。
它接受以下参数:
mode
采用隔行扫描模式。 它接受以下值之一:
值 | 解释 |
---|---|
0, send_frame | 为每帧输出一帧 |
1, send_field | 为每个字段输出一帧 |
2, send_frame_nospatial | 与send_frame 一样,但它会跳过空间隔行扫描检查 |
3, send_field_nospatial | 像send_field 一样,但它会跳过空间隔行扫描检查 |
默认值是:send_frame
。
parity
假设输入隔行扫描视频的图像场奇偶校验。 它接受以下值之一:
值 | 解释 |
---|---|
0, tff | 假设顶部字段是第一个 |
1, bff | 假设底部字段是第一个 |
-1, auto | 启用字段奇偶校验的自动检测 |
默认值为auto
。 如果隔行扫描未知或解码器不导出该信息,则首先假设顶场。
deint
指定要去隔行的帧。 接受以下值之一:
值 | 解释 |
---|---|
0, all | 对所有帧进行去隔行扫描 |
1, interlaced | 仅隔离标记为隔行扫描的帧 |
默认值是:all
。
29.195 zoompan
应用缩放和平移效果。
此过滤器接受以下选项:
zoom,z
设置缩放表达式。默认值为1
。
x
y
设置x
和y
表达式。默认值为0
。
d
将持续时间表达式设置为帧数。这将设置单个输入图像的效果将持续多少帧数。
s
设置输出图像大小,默认为'hd720'
。
fps
设置输出帧速率,默认为25
。
每个表达式可以包含以下常量:
in_w,iw
输入宽度。
in_h, ih
输入高度。
out_w,ow
输出宽度。
out_h, oh
输出高度。
in
输入帧数。
on
输出帧数。
x
y
最后从当前输入帧的'x'
和'y'
表达式计算'x'
和'y'
位置。
px
py
前一输入帧的最后一个输出帧的'x'
和'y'
,或者当还没有这样的帧(第一输入帧)时为0
。
zoom
最后计算的当前输入帧的'z'
表达式缩放。
pzoom
上次计算的上一输入帧的最后一个输出帧的缩放。
duration
当前输入帧的输出帧数。根据每个输入帧的'd'
表达式计算。
pduration
为先前输入帧创建的输出帧数。
a
有理数:输入宽度/输入高度。
sar
样本长宽比。
dar
显示宽高比。
29.195.1 示例
-
放大到
1.5
并同时平移到图片中心附近的某个位置:zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
-
放大至
1.5
并始终在图片中心平移:zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
-
与上述相同但没有暂停:
zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
29.196 zscale
使用z.lib
库扩展(调整大小)输入视频:https://github.com/sekrit-twc/zimg。
通过更改输出样本宽高比,zscale
过滤器强制输出显示宽高比与输入相同。
如果输入图像格式与下一个过滤器请求的格式不同,则zscale
过滤器会将输入转换为请求的格式。
29.196.1 参数
过滤器接受以下选项。
width, w
height, h
设置输出视频维度表达式。 默认值是输入维度。
如果width
或w
值为0
,则输入宽度用于输出。 如果height
或h
值为0
,则输入高度用于输出。
如果其中一个且只有一个值为-n
且n> = 1
,则zscale
过滤器将使用一个值,该值保持输入图像的纵横比,从另一个指定的维度计算。 之后,它将确保计算出的尺寸可被n整除,并在必要时调整该值。
如果两个值都是-n
且n> = 1
,则行为将与之前详细设置为0的两个值相同。
请参阅下面的维度表达式中使用的已接受常量列表。
size, s
设置视频大小。 有关此选项的语法,请检查(ffmpeg-utils)视频大小语法
。
dither, d
设置抖动类型。
可能的值是:
值 |
---|
none |
ordered |
random |
error_diffusion |
默认值是:none
。
filter, f
设置调整大小过滤器类型。
可能的值是:
值 |
---|
point |
bilinear |
bicubic |
spline16 |
spline36 |
lanczos |
默认值是:bilinear
。
range, r
设置颜色范围。
可能的值是:
值 |
---|
input |
limited |
full |
默认值与input
相同。
primaries, p
设置颜色原色。
可能的值是:
值 |
---|
input |
709 |
unspecified |
170m |
240m |
2020 |
默认值与input
相同。
transfer, t
设置传输特性。
可能的值是:
值 |
---|
input |
709 |
unspecified |
601 |
linear |
2020_10 |
2020_12 |
smpte2084 |
iec61966-2-1 |
arib-std-b67 |
默认值与input
相同。
matrix, m
设置颜色空间矩阵。
可能的值如下所示:
值 |
---|
input |
709 |
unspecified |
470bg |
170m |
2020_ncl |
2020_cl |
默认值与input
相同。
rangein, rin
设置输入颜色范围。
可能的值是:
值 |
---|
input |
limited |
full |
默认值与input
相同。
primariesin, pin
设置输入颜色原色。
可能的值是:
值 |
---|
input |
709 |
unspecified |
170m |
240m |
2020 |
默认值与input
相同。
transferin, tin
设置输入传输特性。
可能的值是:
值 |
---|
input |
709 |
unspecified |
601 |
linear |
2020_10 |
2020_12 |
默认值与input
相同。
matrixin, min
设置输入颜色空间矩阵。
可能的价值是:
值 |
---|
input |
709 |
unspecified |
470bg |
170m |
2020_ncl |
2020_cl |
chromal, c
设置输出色度位置。
可能的值是:
值 |
---|
input |
left |
center |
topleft |
top |
bottomleft |
bottom |
chromalin, cin
设置输入色度位置。
可能的值是:
|input|
|left|
|center|
|topleft|
|top|
|bottomleft|
|bottom|
npl
设置标称峰值亮度。
'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
。