【问题标题】:FFMPEG: Convert input rec709 to sRGBFFMPEG:将输入 rec709 转换为 sRGB
【发布时间】:2019-03-29 13:50:31
【问题描述】:

我想使用 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 的有效选项。

  • -vf "scale=in_color_matrix=bt709:out_color_matrix=srgb"
  • -colormatrix=bt709:srgb'

谢谢

【问题讨论】:

  • 简单评论一下,“Rec709”和“bt709”是一回事。此外,sRGB 与 Rec709 相同,但传输曲线 (gamma) 很重要。也就是说,sRGB 和 Rec709 使用相同的原色和白点,但编码曲线(即亮度)有点不同。您可以通过将指数 1.1 应用于每个颜色通道 (R^1.1 G^1.1 B^1.1) 将 Rec709 数据转换为 sRGB
  • srgb 不是颜色矩阵。这是一个转移。

标签: ffmpeg


【解决方案1】:

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

色彩空间过滤器仅支持每个通道 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 函数,那么所有这些都是学术性的。

【讨论】:

    【解决方案2】:

    我不肯定这是否真的对你有用,但我对 ffmpeg 的搞砸出现了以下标志来指示 sRGB 伽玛。这是针对 H.264 TRC 标志“-color_trc iec61966_2_1”的。

    【讨论】:

    • 这只会标记输出而不转换任何东西。
    猜你喜欢
    • 2016-06-27
    • 2021-04-21
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多