Como corrigir o erro 'Passado a duração muito grande' no FFmpeg?

O FFmpeg é um programa livre para usar e de código aberto que é usado para lidar com vídeo, áudio e outros fluxos de multimídia. O programa foi projetado para lidar com o processamento de arquivos de vídeo e áudio baseados em linha de comando. No entanto, muito recentemente, muitos relatórios foram recebidos de um erro " Passado com duração muito grande " durante a codificação ou redução de escala de um vídeo.

Logo FFmpeg

O que causa o erro "Passado muito grande" no FFmpeg?

Depois de receber vários relatórios de vários usuários, decidimos investigar o problema e criamos um conjunto de soluções para corrigi-lo completamente. Além disso, analisamos os motivos pelos quais esse erro foi acionado e os listamos da seguinte maneira:

  • Input Framerate Missing: Na maioria dos casos, o problema é causado porque o framerate de entrada não está sendo inserido para as imagens. Isso resulta no programa assumindo que a taxa de quadros de entrada é de 25 fps, o que pode causar problemas se não for o caso.
  • Configurações de sincronização não implementadas: com a maioria dos usuários, a implementação de determinadas configurações de sincronização corrigiu o problema. Às vezes, os quadros podem não ser sincronizados corretamente devido a que certos quadros podem ser descartados e esse erro pode ser acionado.

Agora que você tem uma compreensão básica da natureza do problema, iremos em direção às soluções. Certifique-se de implementá-los na ordem específica em que são apresentados para evitar conflitos.

Solução 1: Adicionando Frames de Entrada

Se a taxa de quadros de entrada do vídeo não tiver sido adicionada, isso poderá fazer com que alguns quadros sejam descartados e o erro seja disparado. Portanto, nesta etapa, adicionaremos os quadros de entrada para isso:

  1. Observe a convocação que você usou para converter o vídeo, ele pode ser semelhante ao seguinte
     ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv 
  2. Agora basta adicionar a taxa de quadros à convocação usada da seguinte maneira
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  3. Verifique se o problema persiste.

Solução 2: usando sinalizadores de sincronização

Adicionar os sinalizadores de sincronização pode ajudar a sincronizar a saída e o vídeo de entrada de acordo com as taxas de quadros iniciais do vídeo. Portanto, se os comandos de sincronização não foram adicionados, é possível que os quadros não estejam sendo sincronizados corretamente. Nesta etapa, adicionaremos os comandos de sincronização

  1. Nesta fase, você provavelmente deve estar usando a seguinte convocação
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  2. No entanto, em vez disso, use a seguinte convocação
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. Observe que acabamos de adicionar o “ -async 1 -vsync1 ” à convocação e isso precisa ser adicionado no final da convocação que você está usando.

    Nota: sua convocação inicial pode ser diferente da usada como exemplo. As alterações adicionadas à convocação, no entanto, não devem ser diferentes.

Artigos Interessantes