У меня есть файл PNG с белым на красном и без сглаживания вообще - каждый пиксель либо белый, либо красный, но когда я кодирую его в MP4, используя ffmpeg -i test.png -profile:v high444 -pix_fmt yuv444p -loop 1 -crf 0 -framerate 30 -c:v libx264 -t 15 test444.mp4
вывод, добавляются темные пиксели, а белый цвет изменяется. Смотрите увеличенный снимок экрана ниже, чтобы увидеть до и после. Я воспроизвел файл mp4 с помощью ffplay
btw.
Оригинальный PNG ниже:
Это артефакт рендеринга, а не фактическая ошибка.
Видеть
ffplay test444.mp4 -vf scale=iw*16:-1:flags=neighbor
и
ffmpeg -i test444.mp4 roundtrip.png
Вы не должны видеть черных пикселей.
Обновление : ffplay понижает разрешение ввода YUV до 420 перед окончательным преобразованием в RGB.
[swscaler @ 0000000005a82800] bicubic scaler, from yuv444p to yuv420p using MMXEXT
Вы можете избежать артефактов, напрямую вызвав фильтр формата пикселей.
ffplay test444.mp4 -vf format=bgra
Гьян
g491
Гьян
g491
Гьян
g491
ffplay test444.mp4
и скриншота, сделанного с помощью Greenshot (обратите внимание, что скриншот файла PNG не имеет проблем - только полученный файл MP4). Спасибо