Con 5 imágenes tengo que crear un video de 60 segundos en ffmpeg, cada imagen tiene que mostrarse durante 15 segundos. después de 15 segundos, la primera imagen tiene que desvanecerse y la segunda imagen tiene que desvanecerse, después de que la segunda imagen tiene que desvanecerse, la tercera imagen tiene que desvanecerse ... etc. Guíame, ¿cómo puedo lograr esto usando los comandos ffmpeg?
27
Respuestas:
Dip / fade a negro
Desplácese hacia abajo para el método de fundido cruzado.
Ejemplo donde cada imagen se muestra durante 5 segundos y cada una tiene un desvanecimiento que dura 1 segundo. Cada entrada de imagen tiene el mismo ancho, alto y relación de aspecto de muestra. Si varían en tamaño, vea el ejemplo # 3 a continuación.
Salida MP4
Con audio
Igual que el anterior pero con audio:
Para imágenes de entrada con tamaños variables o arbitrarios
Como el primer ejemplo, pero con imágenes de entrada que varían en ancho x alto. Se rellenarán para caber dentro de una caja de 1280x720:
Vea los ejemplos en Cambiar el tamaño de los videos para que se ajusten al reproductor de tamaño estático si desea recortar (llenar la pantalla) en lugar de pad (letterbox / pillarbox), o si desea evitar el aumento de escala.
Salida GIF
Agrega los filtros de ¿Cómo convierto un video a GIF usando ffmpeg, con una calidad razonable?
Use la
-loop
opción de salida para controlar la cantidad de veces que el GIF se repite. El valor predeterminado es bucle infinito si no se utiliza esta opción. Un valor de-1
es no loop.Opciones y filtros utilizados:
-t
para establecer la duración en segundos de cada entrada.-loop 1
realiza un bucle de la imagen; de lo contrario, tendría una duración de 1 fotograma.-framerate
para establecer la velocidad de fotogramas de la imagen de entrada (el valor predeterminado cuando no se declara es 25). Útil para hacer GIF.escale con la almohadilla para ajustar las imágenes de entrada en un tamaño específico y uniforme (usado en el ejemplo # 3).
desvanecerse para desvanecerse dentro y fuera.
d
es la duración del desvanecimiento.st
es cuando comienza.concat para concatenar (o "unir") cada imagen.
formato para generar un esquema de submuestreo de croma que sea compatible con reproductores no basados en FFmpeg si genera MP4 y codifica con libx264 (el codificador predeterminado para la salida MP4 si es compatible con su compilación).
dividir para hacer copias de una salida de filtro. Necesario por los filtros de paleta * para hacer todo en un comando.
palettegen y paletteuse para hacer un GIF bonito.
Fundido cruzado
Ejemplo donde cada imagen se muestra durante 5 segundos y cada una tiene un fundido cruzado que dura 1 segundo. Cada entrada de imagen tiene el mismo ancho, alto y relación de aspecto de muestra. Si varían en tamaño, entonces adapte el ejemplo # 3 anterior.
Salida MP4
Con audio
Fundido cruzado entre dos videos con audio
Seleccione un segmento de 5 segundos de cada entrada y agregue un fundido cruzado de 1 segundo:
Salida GIF
Use la
-loop
opción de salida para controlar la cantidad de veces que el GIF se repite. El valor predeterminado es bucle infinito si no se utiliza esta opción. Un valor de-1
es no loop.fuente
-t
en-loop 1 -t 1 -i 001.png
Define la duración de fotogramas individuales, y que los números que siguenT/
dentro defilter_complex
bloque define la duración de la transición? ¿Y se cuenta la duración del marco en este ejemplo, incluida la duración de la transición o no?-preset ultrafast
.melt
.concat=n=9
parte del comando,9
proviene de las 5 imágenes del ejemplo + 4 transiciones entre las imágenes. Si está manejando un número diferente de imágenes, deberá ajustarlo en consecuencia.Escribí un script bash general que toma una ruta a una carpeta de imágenes y genera un video de fundido cruzado con ffmpeg:
https://gist.github.com/anguyen8/d0630b6aef6c1cd79b9a1341e88a573e
El script esencialmente mira las imágenes en una carpeta e imprime un comando que es similar a la respuesta de @LordNeckbeard anterior, y ejecuta el comando. Este script ayuda cuando tiene muchas imágenes en una carpeta y no desea escribir manualmente un comando deprimentemente largo.
fuente