FFmpeg和黑白转换

14

如何使用ffmpeg将视频转换为黑白模式?

3个回答

39

降低饱和度

如果你想要降低颜色的饱和度,可以使用色调过滤器

ffmpeg -i input -vf hue=s=0 output

这就像在GIMP中使用颜色饱和度

灰度

如果您想转换为灰度格式,请使用格式过滤器

ffmpeg -i input -vf format=gray output

这就像在GIMP中使用 图像模式灰度

阈值

参见FFmpeg如何使用阈值将视频转换为黑白?

这就像在GIMP中使用 颜色阈值


4
啊。好的。avconv 太残酷了。 - Jesse James Richard
也适用于 MacOS! - The Matt
1
@llogan,去饱和和灰度之间有什么区别?我在我的视频文件上都尝试了一下,结果看起来很相似。 - joedotnot
2
@joedotnot Desaturate会去除颜色,但不会改变图像的颜色模式。这就像在GIMP中使用Colors→Saturation。Grayscale将其转换为灰度模式(从YUV或RGB)。这就像在GIMP中使用Image→Mode→Grayscale。一些格式不支持灰度模式,因此ffmpeg将自动将其转换回YUV或RGB,但颜色已经消失,所以它看起来仍然相似。 - llogan

0

单色滤镜可以解决问题:

ffmpeg -i input.mp4 -vf monochrome output.mp4

0
假设您使用的是像mp4这样的YUV视频格式,您可能不想使用format=gray。
format=gray会在每7个像素中添加一个0值。这会使图像稍微变亮,并在强度上留下间隙。
相反,请使用extractplanes=y。它可以正确工作,而且可能需要更少的处理。与其他选项(如hue=s=0或monothat)相比,它还可以更好地节省内存使用,因为它只保留1个平面而不是3个。
ffmpeg -i input.mp4 -vf extractplanes=y output.mp4

最容易通过直方图比较来观察。
ffmpeg -i input.mp4 -filter_complex "split [s1][s2]; [s1] format=gray,histogram [so1]; [s2] extractplanes=y,histogram [so2]; [so1][so2] vstack" histogram.mp4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接