Ответ 1
Использовать -qscale:v
В качестве опции вывода используйте -qscale:v
(или псевдоним -q:v
). Эффективный диапазон для JPEG составляет 2-31, а наихудшее качество - 31. Я рекомендую попробовать значения 2-5.
Вы можете добавить -huffman optimal
для небольшого, но измеримого уменьшения размера выходного файла.
Чтобы вывести серию изображений:
ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
Для вывода одного изображения с длительностью ~ 60 секунд:
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 -huffman optimal output.jpg
Это будет работать с любым видеовходом. См. Ниже, если ваш вход MJPEG.
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