如何将适当的色彩空间和伽马传递函数应用到我的 ffmpeg 命令中?

如何将适当的色彩空间和伽马传递函数应用到我的 ffmpeg 命令中?

我有一个 sRGB 图像序列,我想将其转换为 .mp4。通过此转换,我想保留原始图像序列中的所有 sRGB 和伽马值。例如,我希望我的 png 文件中的红色 (255,0,0) 值保留在我的视频中。这意味着我想使用 RGB 颜色空间进行转换,并将伽马编码为 sRGB 作为传递函数。

目前我正在使用这个 ffmpeg 命令,它给出了准确的伽马值,但不准确的 RGB 值。任何帮助都非常感谢!

ffmpeg -r 60 -i input_%05d.png -c:v libx264 -pix_fmt yuv420p -colorspace rgb -color_trc iec61966-2-1 -y output.mp4 

这是具有正确 sRGB 颜色的框架 在此处输入图片描述

这是使用 ffmpeg 命令后的一帧。如果您使用颜色选择器,则可以看到 RGB 值不准确。 在此处输入图片描述

答案1

我要“回收”五月下列答案

我建议您将视频转换为 BT.709,并将视频标记为 BT.709:

  • 使用比例过滤器将视频转换为 BT.709: scale=out_color_matrix=bt709:out_range=tv

  • 使用过滤器将视频标记为 BT.709“电视范围”(有限范围)bsf-bsf:v h264_metadata=video_full_range_flag=0:colour_primaries=1:transfer_characteristics=1:matrix_coefficients=1


命令:

ffmpeg -r 60 -i input_%05d.png -vf scale=out_color_matrix=bt709:out_range=tv -c:v libx264 -pix_fmt yuv420p -bsf:v h264_metadata=video_full_range_flag=0:colour_primaries=1:transfer_characteristics=1:matrix_coefficients=1 -y output.mp4

注意:
如果 PNG 图像文件有嵌入的 ICC 配置文件,上述解决方案可能不起作用。

相关内容