Es muy sencillo con ffmpeg, y puede dar salida a un fotograma cada N segundos sin scripting extra. Para exportar como una secuencia de imágenes sólo tiene que usar myimage_%04d.png
o algo similar como salida. El bit %0xd
se convierte en un número entero de x
dígitos de longitud - el ejemplo que di obtiene una salida como
myimage_0000.png
,
myimage_0001.png
,
myimage_0002.png
Puede usar muchos formatos de imágenes fijas, png, jpeg, tga, lo que sea (vea ffmpeg -formats
para una lista completa).
Así que ahora sabemos cómo exportar la película como una secuencia de imágenes, pero digamos que no queremos exportar cada uno de los fotogramas?
El truco es simplemente cambiar la velocidad de los fotogramas de la salida a lo que queramos usando la opción -r n
donde n
es el número de fotogramas por segundo. Un fotograma por segundo sería -r 1
, un fotograma cada cuatro segundos sería -r 0.25
, un fotograma cada diez segundos sería -r 0.1
y así sucesivamente.
Así que para ponerlo todo junto, así es como se vería guardar un cuadro de input.mov
cada cuatro segundos a output_0000.png
, output_0001.png
etc.:
ffmpeg -i input.mov -r 0.25 output_%04d.png
Observe que la opción -r 0.25
va después de la parte -i input.mov
, porque está controlando la velocidad de cuadros de la salida. Si la pones antes de la entrada trataría el archivo de entrada como si tuviera la velocidad de fotogramas especificada.
Cambia el %xd por el número de dígitos que necesites, por ejemplo, si el comando va a crear más de 10.000 fotogramas cambia el %04d
por %05d
. Esto también funciona para los archivos de entrada que son secuencia de imágenes. Leer más aquí.
Usuarios de Windows : En la línea de comandos use %
ejemplo: ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png
En los scripts CMD y BAT use %%
ejemplo: ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png
Así que doble %%
en los scripts, y simple %
en la línea de comandos interactiva. Si se equivoca en cualquiera de las dos situaciones, se generará un error.