Vea Crear una presentación de diapositivas de video a partir de imágenes - FFmpeg
Si su video no muestra los cuadros correctamente Si encuentra problemas, como que la primera imagen se omite o solo se muestra para un cuadro, use el filtro de video fps en lugar de -r para la tasa de cuadros de salida
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
Alternativamente, el filtro de video de formato se puede agregar a la cadena de filtros para reemplazar -pix_fmt yuv420p como "fps = 25, format = yuv420p" . La ventaja de este método es que puede controlar qué filtro va primero
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
Probé debajo de los parámetros, funcionó para mí
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4
los siguientes parámetros también funcionaron, pero siempre omiten la primera imagen
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4
hacer un video a partir de imágenes colocadas en diferentes carpetas
Primero, agregue rutas de imagen a imagepaths.txt como a continuación.
# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate
file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'
Ejemplo de uso de la siguiente manera;
"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"
-safe 0 parámetro evita error de nombre de archivo inseguro
Enlaces relacionados
FFmpeg haciendo un video a partir de imágenes colocadas en diferentes carpetas
FFMPEG Una guía intermedia / secuencia de imágenes
Concatenar - FFmpeg
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
parecía funcionar, pero al final resultó en un video que ningún jugador podía leer (en Ubuntu). VNC dijo: "átomo de moov no encontrado". Tratar de remediar estoqt-faststart
produjo el error "el último átomo en el archivo no era un átomo de moov"-pattern_type glob
Esta gran opción facilita la selección de imágenes en muchos casos.
Vídeo de presentación de diapositivas con una imagen por segundo
Agregue algo de música, corte cuando el audio presumiblemente sea más largo cuando finalicen las imágenes:
Aquí hay dos demos en YouTube:
Sea un hippie y use el formato de video sin patente de Theora :
Sus imágenes, por supuesto, deben ordenarse alfabéticamente, generalmente como:
y así.
También me aseguraré primero de que todas las imágenes que se usen tengan la misma relación de aspecto, posiblemente cortándolas con
imagemagick
o con nomacs de antemano, para que ffmpeg no tenga que tomar decisiones difíciles. En particular, el ancho tiene que ser divisible por 2, de lo contrario la conversión falla con: "ancho no divisible por 2".Video de velocidad normal con una imagen por cuadro a 30 FPS
Así es como se ve:
GIF generado con: /ubuntu/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574
Agregue un poco de audio:
Resultado: https://www.youtube.com/watch?v=HG7c7lldhM4
Estos son los medios de prueba que he usado: un
Imágenes generadas con: ¿Cómo usar GLUT / OpenGL para renderizar a un archivo?
Es genial observar cuánto comprime el video la secuencia de imágenes mucho mejor que ZIP, ya que puede comprimir a través de cuadros con algoritmos especializados:
opengl-rotating-triangle.mp4
: 340Kopengl-rotating-triangle.zip
: 7.3MConvierta un archivo de música en un video con una imagen fija para subir a YouTube
Respondido en: /superuser/700419/how-to-convert-mp3-to-youtube-allowed-video-format/1472572#1472572
Configuración de estudio de caso de diapositivas realista y completa paso a paso
Crear presentaciones de diapositivas es un poco más que ejecutar un solo comando ffmpeg, así que aquí va un ejemplo detallado más interesante inspirado en esta línea de tiempo .
Obtenga los medios de entrada:
Ahora tenemos un vistazo rápido a todos los tamaños de imagen para decidir la relación de aspecto final:
que salidas:
entonces la relación de aspecto clásica de 480p (640x480 == 4/3) parece apropiada.
Realice una conversión con un cambio de tamaño mínimo para igualar los anchos (TODO se automatiza para cualquier ancho, aquí solo miré manualmente la
identify
salida y reduje el ancho y la altura en uno):Esto produce un resultado terrible, porque como se ve desde:
ffmpeg solo toma el tamaño de la primera imagen, 556x494, y luego convierte todos los demás a ese tamaño exacto, rompiendo su relación de aspecto.
Ahora, convierta las imágenes a la relación de aspecto objetivo de 480p automáticamente recortando según ImageMagick: ¿cómo recortar mínimamente una imagen a una determinada relación de aspecto?
Así que ahora, la relación de aspecto es buena, pero inevitablemente hubo que recortar algo, lo que cortó partes interesantes de las imágenes.
La otra opción es rellenar con fondo negro para tener la misma relación de aspecto que se muestra en: Cambiar el tamaño para que quepa en un cuadro y establecer el fondo en negro en la parte "vacía"
Sin embargo, en términos generales, idealmente podrá seleccionar imágenes con la misma o similar relación de aspecto para evitar esos problemas en primer lugar.
Sobre las opciones de CLI
Sin embargo,
-glob
tenga en cuenta que a pesar del nombre, esto no es tan general como los patrones de Shell Glob, por ejemplo:-i '*'
falla: https://trac.ffmpeg.org/ticket/3620 (aparentemente porque el tipo de archivo se deduce de la extensión).-r 30
hace que el-framerate 1
video sea de 30 FPS para superar errores en reproductores como VLC para velocidades de cuadro bajas: VLC se congela para video de 1 FPS bajo creado a partir de imágenes con ffmpeg Por lo tanto, repite cada cuadro 30 veces para mantener el efecto deseado de 1 imagen por segundo.Próximos pasos
También querrás:
corta la parte del audio que deseas antes de unirte a ella: corta los videos según la hora de inicio y finalización usando ffmpeg
TODO: aprenda a cortar y concatenar múltiples archivos de audio en el video sin archivos intermedios, estoy bastante seguro de que es posible:
Probado en
ffmpeg 3.4.4, vlc 3.0.3, Ubuntu 18.04.
Bibliografía
fuente
'
en los nombres de los archivos de entrada y salida. De lo contrario, no encontrará los archivos.ffmpeg-static
no implementa glob. (Pattern type 'glob' was selected but globbing is not supported by this libavformat build
)-pix_fmt
Trailing options were found on the commandline.
error causadoffmpeg -framerate 1 -pattern_type glob -i '*.png' -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
en Ubuntun 19.10 ffmpeg 4.1.4 ahora, ¿cuál es su versión y comando exacto?Versión simple de los documentos
Funciona particularmente bien para las imágenes de Google Earth Studio :
fuente
%3d
o%03d
?cat *.png | ffmpeg -f image2pipe -i - output.mp4
de wiki
fuente