Подтвердить что ты не робот

Как я могу извлечь изображение JPEG хорошего качества из видеофайла H264 с помощью ffmpeg?

В настоящее время я использую эту команду для извлечения изображений:

ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_% 03d.jpeg

Но как улучшить качество изображения JPEG?

4b9b3361

Ответ 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

Также см.