La guía paso a paso o código que hallarás en este post es la solución más sencilla y efectiva que hallamos a esta inquietud o problema.
Solución:
Es muy simple con ffmpeg, y pueden emite un cuadro cada N segundos sin que secuencias de comandos adicionales. Para exportar como una secuencia de imágenes solo use myimage_%04d.png
o similar a la salida. los %0xd
bit se convierte en un entero con ceros x
dígitos de largo: el ejemplo que di obtiene la salida como
-
myimage_0000.png
, -
myimage_0001.png
, -
myimage_0002.png
etc..
Puede usar muchos formatos de imágenes fijas, png, jpeg, tga, lo que sea (ver ffmpeg -formats
para obtener una lista completa).
Ok, ahora sabemos cómo exportar la película como una secuencia de imágenes, pero digamos que no queremos exportar cada fotograma.
El truco es simplemente cambiar la velocidad de fotogramas de la salida a lo que queramos usando el -r n
opción donde n
es el número de fotogramas por segundo. 1 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í.
Entonces, para ponerlo todo junto, así es como se vería guardar un cuadro de input.mov
cada cuatro segundos para output_0000.png
, output_0001.png
etc.:
ffmpeg -i input.mov -r 0.25 output_%04d.png
Tenga en cuenta que el -r 0.25
la opción va después la -i input.mov
parte, porque está controlando la velocidad de fotogramas de la producción. si lo pones antes de la entrada, trataría el archivo de entrada como si tuviera la velocidad de fotogramas especificada.
Cambie el %xd a la cantidad de dígitos que necesite, por ejemplo, si el comando crearía más de 10,000 cuadros, cambie el %04d
a %05d
. Esto también funciona para archivos de entrada que son secuencias de imágenes. Leer más aquí.
Usuarios de Windows: En el uso de la línea de comando %
ejemplo: ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png
En el uso de CMD y BAT Scripts %%
ejemplo: ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png
tan doble %%
en guiones, y solo %
en la línea de comando interactiva. Hacerlo mal en cualquier situación generará un error.
mplayer -vo jpeg -sstep 5 file.avi
guardará un cuadro como un archivo jpeg cada 5 segundos.
Sin embargo, no se detendrá al final del archivo, seguirá produciendo copias del último cuadro. Para evitar esto, busca la duración del video en segundos, usando otro reproductor, o con mplayer:
mplayer -vo null -ao null -frames 0 -identify file.avi
y busque una línea como “ID_LENGTH=147.00”.
Resta 2 de la longitud y usa este valor para el -endpos
opción. Por ejemplo, para un video de 147 segundos:
mplayer -vo jpeg -sstep 5 -endpos 145 file.avi
Con ffmpeg
puede hacer lo siguiente:
ffmpeg -ss 4 -i input.avi -s 320x240 -frames:v 1 output.jpg
Este comando genera una miniatura JPG de tamaño 320 × 240 en el cuarto segundo del video. Ponga esto en un script que cambie la hora y el nombre del archivo y listo.
Más información: Crea una imagen en miniatura cada X segundos del video
valoraciones y reseñas
Finalizando este artículo puedes encontrar los informes de otros sys admins, tú igualmente tienes la habilidad insertar el tuyo si lo crees conveniente.