
Я записал игру с помощью fraps. Записанное видео выглядело отлично.
Затем я отредактировал видео и закодировал его с помощью кодека Huffyuv lossless. Видео выглядело великолепно.
Наконец, я закодировал видео с помощью x264 в FFmpeg, и цвета выглядели размытыми.
Скриншоты:
Huffyuv (выглядит великолепно):
x264 (выглядит размытым):
Настройки x264:
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -b:v 1000k -pass 1 -passlogfile D:\Project\Stats -f mp4 NUL
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -b:v 1000k -pass 2 -passlogfile D:\Project\Stats D:\Project\FFmpeg_MP4.mp4
При кодировании с помощью x264 я получил следующее предупреждение:
No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
Как исправить цвета, чтобы они выглядели так же, как в оригинальном видео?
ОБНОВЛЯТЬ:
Попробовал настройки Mulvya x264 (цвета все еще выглядят размытыми):
ffmpeg -y -color_range 2 -i "D:\Project\TestHuffyuv.avi" -vf scale=in_range=full:out_range=tv -c:v libx264 -b:v 1000k -color_range 1 -pass 1 -passlogfile D:\Project\Stats -f mp4 NUL
ffmpeg -y -color_range 2 -i "D:\Project\TestHuffyuv.avi" -vf scale=in_range=full:out_range=tv -c:v libx264 -b:v 1000k -color_range 1 -pass 2 -passlogfile D:\Project\Stats D:\Project\FFmpeg_MP4.mp4
попробовал переключатель "-pix_fmt yuv420p" x264 (изображение выглядит темнее, цвета по-прежнему размыты):
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -pix_fmt yuv420p -b:v 1000k -pass 1 -passlogfile D:\Project\Stats -f mp4 NUL
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -pix_fmt yuv420p -b:v 1000k -pass 2 -passlogfile D:\Project\Stats D:\Project\FFmpeg_MP4.mp4
попробовал ключ "-pix_fmt yuvj420p" x264 (изображение выглядит темнее оригинала):
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -pix_fmt yuvj420p -b:v 1000k -pass 1 -passlogfile D:\Project\Stats -f mp4 NUL
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -pix_fmt yuvj420p -b:v 1000k -pass 2 -passlogfile D:\Project\Stats D:\Project\FFmpeg_MP4.mp4
Полный вывод консоли:http://pastebin.com/3cJNvVjL
решение1
Пытаться
ffmpeg -y -color_range 2 -i "D:\Project\TestHuffyuv.avi" -vf scale=in_range=full:out_range=tv -c:v libx264 -b:v 1000k -color_range 1 -pass 1 -passlogfile D:\Project\Stats -f mp4 NUL
ffmpeg -y -color_range 2 -i "D:\Project\TestHuffyuv.avi" -vf scale=in_range=full:out_range=tv -c:v libx264 -b:v 1000k -color_range 1 -pass 2 -passlogfile D:\Project\Stats D:\Project\FFmpeg_MP4.mp4
Это также может быть проблема цветового пространства, но давайте посмотрим, сработает ли это.
решение2
Есть такая штука, как сжатие цвета. Полный RGB — это то, что вам нужно выбрать, чтобы сохранить все цвета. YUV422 или YUV420 заметно уберут много цвета (YUV444 делает немного, но почти неразличимо). Причина, по которой это выглядело хорошо на Fraps и HuffYuv, заключается в том, что RGB — это их цветовое пространство по умолчанию, что означает отсутствие сжатия цвета. В x264 должны быть YUV 420, 422, 444, RGB и даже эта опция GREY. Да, видеокодек может легко сохранить все цвета, если вы установите его таким образом.