我使用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解决了这个问题。
发布于 2017-03-15 19:58:40
这可能是由于多种原因造成的。如果swsscale将RGB转换为YUV444以外的任何值,则在子采样过程中会丢失一些色度精度。由于H264是有损压缩,因此在压缩过程中也会丢失一些信息。在分析每个阶段的输出之前,很难判断是哪个阶段造成了差异,但看起来损失是由有损编码造成的,而不是颜色转换。
https://stackoverflow.com/questions/42806258
复制相似问题