ffmpeg - 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 文档中,我可以看到转换选项(colorspace
和colormatrix
)。据我所知,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'
谢谢
解决方案
您的文档引用了色彩空间过滤器(这是正确的选择),但您的尝试使用了其他过滤器。
颜色空间过滤器仅支持每个通道 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 函数,那么所有这些都是学术性的。
推荐阅读
- php - Google Cloud Larvavel 项目部署错误
- php - 在 Elastic Beanstalk 上创建 cronjob 时遇到问题
- docker - docker-registry 如何在 openshift 源中保存图像
- api - 我如何在 laravel 6 中缓存对象及其关系
- python - 如何在我的烧瓶服务器中使用 tkinter 或 Kivy 弹出窗口?
- .net - 如何在 C# 中获取目标系统的 .NET CORE 版本号
- magento - Magento 1.9 - Zend/Currency - 格式错误...缺少 0
- python-3.x - 将长格式日期转换为短格式
- redis - 如何获取设置的redis db?
- c# - 如何在 Visual Studio 中使用 localDB(MDF) 在数据库中重新设置标识列