Saltar al contenido

¿Cómo extraer un cuadro de un video cada N segundos a una imagen?

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 1un fotograma cada cuatro segundos sería -r 0.25un 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 -endposopción. Por ejemplo, para un video de 147 segundos:

mplayer -vo jpeg -sstep 5 -endpos 145 file.avi

Con ffmpegpuede 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *