![需要对 ffmpeg colorchannelmixer 进行详细解释](https://linux22.com/image/1563122/%E9%9C%80%E8%A6%81%E5%AF%B9%20ffmpeg%20colorchannelmixer%20%E8%BF%9B%E8%A1%8C%E8%AF%A6%E7%BB%86%E8%A7%A3%E9%87%8A.png)
我读过文件https://ffmpeg.org/ffmpeg-filters.html#colorchannelmixer;但我不明白这个例子的意思,
colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
有人可以解释一下每个值吗?.393、.769……为什么它有 11 个数字?
答案1
该过滤器按以下顺序接受最多 16 个值,
colorchannelmixer=rr:rg:rb:ra:gr:gg:gb:ga:br:bg:bb:ba:ar:ag:ab:aa
每个值的范围可以-2.0
是2.0
过滤器的作用是应用四个线性方程。
假设输入的 RGBA 像素颜色为(192,64,128,200)
,表达式为
colorchannelmixer=.3:.4:.3:0:.1:.54:.3:0:1:.2:.5
因此,输出 R 值将是.3x192 + .4x64 + .3x128 + 0x200 = 121.6 => 122
输出 G 值为.1x192 + .54x64 + .3x128 + 0x200 = 92.16 => 92
输出 B 值将是1x192 + .2x64 + .5x128 + 0x200 = 268.8 => 255
(由于ba
未设置,因此使用默认值 0。由于结果溢出最大值,因此被截断为最大值255
)
输出 A 值将是0x192 + 0x64 + 0x128 + 1x200 = 200 => 200
(由于未ar:ag:ab:aa
设置,因此0:0:0:1
使用默认值)
答案2
请详细阅读文档。该过滤器总共接受 16 个选项。对于每个输出通道(R、G、B 和 alpha),您有四个输入通道(R、G、B 和 alpha)。每个参数设置每个输入通道对每个输出通道的贡献。
如果您不指定该参数,其值将被设置为默认值(1 表示输入颜色通道,0 表示输入 alpha 通道)。这就是为什么如果您有 RGB 视频而没有 alpha 通道,则只需指定 16 个选项中的 11 个。
因此,这些参数:
.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
可以理解为:
.393 → amount of input R in output R channel
.769 → amount of input G in output R channel
.189 → amount of input B in output R channel
0 → amount of input A in output R channel
--------------------------------------------
.349 → amount of input R in output G channel
.686 → amount of input G in output G channel
.168 → amount of input B in output G channel
0 → amount of input A in output G channel
--------------------------------------------
.272 → amount of input R in output B channel
.534 → amount of input G in output B channel
.131 → amount of input B in output B channel
其余值设置为默认值,即输入到输出 B 通道的 alpha 量为零。输出 alpha 通道的默认值也适用。