Смещение цвета потока 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 - это сжатие с потерями, вы потеряете некоторую информацию и в процессе сжатия. Трудно сказать, какая из них вызывает разницу, пока вы не проанализируете выходные данные каждого этапа, но похоже, что потеря вызвана кодированием с потерями, а не преобразованием цвета.

Другие вопросы по тегам