FFmpeg: Как разбить видео на картинки с определенным промежутком времени
Понадобилось мне из одного большого вебинара вытащить некоторые кадры с презентации, на которую время от времени переключался ведущий. На ум сразу пришло, перематывать и делать скриншоты. Но, уже на 5 кадре, я понял, что это не удобно, т.к. перематывать видео и ловить эти кадры не очень удобно. Я придумал, сделать раскадровку видео, т.е. конвертировать видео файл в картинки с определенным шагом. Имея раскадровку удалить лишнее будет просто. Благо, все уже придумали до нам и сделать это можно с помощью ffmpeg...
Я уже писал, об этой утилите вот тут: Скачать youtube видео и разбить его по кадрам в jpeg, но, продублирую команды для нового описанного.
1) Вытащить кадр из видео по определенному времени и сохранить в картинку
1 2 3 |
ffmpeg -i input.flv -ss 00:00:14.435 -vframes 1 out.png |
тут, утилита возьмет 1 кадр из видео с позиции 0h:0m:14sec:435msec и запишет в png файл
2) Записывать по 1 кадру каждую секунду
1 2 3 |
ffmpeg -i input.flv -vf fps=1 out%d.png |
на выходе получим раскадровку в файлах out1.png, out2.png, out3.png ..
3) Вытащить кадры с интервалом 15 сек и записать их в формате img00007.jpg
1 2 3 |
ffmpeg -i myvideo.avi -vf fps=1/15 img%05d.jpg |
каждую минуту
1 2 3 |
ffmpeg -i myvideo.avi -vf fps=1/60 img%05d.jpg |
каждые 10 минут
1 2 3 |
ffmpeg -i myvideo.avi -vf fps=1/600 img%05d.jpg |
4) Вытащить ключевые кадры
1 2 3 |
ffmpeg -i input.flv -vf "select='eq(pict_type,PICT_TYPE_I)'" -vsync vfr thumb%04d.png |
Как видите решить задачу с ffmpeg довольно просто, мне понадобилось всего 10 минут, на обработку 3х часового видео.
Author: | Tags: /
| Rating:
Leave a Reply