¿Es posible crear con FFMPEG una serie de imágenes con una duración cada vez más corta?

¿Es posible crear con FFMPEG una serie de imágenes con una duración cada vez más corta?

La presentación de diapositivas más simple es solo una secuencia de imágenes y cada una se muestra durante el mismo período de tiempo.

También me gustaría hacer una secuencia, pero más complicada respecto a la duración:

Quiero que la primera imagen tenga una duración de 1 segundo, la siguiente un poco menos de un segundo, la siguiente incluso un poco más corta, para que la secuencia comience lenta y se acelere hacia el final.

No sé cómo hacerlo, lo único que puedo adivinar es que la duración de cada imagen podría calcularse mediante una función como

duration = 1/picture_number
duration = 1 - (picture_number/picture_total)

o en un guión:

duration=1
while [duration > 0]
do
duration=duration*0.99
done

Respuesta1

Esto se puede hacer con un solo comando. El método básico es comenzar con una presentación de diapositivas donde cada imagen tiene la misma duración y luego usar el filtro de selección para recortar mayores cantidades del tiempo de visualización de cada imagen sucesiva.

ffmpeg -framerate 1 -i img%d.jpg \
       -vf fps=25,select='lt(mod(t,1),1-floor(t)/25)',setpts=N/25/TB \
       out.mp4

-framerate 1--> esto controla qué tan rápido cambian las imágenes originalmente.

fps=25--> establecemos la velocidad de fotogramas final. Además, es necesario hacer esto para tener marcos con los que trabajar.

select='lt(mod(t,1),1-floor(t/1)/25)'--> De cada segundo, mantén un cuadro menos.

setpts=N/25/TB-> haga que las marcas de tiempo de los cuadros seleccionados sean continuas; de lo contrario, ffmpeg duplicará los cuadros para llenar los espacios y frustrar nuestro objetivo.

Para comenzar con una duración inicial de 3 segundos, cambiaría la velocidad de fotogramas 1/3y cambiaría la selección a lt(mod(t,3),3-floor(t/3)/25). Necesitarías cambiar el 25 para controlar la velocidad a la que se reduce la duración. Los valores más altos reducirán la duración a una velocidad más lenta.

información relacionada