FFplay文档解读-44-视频过滤器十九
前言
Github
地址:Github
简书地址:简书
专辑地址:FFplay专辑
29.180 uspp
应用超slow/simple
的后处理过滤器,在多个(或‘quality’``level 8 - all
的情况)位移的情况下压缩和解压缩图像并平均结果。
这与spp
行为的不同之处在于uspp
实际上使用libavcodec Snow
对每个案例进行编码和解码,而spp
使用类似于MJPEG
的简化帧内8x8 DCT
。
过滤器接受以下选项:
quality
设定质量。 此选项定义平均的级别数。 它接受0-8
范围内的整数。 如果设置为0
,则过滤器无效。 值8
表示质量更高。 对于该值的每个增量,速度下降约2
倍。默认值为3
。
qp
强制一个恒定的量化参数。 如果未设置,过滤器将使用视频流中的QP
(如果可用)。
29.181 vaguedenoiser
应用基于小波的降噪器。
它使用Cohen-Daubechies-Feauveau 9/7
将每个帧从视频输入转换为小波域。 然后它对获得的系数应用一些滤波。 它之后进行逆小波变换。 由于小波属性,它应该提供一个很好的平滑结果,并降低噪音,而不会模糊图片功能。
此过滤器接受以下选项:
threshold
过滤强度。 视频越高,过滤的越多。 在视频过滤之前,硬阈值可以使用比软阈值更高的阈值。 默认值为2
。
method
过滤器将使用的过滤方法。
它接受以下值:
值 | 解释 |
---|---|
hard | 阈值以下的所有值都将归零 |
soft | 阈值以下的所有值都将归零。 上述所有值都将减少阈值 |
garrote | 缩放或无效系数 - (更多)软和(更少)硬阈值之间的中介 |
默认值是:garrote
。
nsteps
次数,小波将分解图片。 图片不能分解超出特定点(对于8个640x480
的帧,因为2^9 = 512 > 480
)。 有效值为1
到32
之间的整数。默认值为6
。
percent
部分完全去噪(受限系数收缩),从0
到100
。默认值为85
。
planes
要处理的平面列表。 默认情况下,处理所有平面。
29.182 vectorscope
在二维图中显示2
个颜色分量值(称为矢量示波器)。
此过滤器接受以下选项:
mode, m
设置矢量示波器模式。
它接受以下值:
值 | 解释 |
---|---|
gray | 灰度值显示在图表上,更高的亮度意味着更多像素在图形中的位置上具有相同的组件颜色值。 这是默认模式 |
color | 灰度值显示在图表上。 视频帧中不存在的周围像素值以由选项x 和y 设置的2 个颜色分量的梯度绘制。 第三种颜色成分是静态的 |
color2 | 视频帧中存在的实际颜色分量值显示在图表上 |
color3 | 与color2 类似,但图表上相同值x 和y 的较高频率会增加另一个颜色分量的值,即x 和y 的默认值 |
color4 | 视频帧中显示的实际颜色显示在图表上。 如果两种不同的颜色映射到图形上的相同位置,则选择具有较高值的图形中不存在的组件的颜色 |
color5 | 灰度值显示在图表上。 与颜色相似,但从径向渐变中选取第3 种颜色成分 |
x
设置将在X轴上表示的颜色分量。 默认值为1
。
y
设置将在Y轴上显示的颜色分量。 默认值为2
。
intensity, i
模式使用的设置强度:灰色,颜色,颜色3
和颜色5
,用于增加颜色分量的亮度,表示图形中(X,Y)
位置的频率。
envelope, e
值 | 解释 |
---|---|
none | 没有envelope ,这是默认的 |
instant |
Instant envelope ,即使是最暗的单个像素也会被清晰地突出显示 |
peak | 保持图表中随时间显示的最大值和最小值。 这样,仍然可以在不经常查看矢量示波器的情况下发现范围值 |
peak+instant | 峰值和即时包络结合在一起 |
graticule, g
设置绘制什么样的经纬网。
值 |
---|
none |
green |
color |
opacity, o
设置经纬网不透明度。
flags, f
设置经纬网标志。
标志 | 解释 |
---|---|
white | 绘制白点刻度 |
black | 绘制黑点的刻度 |
name | 绘制颜色点短名称 |
bgopacity, b
设置背景不透明度。
lthreshold, l
设置未在X
轴或Y
轴上显示的颜色分量的低阈值。 低于此值的值将被忽略。 默认值为0
。请注意,此值乘以一个像素组件可以具有的实际最大可能值。 因此对于8
位输入和0.1
的实际阈值的低阈值是0.1 *255 = 25
。
hthreshold, h
设置未在X
轴或Y
轴上显示的颜色分量的高阈值。 高于此值的值将被忽略。 默认值为1
。请注意,此值乘以一个像素组件可以具有的实际最大可能值。 因此对于8
位输入和0.9
的实际阈值的高阈值是0.9 * 255 = 230
。
colorspace, c
设置绘制刻度时要使用的颜色空间类型。
auto
601
709
默认值是:auto
。
29.183 vidstabdetect
分析视频稳定/去抖动。执行第1
步(共2
步),请参阅第2
步的vidstabtransform
。
此过滤器生成一个文件,其中包含有关后续帧的相对平移和旋转变换信息,然后由vidstabtransform
过滤器使用。
要启用此过滤器的编译,需要使用--enable-libvidstab
配置FFmpeg
。
此过滤器接受以下选项:
result
设置用于写入转换信息的文件的路径。默认值为'transforms.trf'
。
shakiness
设置视频的抖动程度以及相机的速度。它接受1-10
范围内的整数,值1
表示少量抖动,值10
表示强烈颤抖。默认值为5
。
accuracy
设置检测过程的准确性。它必须是1-15
范围内的值。值1
表示精度低,值15
表示高精度。默认值为15
。
stepsize
设置搜索过程的步骤。最小的区域以1
像素分辨率扫描。默认值为6
。
mincontrast
设置最小对比度。低于该值,丢弃本地测量字段。必须是0-1
范围内的浮点值。默认值为0.3
。
tripod
设置三脚架模式的参考帧编号。
如果启用,则将帧的运动与过滤流中的参考帧进行比较,该参考帧由指定的数字标识。这个想法是在一个或多或少的静态场景中补偿所有运动,并保持摄像机视图绝对静止。
如果设置为0
,则禁用它。帧从1
开始计算。
show
在结果帧中显示字段和变换。它接受0-2
范围内的整数。默认值为0
,禁用任何可视化。
29.183.1 示例
-
使用默认值:
vidstabdetect
-
分析强烈抖动的电影并将结果放在文件
'mytransforms.trf'
中:vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
-
在结果视频中可视化内部转换的结果:
vidstabdetect=show=1
-
使用
ffmpeg
分析中等抖动的视频:ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
29.184 vidstabtransform
视频stabilization/deshaking
:传递2
参数中的2
,见vidstabdetect
传递1
。
读取包含每个帧的变换信息的文件并应用/补偿它们。 与vidstabdetect
过滤器一起,这可以用于去抖动视频。 另见http://public.hronopik.de/vid.stab。 使用非锐化滤镜也很重要,请参见下文。
要启用此过滤器的编译,需要使用--enable-libvidstab
配置FFmpeg
。
29.184.1 Options
input
设置用于读取变换的文件的路径。 默认值为'transforms.trf'
。
smoothing
设置用于低通滤波相机移动的帧数(value*2 + 1
)。 默认值为10
。
例如,10
表示使用21
帧(过去10
帧,将来10
帧)来平滑视频中的运动。 值越大,视频越平滑,但会限制摄像机的加速度(摇摄/俯仰运动)。 0
是模拟静态相机的特殊情况。
optalgo
设置摄像机路径优化算法。
可接受的值是:
值 | 解释 |
---|---|
gauss | 摄像机运动时的高斯核低通滤波器(默认值) |
avg | 平均转换 |
maxshift
设置要翻译帧的最大像素数。 默认值为-1
,表示没有限制。
maxangle
设置以弧度为单位的最大角度(degree*PI/180)
以旋转帧。 默认值为-1
,表示没有限制。
crop
指定如何处理由于运动补偿而可见的边框。
可用值包括:
值 | 解释 |
---|---|
keep | 保留前一帧的图像信息(默认值) |
black | 填补黑色边框 |
invert
如果设置为1
,则反转变换。默认值为0
。
relative
如果设置为1
,则将变换视为相对于前一帧的变换,如果设置为0
,则将其视为绝对值。默认值为0
。
zoom
设置缩放百分比。 正值将导致放大效果,缩小效果中的负值。 默认值为0
(无缩放)。
optzoom
设置最佳缩放以避免边框。
可接受的值如下:
值 | 解释 |
---|---|
0 | disabled |
1 | 确定最佳静态缩放值(只有非常强烈的移动才会导致可见的边框)(默认值) |
2 | 确定最佳自适应缩放值(不会看到任何边框),请参阅'zoomspeed'
|
请注意,缩放时给出的值将添加到此处计算的值。
zoomspeed
设置百分比以最大限度地缩放每帧(当'optzoom'
设置为2
时启用)。 范围是0
到5
,默认值是0.25
。
interpol
指定插值类型。
可用值包括:
值 | 解释 |
---|---|
no | 没有插值 |
linear | 线性只有水平 |
bilinear | 两个方向线性(默认) |
bicubic | 双向立方(慢) |
tripod
如果设置为1
,则启用虚拟三脚架模式,相当于relative = 0:smoothing = 0
。 默认值为0
。
使用vidstabdetect
的三脚架选项。
debug
如果设置为1
,则增加日志详细程度。此外,检测到的全局运动将写入临时文件'global_motions.trf'
。 默认值为0
。
29.184.2 示例
-
使用
ffmpeg
进行默认值的典型稳定:ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
请注意始终建议使用非锐化滤镜。
-
放大一点并从给定文件加载转换数据:
vidstabtransform=zoom=5:input="mytransforms.trf"
-
更加顺畅地播放视频:
vidstabtransform=smoothing=30
29.185 vflip
垂直翻转输入视频。
例如,要使用ffmpeg
垂直翻转视频:
ffmpeg -i in.avi -vf "vflip" out.avi
29.186 vfrdet
检测可变帧速率视频。
此过滤器尝试检测输入是可变还是恒定帧速率。
最后,它将输出被检测为具有可变delta pts
的帧数,以及具有恒定delta pts
的帧数。 如果存在具有可变增量的帧,则它还将显示遇到的最小和最大增量。
29.187 vignette
制作或扭转自然渐晕效果。
过滤器接受以下选项:
angle, a
将镜头角度表达式设置为弧度数。
该值被剪切在[0,PI/2]
范围内。
默认值:"PI/5"
x0
y0
设置中心坐标表达式。 默认情况下分别为"w/2"
和"h/2"
。
mode
设置forward/backward
模式。
可用的模式是:
模式 | 解释 |
---|---|
forward | 距中心点的距离越大,图像越暗 |
backward | 距中心点的距离越大,图像越亮。 这可以用于反转晕影效果,但是没有自动检测来提取镜头‘angle’ 和其他设置(yet) 。 它还可以用于创建燃烧效果 |
默认值是:‘forward’
。
eval
设置表达式的评估模式(‘angle’, ‘x0’, ‘y0’)
。
它接受以下值:
值 | 解释 |
---|---|
init | 在过滤器初始化期间仅评估表达式一次 |
frame | 评估每个传入帧的表达式。 这比'init' 模式慢,因为它需要重新计算所有的缩放器,但它允许高级动态表达式 |
默认值是:‘init’
。
dither
设置抖动以减少圆形条带效果。 默认值为1`` (enabled)
。
aspect
设置插图方面。 此设置允许调整晕影的形状。 将此值设置为输入的SAR
将根据视频的尺寸进行矩形渐晕。
默认值是1/1
。
29.187.1 表达式
'alpha'
,'x0'
和'y0'
表达式可以包含以下参数:
w
h
输入宽度和高度。
n
输入帧的数量,从0
开始。
pts
过滤后的视频帧的PTS(Presentation TimeStamp)
时间,以TB为单位表示,如果未定义则为NAN
。
r
输入视频的帧速率,如果输入帧速率未知,则为NAN
。
t
滤波后视频帧的PTS(Presentation TimeStamp)
,以秒表示,NAN
(如果未定义)
tb
输入视频的时基。
29.187.2 示例
-
应用简单强烈的渐晕效果:
vignette=PI/4
-
制作一个闪烁的渐晕:
vignette='PI/4+random(1)*PI/50':eval=frame
29.188 vmafmotion
获取视频的平均vmaf
运动得分。 它是VMAF
的组件过滤器之一。
通过测井系统打印获得的平均运动得分。
在下面的示例中,正在处理输入文件'ref.mpg'
并计算得分。
ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
29.189 vstack
垂直堆叠输入视频。
所有流必须具有相同的像素格式且宽度相同。
请注意,此滤镜比使用叠加和填充滤镜更快地创建相同的输出。
过滤器接受以下选项:
inputs
设置输入流的数量。 默认值为2
。
shortest
如果设置为1
,则在最短输入终止时强制输出终止。 默认值为0
。