В настоящее время я использую эту команду для извлечения изображений:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_% 03d.jpeg
Но как я могу улучшить качество изображения JPEG?
В настоящее время я использую эту команду для извлечения изображений:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_% 03d.jpeg
Но как я могу улучшить качество изображения JPEG?
Ответы:
-qscale:v
Используйте -qscale:v
(или псевдоним -q:v
) как вариант вывода. Эффективный диапазон для JPEG - 2-31, где 31 - худшее качество. Я рекомендую попробовать значения 2-5.
ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg
Это будет работать с любым видеовходом. См. Ниже, если ваш ввод - MJPEG.
Если ваш входной файл - MJPEG (Motion JPEG), изображения можно извлечь без потери качества.
ffmpeg
Или ffprobe
консольный вывод может сказать вам , если ваш вход MJPEG:
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi
codec_name=mjpeg
Затем вы можете извлечь кадры с помощью mjpeg2jpeg
фильтра битового потока :
$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg
-qmin 1 -qmax 1
в дополнение к -q:v 1
удвоили размер файла. И я также вижу очень небольшое улучшение.
-qmin 1 -qmax 1
к большему файлу, но дает мне точно такое же изображение. Я проверил это через фотошоп, 2 слоя и фильтр различий. Пиксели такие же.
-qmin 1 -q:v 1
.
Выведите изображения в формате без потерь, таком как PNG:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.png
Затем используйте другую программу (где вы можете более точно указать качество, субдискретизацию и метод DCT - например, GIMP), чтобы преобразовать нужные PNG в JPEG.
Таким образом можно получить немного более четкие изображения в формате JPEG, чем это возможно при -qmin 1 -q:v 1
прямом выводе в формате JPEG ffmpeg
.
ffmpeg
выводит PNG8
файлы, в которых используется только 256 цветов (как в GIF). так что на самом деле это очень с потерями.
ffmpeg
] я получу png высокого качества, идентичного качеству исходного видео». Какую версию ffmpeg
вы используете для вывода PNG8
файлов и какой у вас формат ввода?
identify image.png
результат был "8-битным", хотя на самом деле это не одноканальный 8-битный, а 8-битный для R, G и B. IDK, как identify
должен понимать средний пользователь что то.