Crea una imagen cada XX segundos del vídeo

Crea una imagen cada XX segundos del vídeo

Captura de pantalla:tira de película

Lo intentéffmpeg -i video.mkv -vf fps=1 out%d.png

Pero está generando imágenes una por una. Necesito todas las miniaturas en una imagen. como en la captura de pantalla anterior.

Respuesta1

ingrese la descripción de la imagen aquí

ffmpeg -i input -filter_complex \
"select='not(mod(n,30))',scale=120:-1,tile=layout=3x2" \
-vframes 1 -q:v 2 output.jpg
  • seleccionarun fotograma cada 30 segundos
  • escalacada cuadro a un tamaño más pequeño (alternativamente, puedes escalar después del mosaico)
  • tejacada cuadro en una imagen. El tamaño de cuadrícula predeterminado es 6x5, por lo que es posible que tengas que ajustarlo layoutdependiendo de cuántas imágenes quieras mostrar.

El proceso puede tardar algún tiempo dependiendo de la duración y el formato de la entrada.

Respuesta2

puedes usar algo como

ffmpeg -i video.mkv -filter:v "select=not(mod(n\,10)),setpts=N/((25)*TB)" -qscale:v 2 frame%03d.jpg
  • los selectcontroles que fotogramas estás agarrando (en este caso uno de cada 10)
  • controla setpsla velocidad de cuadros y depende de su fuente: 25para video PAL o 30000/1001NTSC
  • qscalecontrola la calidad (escala de cuantificación) de los cuadros de salida de 2 (mejor) a 31 (peor)

Acabo de notar tu edición anterior, si eso te da los marcos que deseas usar, debería estar bien como punto de partida.

Luego necesitarás unir las imágenes en un solo recurso usando una herramienta comoImagenMagia

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

información relacionada