我使用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来解决此问题。
答案 0 :(得分:1)
这可能是由于多种原因造成的。如果swsscale将RGB转换为YUV444以外的任何值,那么在二次采样过程中会丢失一些色度精度。由于H264是有损压缩,因此在压缩过程中也会丢失一些信息。在分析每个阶段的输出之前很难分辨出哪一个导致差异,但看起来损失是由有损编码引起的,而不是颜色转换。