Стек изображений с фильтром «hstack» из видео или последовательности изображений в ffmpeg

Можно ли вводить видео и извлекать изображения каждую секунду, одновременно складывая их по горизонтали или вертикали с помощью фильтра «hstack» для создания одного изображения jpg?

Единственный способ понять, как это сделать, — извлечь неподвижные кадры с помощью этой команды:

ffmpeg -i INPUT.mov -vf fps=1 -s 192x108 thumbnails%03d.jpg

А затем вводить их один за другим, а затем указывать количество таких входов.

ffmpeg -y -i thumbnails001.jpg -i thumbnails002.jpg -i thumbnails003.jpg... filter_complex vstack=inputs=3 output.jpg

Было бы неплохо, если бы можно было сделать еще один динамический чанк из исходного видео или хотя бы из одной введенной Видео-Последовательности, а не вставлять вручную количество ВХОДОВ, необходимых для создания Стека.

Ответы (1)

Для этого лучше использовать tileфильтр:

ffmpeg -i INPUT.mov -vf fps=1,scale=192:108,tile=54x1 output.jpg

Аргумент плитки представляет собой размер прямоугольника. Таким образом, для 54-секундного видео 54x1создается горизонтальный стек из 54 кадров. Используйте 1x54для вертикального стека.

Большое спасибо. Работает как шарм. Можно ли указать, какой номер кадра он должен выбирать каждую секунду? Теперь для клипа со скоростью 25 кадров в секунду он, кажется, выбирает кадр 13. Я бы хотел, чтобы он выбирал первый кадр каждую секунду.
Заменить fps=1наselect='not(mod(n,25))'
Еще раз большое спасибо! Мне нужно было добавить его в "" в этой цепочке фильтров. Теперь это работает.-vf "select='not(mod(n,25))'",scale=960:540,colormatrix=bt709:bt601,tile=30x1