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.
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:
- 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
- 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
- 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
- Nesta fase, você provavelmente deve estar usando a seguinte convocação
ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
- 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
- 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.