将格式从yuvj420p转换为yuv420p

F.b*_*nal 2 video yuv

我正在尝试执行算法以将yuvj420p转换为yuv420p.两种格式之间的差异是范围值.

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

我想知道如何使值适应新的范围.

J G*_*ths 6

这有点晚了,但为了将来的参考,如果它对任何人有帮助,这里是如何用FFmpeg处理这个问题.

例如,从After Effects导出未压缩的AVI时,有时FFmpeg转换似乎缺乏对比度,就好像该范围正在被压缩一样.添加

-pix_fmt yuvj420p
Run Code Online (Sandbox Code Playgroud)

...当使用libx264进行编码时,命令可以修复此问题.但是,对于像webm(VP8)这样不支持这种像素格式的格式,我发现缩放滤镜图的选项允许我调整范围,同时保留在yuv420p中,这可能对你的情况更有帮助,在任何情况下可能不支持yuvj420p.尝试添加此标志:

-vf "in_range=mpeg:out_range=full"
Run Code Online (Sandbox Code Playgroud)

来自文档:

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
Run Code Online (Sandbox Code Playgroud)