Isso pode ser feito em um único comando. O método básico é começar com uma apresentação de slides em que cada imagem tenha a mesma duração e, em seguida, use o filtro de seleção para aparar maiores quantidades do tempo de exibição de cada imagem sucessiva.
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
- > isso controla a rapidez com que as imagens aparecem originalmente.
fps=25
- > nós definimos o framerate final. Além disso, é necessário fazer isso para ter quadros para trabalhar.
select='lt(mod(t,1),1-floor(t/1)/25)'
- > De cada segundo, mantenha um quadro a menos.
setpts=N/25/TB
- > Torne os timestamps dos frames selecionados contínuos, senão o ffmpeg irá duplicar frames para preencher as lacunas e derrotar o nosso objetivo.
Para começar com uma duração inicial de 3 segundos, altere a taxa de quadros para 1/3
e altere a seleção para lt(mod(t,3),3-floor(t/3)/25)
. Você precisaria mudar os 25 para controlar a velocidade na qual a duração é reduzida. Valores mais altos reduzirão a duração em uma velocidade menor.