Se os JPEGs que estão sendo enviados forem sempre muito semelhantes, então, usando um codec de vídeo, você terá o benefício de um tamanho longo de 'GOP' (grupo de imagens). É onde o codec de vídeo codifica o primeiro quadro a uma taxa de bits relativamente alta e, em seguida, codifica apenas as alterações para o próximo número de quadros, com uma taxa de bits muito menor.
Se os JPEGs que estão sendo enviados forem completamente diferentes, dependendo de como o codec é implementado, ele pode tentar fazer a mesma coisa e acabar codificando uma grande quantidade de diferenças a uma taxa de bits muito baixa, degradando a qualidade da imagem. .
Independentemente da natureza dos JPEGs que estão sendo carregados, adicionar outro estágio de transcodificação (ou dois) irá certamente degradar a qualidade da imagem até certo ponto.
Sobre a questão diretamente:
Eu suspeito que o motivo pelo qual o FPS está afetando a qualidade dos arquivos é devido à configuração da taxa de bits. A taxa de bits é em bytes por segundo , não por frame. Você não especificou (é -b:v
), então ele estará usando uma taxa de bits padrão ou um método VBR, está codificando 10 quadros em x bytes, seu segundo exemplo está tentando compactar 25 quadros no mesmo número de bytes e no seu exemplo final ele está tentando comprimir 60 quadros no mesmo número de bytes, então a qualidade será necessariamente muito menor.
Atenta para otimizar a qualidade da imagem para o tamanho do arquivo ao usar um codec de vídeo: aumente a taxa de bits com base na qualidade desejada e diminua o GOP ( -g
) com base na natureza dos arquivos que você está enviando. Alterar o FPS é uma maneira bastante indireta de afetar esses dois valores, portanto, se você simplesmente deixar o FPS como padrão e ajustar esses outros dois valores, terá um controle muito melhor.
Não responde diretamente à sua pergunta:
Você não obterá as mesmas imagens que você colocou - a compactação de vídeo não permite isso, independentemente de quão alta é a taxa de bits. Se você quiser alguma chance de precisar usar um esquema de compactação sem perdas, e já que eles já estão compactados em JPEG, a compactação de dados normal provavelmente é sua melhor aposta, porque qualquer tentativa de codificar perceptualmente esses arquivos tentará codificar todos os arquivos. Artefatos JPEG (o 'ruído'), bem como a imagem real desejada. Definitivamente valeria a pena tentar um arquivo zip normal (gzip, bzip, 7zip, ...) e ver se isso pode fazer com que o tamanho do arquivo seja baixo o suficiente para suas necessidades. Como alternativa, tente diminuir a qualidade dos arquivos individuais (por exemplo, Image Magick ou similar) e, em seguida, feche-os.