ffmpeg 编码请求 yuv420p 但得到 yuvj420p

ffmpeg 编码请求 yuv420p 但得到 yuvj420p

当我在 Ubuntu 18 上使用 ffmpeg 编码时,默认编码器h264 (libx264)默认使用像素格式yuvj420p
但是https://ffmpeg.org/doxygen/trunk/pixfmt_8h_source.html说 AV_PIX_FMT_YUVJ420P 是“全尺寸(JPEG),不推荐使用,而建议使用 AV_PIX_FMT_YUV420P 并设置 color_range。”
https://trac.ffmpeg.org/wiki/Encode/H.264还建议“使用 -vf format=yuv420p(或别名 -pix_fmt yuv420p)。”

没有“j”。我们来试试吧。

ffmpeg -i in.mov -movflags +faststart -crf 18 -preset slower \ -pix_fmt yuv420p \ -vf "scale=in_range=mpeg:out_range=full" \ -color_range 2 out.mov

该命令报告:encoder : Lavf57.83.100Video: h264 (libx264) ... yuv420p(pc, progressive)...。

ffplay out.mov抱怨“使用了弃用的像素格式,请确保您正确设置了范围。”
ffprobe out.mov同意结果是yuvj420p,不是我要求的yuv420p

甚至diff报告结果与省略 pix_fmt、vf 和 color_range 选项的命令的结果按位相同。

ffmpeg -h encoder=libx264報告Supported pixel formats: yuv420p yuvj420p ...

对全色彩范围的 yuv420p 进行编码的正确方法是什么?

ffmpeg version 3.4.6-0ubuntu0.18.04.1 configuration: ... --extra-version=0ubuntu0.18.04.1 ... --enable-libx264

相关内容