LINUX.ORG.RU

ffmpeg каждые 5 сек

 


0

1

Хочу сделать предосмотр кадров в видео плеере, чтобы при наводке на timeline отображался кадр секунды на которую навел. Хочу сделать 1 картинку в которой будут идти кадры 320x240px каждые 5 сек. и потом через background-position их выводить. Нужно нечто подобное https://trac.ffmpeg.org/wiki/How to take multiple screenshots to an image (ti...

Делаю так

ffmpeg -i v.mp4 -frames 1 -q:v 1 -vf "not(mod(n\,40)),scale=-1:120,tile" out.jpg

Но этот пример выбирает 1 кадр через 40, но мне нужно через 5 секунд(в плеере нет возможности привязать кадры, там только секунды). Попробовал поставить вместо n => t(The PTS of the filtered video frame, expressed in seconds), но выводится
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

К тому же не понять как сделать tile, чтобы она автоматом растягивалась под все кадры, если сделать например 10x10, но помещаются в нее не все кадры, а сделать 1000x1000 будет огромный размер картинки
Читал тут https://www.ffmpeg.org/ffmpeg-filters.html#select_002c-aselect пока не могу понять как сделать

★★★★

Все разобрался, оказывается t в миллисекундах, а tile нужно вручную подбирать в зависимости от длинны видео, автоматически вроде нельзя

select=isnan(prev_selected_t)+gte(t-prev_selected_t\,5)

gobot ★★★★
() автор топика

Возник другой вопрос: почему так долго делается. Видео 40 минут h264 640x480 (Baseline, bitrate: 1318 kb/s) превью делается почти за 1 минуту, интервал 1 кадр в 5 сек. Картинка получается 1600x5640px, 480 кадров в ней. Та же манипуляция через программу mnt http://moviethumbnail.sourceforge.net/ 2008 года делается секунд за 5. Из-за чего огромная такая разница и как можно сократить время?
Полная команда

ffmpeg -y -i v.mp4 -frames 1 -q:v 0.5 -vf "select=isnan(prev_selected_t)+gte(t-prev_selected_t\,5),scale=-1:120,tile=10x47" video_preview.jpg

gobot ★★★★
() автор топика
Ответ на: комментарий от Andrey_Utkin

Называется слышешь звон, да не знаешь где он

anonymous
()
Ответ на: комментарий от gobot

Копипаста с хабра:

ffmpeg не в состоянии делать эти снимки быстро (он перематывает видео до нужного момента и лишь потом делает снимок). Для быстрого снятия снимков мы используем утилиту mplayer (http://www.mplayerhq.hu/), которая делает снимки практически моментально перемещаясь по файлу при помощи ключевых кадров.


$ mplayer -ss 00:00:04 -sstep 12 -frames 16 -vo jpeg:outdir=/tmp/pictures/ -nosound output.mp4

kilolife ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.