有没有办法使用 ffmpeg 将 RGB 转换为真正的 YUV(不是 YCbCr)?

Is there a way to use ffmpeg for RGB to true YUV (not YCbCr) conversion?

据我所知see in the documentation,所有涉及 YUV 的转换实际上都使用 YCbCr。虽然有细微差别,但我想转换为实际的 YUV 格式。有什么办法可以使用 ffmpeg 吗?事后想想,有没有其他方法可以像ffmpeg一样快?

Image source

事实证明这是可能的:例如当使用 AVCodecContext

处理 AVFrame
  • 使用 <a href="https://github.com/FFmpeg/FFmpeg/blob/release/3.2/libavutil/pixfmt.h#L74" rel="nofollow noreferrer">AV_PIX_FMT_YUV</a><b>J</b><a href="https://github.com/FFmpeg/FFmpeg/blob/release/3.2/libavutil/pixfmt.h#L74" rel="nofollow noreferrer">420P</a> 代替 AV_PIX_FMT_YUV_420P(已弃用),
  • 或使用 AV_PIX_FMT_YUV_420P 并设置 color_range to AVCOL_RANGE_JPEG.

所有链接均与版本 3.2 有关。

编辑: 我相信实际的数学转换在 yuv2rgb.c.

不,这是不可能的。 YUV 是 PAL ITU-R BT.470 标准,用于模拟电视,它不再使用了。您可以将 https://github.com/fsphil/hacktv 与软件无线电一起使用。

https://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavutil/pixfmt.h;h=d41d1ca12fd381058df41cddfb74fa8e21ad13b0;hb=HEAD#l62

这些不使用 YCbCr 或 YUV,它们是像素格式,而不是颜色矩阵。