¿Cómo creo un video de lapso de tiempo a partir de una colección de fotografías en Linux?

Quiero crear un lapso de tiempo a partir de una colección de imágenes, en Ubuntu. Me gustaría hacer videos HD, e idealmente agregar una banda sonora.

no he visto eso Puedo eliminar esta pregunta y publicar mi respuesta allí. ¿Eso esta bien?
Ni siquiera estoy seguro de si este es el mejor sitio de intercambio de pilas para esto. Solo quiero compartir lo que hice.
Hay una pregunta similar en askubuntu.com . La mayoría de las respuestas están cubiertas aquí al momento de escribir, pero eso podría cambiar en el futuro, por supuesto.

Respuestas (6)

Ffmpeg lo hará. Si tiene imágenes img001.jpg, img002.jpg, img003.jpg, ..., en la línea de comando haga lo siguiente:

ffmpeg -i img*.jpg output.mpeg

Hay más opciones en ffmpeg --helplas páginas de manual o en la web. Estos permiten el control sobre la velocidad de fotogramas y el formato de salida.

Usar esto produce un error para mí, ya que considera los últimos .jpgarchivos como un archivo de salida. Entiendo File 'DSCF6134.JPG' already exists. Overwrite ? [y/N], no tan bien. Mi solución fue generar una lista de archivos \ls *.JPG | sed "s/^/file '/;s/$/'/" > files.txty luego cargarla con ffmpeg -f concat -i files.txt output.mpeg.
Con otras versiones de ffmpeg, la siguiente versión funciona sin intentar anular las imágenes:ffmpeg -pattern_type glob -i "picture*.jpg" output.mpeg

Primero cambiamos el nombre de todos los archivos *.JPG según su fecha de creación. A veces, las cámaras cambian el nombre del archivo o simplemente ordenarlas no es lo que queremos. Sin embargo, cambiarles el nombre por la fecha de creación siempre funciona:

jhead -n%Y%m%d-%H%M%S *.JPG

Después de eso ponemos esta lista en un archivo:

ls -1tr | grep -v files.txt > files.txt

Y luego use mencoderpara crear un AVIvideo usando 20 fps. Tenga en cuenta que esto generará un archivo de video enorme, generalmente del mismo tamaño que todas las imágenes sumadas.

mencoder -nosound -noskip -oac copy -ovc copy -o output.avi -mf fps=20 'mf://@files.txt'

Normalmente tomo fotos para timelapse con la resolución más baja de mi cámara (5 MP), que tiene una relación de aspecto de 4:3. Para generar un video de 1080p adecuado, la imagen primero se vuelve a escalar a 1920 píxeles de ancho y luego la recorto a 1080 de alto. De esta manera no estoy cambiando el contenido de las fotos, solo recortando:

ffmpeg -i output.avi -y -sameq -vf scale=1920:1440,crop=1920:1080 output-final.avi

La razón por la que uso mencoder para juntar las fotos es porque obtuve una segmentation faultcon ffmpeg.

Para el segfault, sería útil conocer su versión de ffmpeg.
Si, como yo, filmaste en 3:2 (las imágenes fijas de mi D750 son 6016x4016) y lo necesitas en 16:9 (para video 4k) 3840x2160, puedes usar FFMPEG para Pillerboxear el video y rellenar líneas de tranvía negras a los lados con este comando: ffmpeg -i output.avi -qscale 0 -vf "scale=3840:2160:force_original_aspect_ratio=decrease,pad=3840:2160:(ow-iw)/2:(oh-ih)/2" output-final.avi - Video será más grande pero sin pérdida de calidad ya que se está reduciendo
en su ffmpegcomando, la -sameqopción ahora se reemplaza con-qscale 0

Blender es una buena solución si se trata de un lapso de tiempo de movimiento (hiperlapso) o imágenes inestables. Tiene capacidades de seguimiento de movimiento para que pueda elegir un punto fijo para realizar un seguimiento a lo largo del lapso de tiempo. También puede solucionar problemas de rotación.

También te puede interesar el proyecto timelapse-darktable . Facilita el posprocesamiento de imágenes con darktable y hace un lapso de tiempo de la serie. Las instrucciones de cómo usarlo se encuentran aquí: https://code.google.com/p/timelapse-darktable/wiki/generateTimelapse

Puedes usar mencoder. Las opciones son bastante explícitas:

  • enumere todos sus archivos de imágenes.

Si todos están en el directorio actual con nombres ordenados y quieres la lista en el archivo /tmp/files.txt:

ls -1 *jpg > /tmp/files.txt

  • Utilice mencoder con la opción adecuada.

Si desea que el archivo de salida sea /tmp/test.avi con 30 fps:

mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4 -o /tmp/test.avi -mf type=jpeg:fps=30 mf://@/tmp/files.txt

Kdenlive también puede generar timelapses usando el Add Slideshow Clipmenú, como se explica en este tutorial .

Según el mismo sitio , Openshot tiene una funcionalidad similar pero no la recomienda porque tiene "demasiados errores". Aún así, si es su editor de video preferido, le alegrará saber que puede simplemente arrastrar y soltar una secuencia de archivos con el nombre correcto (001.jpg a NNN.jpg) en una ventana de Openshot para importarlos también como un lapso de tiempo.

Esa guía es de 2014. OpenShot ha demostrado mucho en los últimos años, ahora es mucho más confiable.