ffmpeg:如何处理颜色范围转换

ffmpeg:如何处理颜色范围转换

很难找到有关使用 ffmpeg 进行颜色范围操作的全面文档。我想知道处理以下情况的推荐方法:

  1. 输入范围有限,我想输出全范围
  2. 输入是全范围 4:2:2,我想要以 4:2:0 全范围输出
  3. 输入被错误地标记为全范围,我想在有限范围内重新混合或重新编码

例如,为了解决案例 #2,我只需添加选项-pix_fmt yuvj420p。它正在工作,但我收到一条警告,告诉我像素格式已弃用。我尝试找到解决方案, -pix_fmt yuv420p -color_range 2但输出被冲淡了(有限范围播放为完整)

答案1

输入范围有限,我想输出全范围

使用比例过滤器,-vf scale=in_range=limited:out_range=full

并设置编码器和容器的颜色范围* -color_range 2,,

*如果写入 MP4,还需添加-movflags +write_colr


输入是全范围 4:2:2,我想要以 4:2:0 全范围输出

-pix_fmt yuvj420p与上述编码器+容器的措施相同。


输入被错误地标记为全范围,我想在有限范围内重新混合或重新编码

重新编码与 1 相同,但设置了正确的 in_range 和 out_range。

要重新混合 H264,请添加-bsf:v h264_metadata=video_full_range_flag=0(使用-c:v copy)。

要重新混合 H265,请添加-bsf:v hevc_metadata=video_full_range_flag=0(带有-c:v copy)。

-color_range 1范围有限。

相关内容