前言
Github
地址:Github
简书地址:简书
专辑地址:FFplay专辑
29.11 boxblur
将boxblur
算法应用于输入视频。
它接受以下参数:
luma_radius, lr
luma_power, lp
chroma_radius, cr
chroma_power, cp
alpha_radius, ar
alpha_power, ap
接下来的选项的描述如下:
luma_radius, lr
chroma_radius, cr
alpha_radius, ar
设置用于模糊相应输入平面的框半径的表达式(以像素为单位)。
半径值必须是非负数,并且不得大于亮度和alpha
平面的表达式min(w,h)/2
的值,以及色度的min(cw,ch)/2
的值飞机。
'luma_radius'
的默认值为2
。 如果未指定,'chroma_radius'
和'alpha_radius'
默认为为'luma_radius'
设置的相应值。
表达式可以包含以下常量:
常量 | 解释 |
---|---|
w | |
h | 输入宽度和高度(以像素为单位) |
cw | |
ch | 输入色度图像宽度和高度(以像素为单位) |
hsub | |
vsub | 水平和垂直色度子样本值。 例如,对于像素格式yuv422p ,hsub 为2 ,vsub 为1
|
luma_power, lp
chroma_power, cp
alpha_power, ap
指定boxblur
过滤器应用于相应平面的次数。
'luma_power'
的默认值为2
。如果未指定,'chroma_power'
和'alpha_power'
默认为'luma_power'
设置的相应值。
值为0
将禁用该效果。
29.11.1 示例
-
应用
boxblur
滤镜,亮度,色度和alpha
半径设置为2
:boxblur=luma_radius=2:luma_power=1 boxblur=2:1
-
将亮度半径设置为
2
,将alpha
和色度半径设置为0
:boxblur=2:1:cr=0:ar=0
-
将亮度和色度半径设置为视频维度的一小部分:
boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
29.12 bwdif
对输入视频进行去交错(bwdif
代表Bob Weaver
去隔行滤波器)。
基于yadif
的运动自适应去隔行,使用w3fdif
和三次插值算法。 它接受以下参数:
mode
采用隔行扫描模式。 它接受以下面的值:
参数 | 解释 |
---|---|
0, send_frame | 为每帧输出一帧 |
1, send_field | 为每个字段输出一帧 |
默认值是:send_field
。
parity
假设输入隔行扫描视频的图像场奇偶校验。 它接受下面的值:
参数 | 解释 |
---|---|
0, tff | 假设顶部字段是第一个 |
1, bff | 假设底部字段是第一个 |
-1, auto | 启用字段奇偶校验的自动检测 |
默认值为auto
。 如果隔行扫描未知或解码器不导出该信息,则假设top field first
。
deint
指定要去隔行的帧。 接受下面的值:
参数 | 解释 |
---|---|
0, all | 对所有帧进行去隔行扫描 |
1, interlaced | 仅隔离标记为隔行扫描的帧 |
默认值是all
。
29.13 chromakey
YUV
颜色空间color/chroma
(颜色/色度)键控。
过滤器接受以下选项:
color
颜色将被透明度取代。
similarity
与关键颜色的相似百分比。
0.01
仅匹配确切的键颜色,而1.0
匹配所有内容。
blend
混合百分比。
0.0
使像素完全透明或根本不透明。
较高的值导致半透明像素,透明度越高,像素颜色与关键颜色越相似。
yuv
颜色传递的信号已经是YUV
而不是RGB
。
像"green"
或"red"
这样的字面颜色不再有意义了。 这可以用于将精确的YUV
值作为十六进制数传递。
29.13.1 示例
-
使输入图像中的每个绿色像素都透明:
ffmpeg -i input.png -vf chromakey=green out.png
-
在静态黑色背景上叠加绿屏视频
ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
29.14 ciescope
显示CIE
颜色图,其上覆盖有像素。
过滤器接受以下选项:
system
设置颜色系统。
颜色系统 |
---|
ntsc, 470m |
ebu, 470bg |
smpte |
240m |
apple |
widergb |
cie1931 |
rec709, hdtv |
uhdtv, rec2020 |
cie
设置CIE
系统。
CIE系统 |
---|
xyy |
ucs |
luv |
gamuts
设置要绘制的色域。
有关可用值,请参阅system
选项。
size, s
设置ciescope
大小,默认设置为512
。
intensity, i
设置用于将输入像素值映射到CIE
图的强度。
contrast
设置对比度用于绘制超出活动颜色系统色域的舌头颜色。
corrgamma
默认情况下,默认情况下,范围内显示正确的gamma
。
showwhite
在CIE
图上显示白点,默认情况下禁用。
gamma
设置输入gamma
。 仅用于XYZ
输入颜色空间。
29.15 codecview
可视化某些编解码器导出的信息。
一些编解码器可以使用旁边数据或其他方式通过帧导出信息。 例如,一些基于MPEG
的编解码器通过编解码器flags2
选项中的export_mvs
标志导出运动向量。
过滤器接受以下选项:
mv
设置运动矢量以进行可视化。
mv
的可用标志是:
可用标志 | 解释 |
---|---|
pf | 前向预测的P-frames 的MVs
|
bf | 前向预测的B-frames 的MVs
|
bb | 向后预测的B-frames 的MVs
|
qp
使用色度平面显示量化参数。
mv_type, mvt
设置运动矢量类型以进行可视化。 除非由frame_type
选项指定,否则包括来自所有帧的MV
。
mv_type
的可用标志如下:
标志 | 解释 |
---|---|
fp | 向前预测MVs
|
bp | 向后预测MVs
|
frame_type, ft
设置帧类型以可视化运动矢量。
frame_type
的可用标志如下:
标志 | 解释 |
---|---|
if | 帧内编码帧(I-frames ) |
pf | 前向预测帧(P-frames ) |
bf | 双向预测帧(B-frames ) |
29.15.1 示例
-
使用
ffplay
可视化所有帧的前向预测MVs
:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
-
使用
ffplay
可视化P
和B
帧的多方向MVs
:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
29.16 colorbalance
修改输入帧的原色(红色,绿色和蓝色)的强度。
滤镜允许在阴影,中间调或高光区域调整输入帧,以获得红色 - 青色,绿色 - 品红色或蓝 - 黄色平衡。
正调整值将平衡移向原色,朝向互补色移动负值。
过滤器接受以下选项:
rs
gs
bs
调整红色,绿色和蓝色阴影(最暗的像素)。
rm
gm
bm
调整红色,绿色和蓝色中间调(中等像素)。
rh
gh
bh
调整红色,绿色和蓝色高光(最亮像素)。
选项的允许范围是[-1.0,1.0]
。 默认值为0
。
29.16.1 示例
-
为阴影添加红色偏色:
colorbalance=rs=.3
29.17 colorkey
RGB
色彩空间颜色键控。
过滤器接受以下选项:
color
颜色将被透明度取代。
similarity
与关键颜色的相似百分比。
0.01
仅匹配确切的键颜色,而1.0
匹配所有内容。
blend
混合百分比。
0.0
使像素完全透明或根本不透明。
较高的值导致半透明像素,透明度越高,像素颜色与关键颜色越相似。
29.17.1 示例
-
使输入图像中的每个绿色像素都透明:
ffmpeg -i input.png -vf colorkey=green out.png
-
在静态背景图像上叠加绿屏视频:
ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv
29.18 colorlevels
使用级别调整视频输入帧。
过滤器接受以下选项:
rimin
gimin
bimin
aimin
调整红色,绿色,蓝色和alpha
输入黑点。 选项的允许范围是[-1.0,1.0]
。 默认值为0
。
rimax
gimax
bimax
aimax
调整红色,绿色,蓝色和alpha
输入白点。 选项的允许范围是[-1.0,1.0]
。 默认值为1
。
输入levels
用于淡化高光(亮色调),使阴影变暗(暗色调),改变亮色调和暗色调的平衡。
romin
gomin
bomin
aomin
调整红色,绿色,蓝色和alpha
输出黑点。 选项的允许范围是[0,1.0]
。 默认值为0
。
romax
gomax
bomax
aomax
调整红色,绿色,蓝色和alpha
输出白点。 选项的允许范围是[0,1.0]
。 默认值为1
。
输出levels
允许手动选择受约束的输出level
范围。
29.18.1 示例
-
使视频输出更暗:
colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
-
增加对比度:
colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
-
使视频输出更轻:
colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
-
增加亮度:
colorlevels=romin=0.5:gomin=0.5:bomin=0.5
29.19 colorchannelmixer
通过重新混合颜色通道来调整视频输入帧。
此滤镜通过添加与相同像素的其他通道关联的值来修改颜色通道。 例如,如果要修改的值为红色,则输出值将为:
red=red*rr + blue*rb + green*rg + alpha*ra
过滤器接受以下选项:
rr
rg
rb
ra
调整输入红色,绿色,蓝色和alpha
通道对输出红色通道的贡献。 rr
的默认值为1
,rg
,rb
和ra
的默认值为0
。
gr
gg
gb
ga
调整输入红色,绿色,蓝色和alpha
通道对输出绿色通道的贡献。 对于gg
,默认值为1
,对于gr
,gb
和ga
,默认值为0
。
br
bg
bb
ba
调整输入红色,绿色,蓝色和alpha
通道对输出蓝色通道的贡献。 bb
的默认值为1
,br
,bg
和ba
的默认值为0
。
ar
ag
ab
aa
调整输入红色,绿色,蓝色和alpha
通道对输出alpha
通道的贡献。 aa
的默认值为1
,ar
,ag
和ab
的默认值为0
。
选项的允许范围是[-2.0,2.0]
。
29.19.1 示例
-
将源转换为灰度:
colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
-
模拟棕褐色调:
colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131