Come risolvere l'errore "Durata passata troppo grande" in FFmpeg?

FFmpeg è un programma open source gratuito che viene utilizzato per gestire video, audio e altri flussi multimediali. Il programma è stato progettato per gestire la gestione basata su riga di comando di elaborazione di file video e audio. Tuttavia, abbastanza di recente, sono stati segnalati molti errori di " Durata passata troppo grande " durante la codifica o il downscaling di un video.

Logo FFmpeg

Cosa causa l'errore "Durata passata troppo grande" in FFmpeg?

Dopo aver ricevuto numerosi rapporti da più utenti, abbiamo deciso di indagare sul problema e abbiamo escogitato una serie di soluzioni per risolverlo completamente. Inoltre, abbiamo esaminato i motivi per cui questo errore viene attivato e li abbiamo elencati come segue:

  • Framerate di input mancante: nella maggior parte dei casi, il problema è causato dalla mancata immissione del framerate di input per le immagini. Ciò comporta che il programma presupponga che il framerate di input sia 25 fps, il che può causare problemi in caso contrario.
  • Impostazioni di sincronizzazione non implementate: con la maggior parte degli utenti, l'implementazione di alcune impostazioni di sincronizzazione ha risolto il problema. A volte, i frame potrebbero non essere sincronizzati correttamente a causa dei quali alcuni frame potrebbero essere eliminati e questo errore potrebbe essere attivato.

Ora che hai una conoscenza di base della natura del problema, passeremo alle soluzioni. Assicurati di implementarli nell'ordine specifico in cui sono presentati per evitare conflitti.

Soluzione 1: aggiunta di frame di input

Se il framerate di input del video non è stato aggiunto, è possibile che alcuni frame vengano eliminati e l'errore venga attivato. Pertanto, in questo passaggio, aggiungeremo i frame di input per questo:

  1. Osserva la convocazione che hai usato per convertire il video, potrebbe essere simile al seguente
     ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv 
  2. Ora aggiungi semplicemente il framerate alla convocazione usata come segue
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  3. Controlla se il problema persiste.

Soluzione 2: utilizzo delle flag di sincronizzazione

L'aggiunta dei flag Sync può aiutare a sincronizzare l'output e il video di input in base ai framerate iniziali del video. Pertanto, se i comandi di sincronizzazione non sono stati aggiunti, è possibile che i frame non vengano sincronizzati correttamente. In questo passaggio, aggiungeremo i comandi di sincronizzazione

  1. In questa fase, probabilmente devi utilizzare la seguente convocazione
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  2. Tuttavia, invece di questo, utilizzare la seguente convocazione
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. Si noti che abbiamo appena aggiunto " -async 1 -vsync1 " alla convocazione e questo deve essere aggiunto alla fine della convocazione che si sta utilizzando.

    Nota: la convocazione iniziale potrebbe essere diversa da quella utilizzata come esempio. Le modifiche aggiunte alla convocazione, tuttavia, non dovrebbero differire.

Articoli Interessanti