Смещение цвета потока x264
Я использовал swscale + x264 для кодирования последовательности изображений RGB в поток h264. Когда все значения RGB во входном изображении (красным) (255, 0, 0)
YUV, выводимый swscale + x264, равен (81, 90, 240)
, Используя swscale, это значение YUV может быть преобразовано обратно в исходное значение RGB. Однако при воспроизведении потока я использовал PotPlayer.
Я захватил первый кадр и сохранил его как файл BMP. Значение RGB в файле bmp: (255, 24, 0)
где зеленый канал не ноль.
Как решить эту проблему смещения цвета?
Я решаю эту проблему, изменяя цветовое пространство ITU-601 на ITU-709, используя sws_setColorspaceDetails
,
1 ответ
Это может быть связано с несколькими причинами. Если swsscale преобразует RGB во что-либо, кроме YUV444, то вы теряете некоторую точность цветности в процессе подвыборки. А поскольку H264 - это сжатие с потерями, вы потеряете некоторую информацию и в процессе сжатия. Трудно сказать, какая из них вызывает разницу, пока вы не проанализируете выходные данные каждого этапа, но похоже, что потеря вызвана кодированием с потерями, а не преобразованием цвета.