gpt4 book ai didi

ffmpeg - 无损 RGB24 到 YUV444 的转换

转载 作者:行者123 更新时间:2023-12-04 22:47:27 26 4
gpt4 key购买 nike

我目前正在尝试在 FFMPEG 上使用 H264 对 RGB24 文件进行无损压缩。但是,H264 压缩(RGB24 -> YUV444)中使用的色彩空间转换已被证明是有损的(我猜测是由于量化误差)。
在用无损 H264 压缩它们之前,还有什么我可以使用(例如程序)将我的 RGB24 文件无损转换为 YUV 的吗?

最终目标是压缩一个 RGB24 文件然后解压缩,解压后的文件与原始文件完全匹配。例如 RGB24 -> YUV444 -> 压缩的 YUV44 -> 解压缩的 YUV444 -> RGB24。

这是可能吗?

最佳答案

这是我的答案的复制/粘贴:
RGB-frame encoding - FFmpeg/libav

让我们看看色彩空间转换。

void YUVfromRGB(double& Y, double& U, double& V, const double R, const double G, const double B)
{
Y = 0.257 * R + 0.504 * G + 0.098 * B + 16;
U = -0.148 * R - 0.291 * G + 0.439 * B + 128;
V = 0.439 * R - 0.368 * G - 0.071 * B + 128;
}

并插入一些虚拟值:
R = 255, G = 255, B = 255
Y = 235

R = 0, G = 0, B = 0
Y = 16

如您所见,范围 0 -> 255 被压缩为 16 -> 235。因此,我们已经证明 RGB 颜色空间中有一些颜色在(数字)YUV 颜色空间中不存在。因此,根据定义,转换是有损的。

关于ffmpeg - 无损 RGB24 到 YUV444 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22496938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com