O FFmpeg produzirá sempre o mesmo arquivo de saída binário?

O FFmpeg produzirá sempre o mesmo arquivo de saída binário?

Supondo que o arquivo de origem não tenha sido alterado e a mesma versão do FFmpeg esteja sendo usada, o arquivo de saída será sempre o mesmo?

Digamos que eu tenha um arquivo de origem com extensão AVI. Se eu convertê-lo para MP4 usando as configurações padrão do FFmpeg, cada execução do FFmpeg produzirá arquivos idênticos?

Responder1

A resposta qualificada é sim. As diferenças usuais são devidas às strings de versão incorporadas por codificadores e muxers. Adicionar -bitexactirá suprimi-los.

No entanto, alguns codificadores como x265 não são determinísticos na codificação multithread.

Existem alguns outros casos de nicho, como algumas rotinas DSP em arquiteturas PPC e Altivec, e algumas rotinas de conversão de formato de pixel. -bitexacttem efeito aqui também, em que as rotinas são selecionadas.

O FFmpeg possui um conjunto automatizado de testes de regressão, cujos resultados públicos podem ser visualizados emdestino.ffmpeg.org.

Quase todos os testes são verificados em relação a hashes de execuções de referência. O que basicamente requer exatidão de bits.

Responder2

Depende dos codecs e opções usadas.

  1. comando ffmpeg -i big_buck_bunny_480p_stereo.avi out.mp4produz os mesmos arquivos binários. Mas se você adicionar opções de taxa de bits
ffmpeg -i big_buck_bunny_480p_stereo.avi -maxrate 500k -bufsize 500k out.mp4

você pode obter resultados diferentes mesmo com -bitexact.

Portanto, codificação com x264 (que é o padrão .mp4se libx264 estiver disponível), vários threads (por padrão, o número de threads éselecionado automaticamente) e as opções de taxa de bits podem produzir binários diferentes.

  1. Você pode precisar ter certeza de que ocodecversões (não apenas a versão ffmpeg) são iguais às do ffmpeg com a mesma versão podem ser configuradas para usar versões diferentes do libx264, o que pode resultar em binários diferentes nas codificações do mesmo arquivo. Infelizmentenão há maneira fácilpara verificar as versões do codec.

informação relacionada