
Tengo una cámara CCTV que carga imágenes JPEG (.jpg) a un servidor FTP cuando detecta movimiento. Parece que recibimos bastantes imágenes, por lo que me gustaría convertirlas en un video para facilitar la visualización.
He realizado varias búsquedas en Google, pero nada produce lo que espero ver. La carpeta que estoy usando tiene más de 2000 imágenes que se denominan AyyMMddhhmmssff.jpg. Si necesito cambiar el nombre, puedo hacerlo porque ya creo que lo necesito para que FFMPEG funcione.
Me gustaría una imagen por segundo, o tal vez 2 por segundo para que las imágenes sean fáciles de ver al reproducir el video. ¡Sí, sé que eso resultará en un video de más de 20/40 minutos!
¡Estoy contento con una solución de Windows, macOS o Ubuntu! Mi preferencia sería Windows (ya que ahí es donde está el servidor FTP).
ImagenMagia
convert *.jpg video.mpg
Esto sonaba genial, bonito y sencillo. Sin embargo, lo probé en mi Mac (instalado a través de Brew) y Ubuntu y ambos detuvieron el rendimiento del sistema relativo y, después de 20 minutos, todavía no terminé. ¡Tuve que reiniciar la Mac porque no podía hacer nada!
FFMPEG
ffmpeg -y -r 6 -f image2 -s 1920x1080 -i <path>\%06d.jpg -vcodec libx264 -pix_fmt yuv420p <path>/video.mp4
No soy un experto en el uso de FFMPEG, pero lo he usado para varias tareas y descubrí que es una gran utilidad para tener a mano. El comando anterior produce un video, pero las imágenes se muestran demasiado rápido, eliminando el objetivo del video. Intenté modificar los valores y puedo mejorarlos, pero no es exactamente lo que busco. ¡Un intento (configurar -r 1
IIRC) resultó en una sola imagen para todo el video! ¡Está claro que no entiendo los diversos argumentos del comando FFMPEG a pesar de que he consultado el manual!
Respuesta1
Si cambia el nombre de las imágenes para que se numeren consecutivamente, puede usar
ffmpeg -y -framerate 1 -i <path>\%06d.jpg -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
Numerados consecutivamente, como en ,, 000001.jpg
... Tenga en cuenta que hay exactamente 6 caracteres en cada nombre, lo que satisface lo pasado a ffmpeg.000002.jpg
000003.jpg
%06d
Si no desea cambiar el nombre, cree un archivo de texto del formulario,
file first.jpg
file second.jpg
file third.jpg
...
file last.jpg
y luego
ffmpeg -f concat -r 1 -i list.txt -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
Respuesta2
en lugar de -r 5, cámbielo a -framerate 5. Eso producirá un video con 5 fotogramas por segundo. Puede ajustar ese número para adaptarlo a sus necesidades, 1 mostraría cada imagen durante 1 segundo, 10 recorrería más rápidamente.
ffmpeg -y -framerate 1 -i <path>\%06d.jpg -framerate 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
or
ffmpeg -f concat -r 1 -i list.txt -framerate 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4