Как извлечь один кадр видео каждый секунды N к изображению?

Как я могу преобразовать видеофайл в последовательность изображений, например, один кадр каждый секунды N. mplayer или ffmpeg могут сделать это? Я использовал MPlayer для захвата снимков экрана вручную, но я хотел бы автоматизировать это для длинного видео.

71

4 ответа

mplayer -vo jpeg -sstep 5 file.avi

будет сохранять кадр как jpeg файл каждые 5 секунд.

Однако это не остановится в конце файла, это продолжит производить копии последнего кадра. Для предотвращения этого найдите продолжительность видео в секундах, с помощью другого плеера, или с mplayer:

mplayer -vo null -ao null -frames 0 -identify file.avi

и ищите строку как "ID_LENGTH=147.00".

Вычтите 2 из длины и используйте это значение для -endposопция. Например, для 147-секундного видео:

mplayer -vo jpeg -sstep 5 -endpos 145 file.avi
27
ответ дан 07.12.2019, 08:10

С ffmpeg, можно сделать следующее:

ffmpeg -ss 4 -i input.avi -s 320x240 -frames:v 1 output.jpg

Эта команда генерирует 320×240, измерил миниатюру JPG в 4-ю секунду в видео. Поместите это в сценарий, который изменяет время и имя файла, и Вы сделаны.

Подробнее: Создайте изображение миниатюр каждые X секунд видео

11
ответ дан 07.12.2019, 08:10

VirtualDub может сделать это для Вас

File -> Export -> Image sequence

enter image description here

2
ответ дан 07.12.2019, 08:10

Вы могли также попробовать это

из командной строки VLC...

vlc "C:\YOUR\file\path\file.avi"-V изображение - image-out-prefix=capname - image-out-ratio=60

file.avi является видео, от которого Вы хотите записать, capname является префиксом сохраненных образов, Вы могли бы хотеть играть вокруг с отношением (60 средств, который 1 из 60 изображений получен), можно добавить, что больше команд, например - image-out-format jpeg сохранит ограничения как jpegs вместо pngs, - путь снимка позволяет Вам выбрать, где сохранить Ваши ограничения.

Источник вышеупомянутых

1
ответ дан 07.12.2019, 08:10

Теги

Похожие вопросы