很难找到有关使用 ffmpeg 进行颜色范围操作的全面文档。我想知道处理以下情况的推荐方法:
- 输入范围有限,我想输出全范围
- 输入是全范围 4:2:2,我想要以 4:2:0 全范围输出
- 输入被错误地标记为全范围,我想在有限范围内重新混合或重新编码
例如,为了解决案例 #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
范围有限。