i使用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颜色空间来解决此问题。
这可能是由于多种原因。如果SWSSCALE将RGB转换为YUV444以外的任何内容,那么您将在子采样过程中失去一些色度精度。而且由于H264是有损的压缩,因此您也会在压缩过程中丢失一些信息。在分析每个阶段的输出之前,很难说出哪一个引起差异,但是看起来损失是由损失的编码造成的,而不是颜色转换。