Como estimar o tamanho do arquivo GIF?
Estamos construindo um serviço de edição de vídeo online. Um dos recursos permite que os usuários exportem um segmento curto do vídeo como um gif animado. Imgur tem umlimite de tamanho de arquivo de 2 Mb por gif animado enviado.
O tamanho do arquivo gif depende do número de quadros, da profundidade de cores e do próprio conteúdo da imagem: uma cor sólida e plana resulta em um gif muito leve, enquanto algumas animações de ruído aleatório na TV em cores aleatórias seriam bastante pesadas.
Primeiro exporto cada quadro de vídeo como PNG do tamanho final do quadro GIF (fixo, 384x216).
Então, para maximizar a qualidade de gif, realizo várias tentativas de renderização de gif com parâmetros ligeiramente diferentes - número variável de quadros e número de cores na paleta de gif. A renderização que tem a melhor qualidade enquanto permanece abaixo do limite de tamanho do arquivo é carregada no Imgur.
Cada renderização leva tempo e recursos de CPU - isso eu estou procurando otimizar.
Pergunta, questão: qual seria uma maneira inteligente de estimar as melhores configurações de renderização, dependendo das imagens reais, para se ajustar o mais próximo possível do limite de tamanho do arquivo e, pelo menos, minimizar o número de tentativas de renderização para 2–3?