x264流色移

时间:2017-03-15 09:54:22

标签: x264 swscale

我使用swscale + x264将一系列RGB图像编码为h264流。当输入图像中的RGB值(红色)全部为(255, 0, 0)时,swscale + x264输出的YUV为(81, 90, 240)。通过使用swscale,可以将此YUV值转换回原始RGB值。然而,当我使用PotPlayer来播放流时会出现色移。

我捕获了第一帧并将其保存为bmp文件。 bmp文件中的RGB值为(255, 24, 0),其中绿色通道不为零。

如何解决这个色移问题?

我通过使用sws_setColorspaceDetails将ITU-601色彩空间更改为ITU-709来解决此问题。

1 个答案:

答案 0 :(得分:1)

这可能是由于多种原因造成的。如果swsscale将RGB转换为YUV444以外的任何值,那么在二次采样过程中会丢失一些色度精度。由于H264是有损压缩,因此在压缩过程中也会丢失一些信息。在分析每个阶段的输出之前很难分辨出哪一个导致差异,但看起来损失是由有损编码引起的,而不是颜色转换。