Как я могу преобразовать видеофайл в последовательность изображений, например, один кадр каждый секунды N. mplayer или ffmpeg могут сделать это? Я использовал MPlayer для захвата снимков экрана вручную, но я хотел бы автоматизировать это для длинного видео.
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
С ffmpeg
, можно сделать следующее:
ffmpeg -ss 4 -i input.avi -s 320x240 -frames:v 1 output.jpg
Эта команда генерирует 320×240, измерил миниатюру JPG в 4-ю секунду в видео. Поместите это в сценарий, который изменяет время и имя файла, и Вы сделаны.
Подробнее: Создайте изображение миниатюр каждые X секунд видео
VirtualDub может сделать это для Вас
File
-> Export
-> Image sequence
Вы могли также попробовать это
из командной строки 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, - путь снимка позволяет Вам выбрать, где сохранить Ваши ограничения.