将格式从yuvj420p转换为yuv420p

时间:2015-06-08 08:04:51

标签: video yuv

我试图执行一个算法,将yuvj420p转换为yuv420p。两种格式之间的差异是范围值。

yuvj420p [0-255]和yuv420p [16-239]

我想知道如何使这些值适应新的范围。

1 个答案:

答案 0 :(得分:6)

有点晚了,但是为了将来的参考,如果它对任何人有帮助,这里是如何用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