¿Cómo creo un video timelapse a partir de una colección de fotografías en Linux?
19
Quiero crear un lapso de tiempo a partir de una colección de imágenes, en Ubuntu. Me gustaría hacer videos en HD e idealmente agregar una banda sonora.
No he visto eso. Puedo eliminar esta pregunta y publicar mi respuesta allí. ¿Eso esta bien?
Frederico Schardong
Ni siquiera estoy seguro de si este es el mejor sitio de stackexchange para esto. Solo quiero compartir lo que hice.
Frederico Schardong
Hay una pregunta similar en askubuntu.com . Las respuestas están cubiertas principalmente aquí en el momento de la escritura, pero eso podría cambiar en el futuro, por supuesto.
anarcat
Respuestas:
11
Ffmpeg lo hará. Si tiene imágenes, img001.jpg, img002.jpg, img003.jpg, ...entonces en la línea de comando haga:
ffmpeg -i img*.jpg output.mpeg
Hay más opciones en las ffmpeg --helppáginas man o en la web. Permiten controlar la velocidad de fotogramas y el formato de salida.
Usar esto produce un error para mí, ya que considera los últimos .jpgarchivos como el archivo de salida. Me pongo File 'DSCF6134.JPG' already exists. Overwrite ? [y/N], no tan genial. Mi solución fue generar una lista de archivos \ls *.JPG | sed "s/^/file '/;s/$/'/" > files.txty luego cargarla ffmpeg -f concat -i files.txt output.mpeg.
anarcat
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
Patrick R.
9
Primero cambiamos el nombre de todos los archivos * .JPG en función de su fecha de creación. A veces las cámaras cambian el nombre del archivo o simplemente ordenarlas de alguna manera no es lo que queremos. Sin embargo, renombrarlos 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 gran archivo de video, generalmente alrededor del mismo tamaño de todas las imágenes sumadas.
Por lo general, tomo fotos para timelapse con la resolución más baja de mi cámara (5 MP), que tiene una relación de especificaciones de 4: 3. Para generar un video de 1080p adecuado, la imagen se vuelve a escalar a 1920 píxeles de ancho y luego la recorto a 1080 de altura. De esta manera no estoy cambiando el contenido de las fotos, solo recortando:
Para el segfault sería útil conocer su versión de ffmpeg.
Unapiedra
Si como yo grabaste en 3: 2 (mis imágenes fijas D750 son 6016x4016) y lo necesitas en 16: 9 (para video 4k) 3840x2160, puedes usar FFMPEG para Pillerbox el video y rellenar las líneas negras de tranvía a los lados con este comando - ffmpeg -i output.avi -qscale 0 -vf "scale = 3840: 2160: force_original_aspect_ratio = disminuir, pad = 3840: 2160: (ow-iw) / 2: (oh-ih) / 2" output-final.avi - Video será más grande pero no perderá calidad ya que esto se está reduciendo
Rob
en su ffmpegcomando, la -sameqopción ahora se reemplaza con-qscale 0
transang
3
Blender es una buena solución si se trata de timelapse de movimiento (hyperlapse) o imágenes inestables. Tiene capacidades de seguimiento de movimiento para que pueda elegir un punto fijo para seguir durante todo el lapso de tiempo. También puede solucionar problemas de rotación.
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 es "demasiado defectuosa". Aún así, si es su editor de video preferido, le alegrará saber que puede 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.
Respuestas:
Ffmpeg lo hará. Si tiene imágenes,
img001.jpg, img002.jpg, img003.jpg, ...
entonces en la línea de comando haga:ffmpeg -i img*.jpg output.mpeg
Hay más opciones en las
ffmpeg --help
páginas man o en la web. Permiten controlar la velocidad de fotogramas y el formato de salida.fuente
.jpg
archivos como el archivo de salida. Me pongoFile 'DSCF6134.JPG' already exists. Overwrite ? [y/N]
, no tan genial. Mi solución fue generar una lista de archivos\ls *.JPG | sed "s/^/file '/;s/$/'/" > files.txt
y luego cargarlaffmpeg -f concat -i files.txt output.mpeg
.ffmpeg -pattern_type glob -i "picture*.jpg" output.mpeg
Primero cambiamos el nombre de todos los archivos * .JPG en función de su fecha de creación. A veces las cámaras cambian el nombre del archivo o simplemente ordenarlas de alguna manera no es lo que queremos. Sin embargo, renombrarlos por la fecha de creación siempre funciona:
Después de eso ponemos esta lista en un archivo:
Y luego use
mencoder
para crear unAVI
video usando 20 fps. Tenga en cuenta que esto generará un gran archivo de video, generalmente alrededor del mismo tamaño de todas las imágenes sumadas.Por lo general, tomo fotos para timelapse con la resolución más baja de mi cámara (5 MP), que tiene una relación de especificaciones de 4: 3. Para generar un video de 1080p adecuado, la imagen se vuelve a escalar a 1920 píxeles de ancho y luego la recorto a 1080 de altura. De esta manera no estoy cambiando el contenido de las fotos, solo recortando:
La razón por la que uso mencoder para juntar las fotos es porque obtuve una
segmentation fault
con ffmpeg.fuente
ffmpeg
comando, la-sameq
opción ahora se reemplaza con-qscale 0
Blender es una buena solución si se trata de timelapse de movimiento (hyperlapse) o imágenes inestables. Tiene capacidades de seguimiento de movimiento para que pueda elegir un punto fijo para seguir durante todo el lapso de tiempo. También puede solucionar problemas de rotación.
fuente
También te puede interesar el proyecto timelapse-darktable . Facilita el procesamiento posterior de imágenes con darktable y hace un timelapse de la serie. Las instrucciones sobre cómo usarlo se encuentran aquí: https://code.google.com/p/timelapse-darktable/wiki/generateTimelapse
fuente
Puedes usar mencoder. Las opciones son bastante explícitas:
Si todos están en el directorio actual con nombres ordenados y desea la lista en el archivo /tmp/files.txt:
ls -1 *jpg > /tmp/files.txt
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
fuente
Kdenlive también puede generar timelapses usando el
Add Slideshow Clip
menú, como se explica en este tutorial .Según el mismo sitio , Openshot tiene una funcionalidad similar pero no la recomienda porque es "demasiado defectuosa". Aún así, si es su editor de video preferido, le alegrará saber que puede 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.
fuente