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

Как извлечь 1 снимок экрана для видео с ffmpeg в данный момент?

Есть много учебников и материалов, показывающих, как извлечь несколько скриншотов из видео с помощью ffmpeg. Вы устанавливаете -r, и вы даже можете запустить определенную сумму.

Но я просто хочу 1 снимок экрана, скажем, 01:23:45 в. Или 1 снимок экрана на 86%.

Это возможно с ffmpegthumbnailer, но это другая зависимость, от которой я не хочу зависеть. Я хочу иметь возможность сделать это с помощью ffmpeg.

4b9b3361

Ответ 1

Используйте параметр -ss:

ffmpeg -ss 01:23:45 -i input -vframes 1 -q:v 2 output.jpg
  • Для вывода JPEG используйте -q:v для управления качеством вывода. Полный диапазон - линейная шкала 1-31, где более низкое значение приводит к более высокому качеству. 2-5 - хороший диапазон, чтобы попробовать.

  • выбрать фильтр предоставляет альтернативный метод для более сложных потребностей, таких как выбор только определенных типов кадров или 1 на 100 и т.д..

  • Размещение -ss до того, как вход будет быстрее. См. FFmpeg Wiki: Поиск и этот отрывок из ffmpeg документация cli tool:

-ss позиция (вход/выход)

При использовании в качестве опции ввода (до -i) ищет в этом входном файле положение. Обратите внимание, что в большинстве форматов невозможно найти точно, поэтому ffmpeg будет искать ближайшую точку поиска до должность. Когда транскодирование и -accurate_seek включены ( по умолчанию), этот дополнительный сегмент между точкой поиска и позицией будет быть декодированным и отброшенным. При копировании потока или когда -noaccurate_seek, он будет сохранен.

При использовании в качестве опции вывода (перед выходным именем файла), декодирует, но отбрасывает ввод до тех пор, пока метки времени не достигнут позиции.

может быть либо в секундах, либо в форме hh:mm:ss[.xxx].

Ответ 2

FFMpeg может сделать это, обратившись к заданной метке времени и извлекая ровно один кадр в качестве изображения, см., например:

ffmpeg -i input_file.mp4 -ss 01:23:45 -vframes 1 output.jpg

Объясните варианты:

-i input file           the path to the input file
-ss 01:23:45            seek the position to the specified timestamp
-vframes 1              only handle one video frame
output.jpg              output filename, should have a well-known extension

Параметр -ss принимает значение в форме HH:MM:SS[.xxx] или как число в секундах. Если вам нужен процент, вам нужно заранее вычислить продолжительность видео.