4

Снимок экрана: FilmStrip

Я попытался ffmpeg -i video.mkv -vf fps=1 out%d.png

Но он генерирует один за другим изображения. Мне нужны все миниатюры в одном изображении. как на скриншоте выше.

2 ответа2

4

ffmpeg -i input -filter_complex \
"select='not(mod(n,30))',scale=120:-1,tile=layout=3x2" \
-vframes 1 -q:v 2 output.jpg
  • выберите один кадр каждые 30 секунд
  • масштабировать каждый кадр до меньшего размера (в качестве альтернативы вы можете масштабировать после плитки)
  • мозаику каждого кадра в одно изображение. Размер сетки по умолчанию - 6x5, поэтому вам, возможно, придется настроить его с помощью layout зависимости от того, сколько изображений вы хотите отобразить.

Процесс может занять некоторое время в зависимости от продолжительности ввода и формата.

0

Вы можете использовать что-то вроде

ffmpeg -i video.mkv -filter:v "select=not(mod(n\,10)),setpts=N/((25)*TB)" -qscale:v 2 frame%03d.jpg
  • select контролирует, какие кадры вы захватываете (в данном случае один из каждых 10)
  • setps контролирует частоту кадров и зависит от вашего источника - 25 для PAL или 30000/1001 для NTSC видео
  • qscale управляет качеством (масштабом квантования) выходных кадров от 2 (наилучшее) до 31 (худшее)

только что заметил ваши изменения выше, если это дает вам кадры, которые вы хотите использовать, должно быть хорошо в качестве отправной точки

Затем вам нужно будет объединить изображения в единый ресурс с помощью инструмента, такого как ImageMagick.

montage -background "transparent" -depth 8 -type TrueColorMatte frame??.jpg \
    -geometry 50x50 -tile 10x10 -matte -transparent "transparent" \
    -type TrueColorMatte -depth 8 allframes.jpg

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .