首页 > 解决方案 > FFMPEG:将输入 rec709 转换为 sRGB

问题描述

我想使用 ffmpeg 将tiff 16bit rec709的图像序列转换为JPEG sRGB的图像序列。

# How would I indicate ffmpeg source is rec709 and output is srgb?
ffmpeg -start_number 1001 -i input_seq_rec709.%04d.tif output_seq_srgb.%04d.jpg

从 ffmpeg 文档中,我可以看到转换选项(colorspacecolormatrix)。据我所知,rec709 就像 bt709。但我不确定 sRGB 会是什么,知道吗? https://ffmpeg.org/ffmpeg-filters.html#colorspace

我希望使用这些标志之一,但 srgb 不是 FFMPEG 的有效选项。

谢谢

标签: ffmpeg

解决方案


您的文档引用了色彩空间过滤器(这是正确的选择),但您的尝试使用了其他过滤器。

颜色空间过滤器仅支持每个通道 8、10 或 12 位的输入深度,因此 ffmpeg 将使用其正常缩放器预先将深度下采样到 8 bpc。让我们通过手动下采样到更高的深度来延迟它。

ffmpeg -start_number 1001 -i input_seq_rec709.%04d.tif -vf format=yuv444p12le,colorspace=all=bt709:trc=srgb:format=yuv422p output_seq_srgb.%04d.jpg

上面的命令假定输入 (TIFF) 的颜色标志全部设置(并且设置正确)。如果不是,并且色彩空间抱怨,请使用

ffmpeg -color_primaries 1 -color_trc 1 -colorspace 1 -start_number 1001 -i input_seq_rec709.%04d.tif -vf format=yuv444p12le,colorspace=all=bt709:trc=srgb:format=yuv422p output_seq_srgb.%04d.jpg

现在,如果您使用的播放器或后续应用程序的解码器不知道应用正确的 gamma 函数,那么所有这些都是学术性的。


推荐阅读