В настоящее время я использую эту команду для извлечения изображений:
ffmpeg -i input.mp4 output_%03d.jpeg
Но как я могу улучшить качество изображения JPEG?
В настоящее время я использую эту команду для извлечения изображений:
ffmpeg -i input.mp4 output_%03d.jpeg
Но как я могу улучшить качество изображения JPEG?
-qscale:v
для контроля качестваИспользуйте -qscale:v
(или псевдоним -q:v
) как вариант вывода.
-qmin 1
(поскольку по умолчанию используется -qmin 2
).ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
Дополнительную информацию о параметрах вывода изображений см. В документации мультиплексора изображений.
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg
Используйте параметр -update 1
мультиплексора изображений. Пример для одного раза в секунду из входа прямой трансляции:
ffmpeg -i rtmp://input.foo -q:v 4 -r 1 -update 1 output.jpg
-qmin 1 -qmax 1
в дополнение к -q:v 1
удвоило размер файла. И я также вижу очень небольшое улучшение.
- person complistic; 27.06.2015
-qmin 1 -qmax 1
приводит к увеличению размера файла, но дает мне точно такое же изображение. Я проверил это через фотошоп, 2 слоя и фильтр различий. Пиксели такие же.
- person cherouvim; 30.11.2015
-qmin 1 -q:v 1
.
- person llogan; 15.10.2017
-qmin
по умолчанию 2
. Вы можете попробовать -q:v 1
, если добавите -qmin 1
.
- person llogan; 08.12.2018
Выведите изображения в формате без потерь, таком как PNG:
mkdir stills
ffmpeg -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png
Затем используйте другую программу (где вы можете более точно указать качество, субдискретизацию и метод DCT - например, GIMP) для преобразования PNG, который вы хотите, в JPEG.
Таким образом можно получить немного более четкие изображения в формате JPEG, чем это возможно при использовании -qmin 1 -q:v 1
, и выводить их в формате JPEG непосредственно из ffmpeg
.
Если вы хотите извлечь только ключевые кадры (которые, вероятно, будут иметь более высокое качество после редактирования), вы можете использовать что-то вроде этого:
ffmpeg -skip_frame nokey -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png
Параметр -vsync 0
избавляет от необходимости указывать частоту кадров с помощью -r
и означает, что все кадры во входном файле обрабатываются как, гм, кадр.
ffmpeg
выводит PNG8
файла, в которых используется только 256 цветов (как в GIF). так что на самом деле это очень с потерями.
- person lapin; 17.02.2020
ffmpeg
] команды я получу png высокого качества, идентичного по качеству исходному видео. Какую версию ffmpeg
вы используете для вывода PNG8
файлов и какой у вас формат ввода?
- person Jake; 20.02.2020
identify image.png
дает результат 8-битный, хотя на самом деле это не одноканальный 8-битный, а 8-битный для R, G и B. IDK, как должен понимать средний identify
пользователь что хотя.
- person lapin; 20.02.2020
ffmpeg
.
- person Jake; 10.12.2020