Я пытаюсь обработать видео, которое я записал со своей карты захвата, и это предполагает сохранение видеокадров в виде изображений PNG в какой-то момент. Проблема в том, что FFmpeg смещает плоскости цветности ~ 2px вправо при преобразовании из YUV в RGB. Это добавляет к уже существующему сдвигу, который вводит моя карта захвата, и становится довольно заметным. Я пробовал решение sws_flags, но оно исправляет только блочность. Я также попытался перевернуть видео по горизонтали перед преобразованием в надежде, что оно изменит направление смещения, но безрезультатно.
Так что мне нужно компенсировать и смещение цветности влево. Я видел примеры использования overlay filter_complex, сдвигающего все видео, а также извлечения цветовых плоскостей с помощью lut_yuv, но я не могу понять, как сдвигать только плоскость цветности. Похоже, в фильтре смешивания нет режима «насыщенности цвета», который позволил бы мне заменить насыщенность цвета его измененной версией.
Цветность увеличивается до полного размера, затем отдельные плоскости извлекаются. В geqфильтрах, применяемых к U и V извлеченным плоскостям, значение каждого пикселя берется из пикселя справа от него. Это потеряет исходные значения самого левого столбца пикселей. Наконец, исходная яркость и обработанные плоскости цветности объединяются. Используя некоторые методики проб и ошибок, вы должны быть в состоянии получить правильные смещения.