【发布时间】:2022-01-17 09:32:20
【问题描述】:
我正在尝试执行从 yuvj420p 转换为 yuv420p 的算法。两种格式的区别在于范围值:
- yuvj420p [0-255],和
- yuv420p [16-239]
我想知道如何使值适应新范围。
【问题讨论】:
-
yuv420p 实际上是 16-240 的色度和 16-235 的亮度。
我正在尝试执行从 yuvj420p 转换为 yuv420p 的算法。两种格式的区别在于范围值:
我想知道如何使值适应新范围。
【问题讨论】:
这有点晚了,但为了将来参考,如果它对任何人有帮助,这里是如何用 FFmpeg 处理这个问题。
当从 After Effects 导出未压缩的 AVI 时,有时 FFmpeg 转换似乎缺乏对比度,就好像范围被压缩了一样。添加
-pix_fmt yuvj420p
...到命令,当使用 libx264 编码时,可以解决这个问题。但是,在不支持这种像素格式的 webm (VP8) 等格式上,我发现 options of the scale filtergraph 允许我调整范围,同时保持在 yuv420p 中,这可能对您的情况更有帮助,并且在任何情况下可能不支持 yuvj420p 的情况。尝试添加这个标志:
-vf "in_range=mpeg:out_range=full"
来自文档:
in_range、out_range:设置输入/输出 YCbCr 采样范围。这允许覆盖自动检测的值并允许 强制用于输出和编码器的特定值。如果不 指定,范围取决于像素格式。
所以,就我而言,整个命令最终看起来像这样:
ffmpeg -i master.mp4 -c:v libvpx -crf 12 -vf "scale=300:-1:in_range=mpeg:out_range=full, crop=300:168" -b:v 1M -c:a libvorbis -b:a 64k -ac 1 output_from_mp4_ranged.webm
【讨论】:
yuv420p->yuv420p,out_range 完全没有效果