Geramos muitos GIFs em miniatura cuja qualidade não importa quase o tempo necessário para gerá-los. Gerar GIFs de alta qualidade com o ffmpeg é muito bem coberto, mas não estou tendo muita sorte em descobrir como gerar os de baixa qualidade o mais rápido possível.
O cálculo da paleta ocupa a maior parte do tempo de execução com o seguinte comando (extraído da resposta do filtro de várias cadeias aqui: Como criar com eficiência um gif de melhor paleta a partir de uma parte de vídeo diretamente da Web ):
ffmpeg -y -threads 8 -r 24 -f image2 -start_number 1 -i "frames.%04d.jpg" -filter_complex "fps=24,scale=150:-1:flags=fast_bilinear,split=2 [a][b]; [a] palettegen [pal] fifo [b]; [b] [pal] paletteuse" output.gif
O tempo de execução desse comando com 1000 quadros é de cerca de 72 segundos. Cerca de 67 segundos são a passagem da paleta e, em seguida, brilha na geração GIF real em cerca de 5 segundos. Eu gostaria de reduzir o tempo todo de execução o máximo possível e disposto a sacrificar muita qualidade de imagem por velocidade.
ffmpeg -y -r 24 -f image2 -start_number 1 -i "frames.%04d.jpg" -filter:v "scale=150:-1:flags=fast_bilinear" output.gif
Os dois problemas com isso: 1) Ele economizou apenas 13 segundos (59 segundos em vez de 72) e 2 ) Não tenho 100% de certeza de que este comando elimina completamente o cálculo da paleta (apenas que o cálculo da paleta que eu estava especificando antes não está incluído).
ffmpeg -i <input> <scale> <output.gif>
.
[b]
rótulo. De qualquer forma, o uso da paleta é cerca de 200⨉ mais lento a julgar por um teste rápido. Não usá-lo não é uma opção para você?