Wie 'Past Duration Too Large' Fehler in FFmpeg zu beheben?

FFmpeg ist ein kostenloses Open-Source-Programm, das für die Verarbeitung von Video-, Audio- und anderen Multimedia-Streams verwendet wird. Das Programm wurde für die befehlszeilenbasierte Verarbeitung von Video- und Audiodateien entwickelt. In jüngster Zeit wurde jedoch in vielen Berichten der Fehler " Vergangene Dauer zu groß " beim Codieren oder Verkleinern eines Videos gemeldet.

FFmpeg-Logo

Wodurch wird der Fehler "Vergangene Dauer zu groß" in FFmpeg verursacht?

Nachdem wir zahlreiche Berichte von mehreren Benutzern erhalten hatten, beschlossen wir, das Problem zu untersuchen und eine Reihe von Lösungen zu entwickeln, um es vollständig zu beheben. Außerdem haben wir die Gründe, aufgrund derer dieser Fehler ausgelöst wird, untersucht und wie folgt aufgelistet:

  • Fehlende Eingangsframerate: In den meisten Fällen liegt das Problem daran, dass für die Bilder keine Eingangsframerate eingegeben wurde. Dies führt dazu, dass das Programm davon ausgeht, dass die Eingangsframerate 25 fps beträgt, was zu Problemen führen kann, wenn dies nicht der Fall ist.
  • Synchronisierungseinstellungen nicht implementiert: Bei den meisten Benutzern wurde das Problem durch die Implementierung bestimmter Synchronisierungseinstellungen behoben. Manchmal werden die Frames möglicherweise nicht richtig synchronisiert, wodurch bestimmte Frames möglicherweise gelöscht werden und dieser Fehler ausgelöst wird.

Nachdem Sie ein grundlegendes Verständnis für die Art des Problems haben, werden wir uns den Lösungen zuwenden. Stellen Sie sicher, dass Sie diese in der angegebenen Reihenfolge implementieren, um Konflikte zu vermeiden.

Lösung 1: Hinzufügen von Eingaberahmen

Wenn die Eingangsframerate des Videos nicht hinzugefügt wurde, werden möglicherweise einige Frames gelöscht und der Fehler wird ausgelöst. Deshalb werden wir in diesem Schritt die Eingaberahmen dafür hinzufügen:

  1. Beachten Sie die Konvokation, die Sie zum Konvertieren des Videos verwendet haben. Möglicherweise ist die Konvokation ähnlich der folgenden
     ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv 
  2. Fügen Sie nun einfach die Framerate zu der Konvokation hinzu, die wie folgt verwendet wird
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  3. Überprüfen Sie, ob das Problem weiterhin besteht.

Lösung 2: Verwenden von Synchronisierungsflags

Das Hinzufügen der Sync-Flags kann dabei helfen, das Ausgabe- und das Eingabe-Video entsprechend den Anfangsframeraten des Videos zu synchronisieren. Wenn die Synchronisierungsbefehle nicht hinzugefügt wurden, werden die Frames möglicherweise nicht ordnungsgemäß synchronisiert. In diesem Schritt fügen wir die Synchronisierungsbefehle hinzu

  1. Zu diesem Zeitpunkt müssen Sie wahrscheinlich die folgende Konvokation verwenden
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  2. Verwenden Sie jedoch stattdessen die folgende Konvokation
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. Beachten Sie, dass wir der Convocation gerade " -async 1 -vsync1 " hinzugefügt haben und dies am Ende der von Ihnen verwendeten Convocation hinzufügen müssen.

    Hinweis: Ihre ursprüngliche Einberufung kann von der als Beispiel verwendeten abweichen. Die der Einberufung hinzugefügten Änderungen sollten sich jedoch nicht unterscheiden.

Interessante Artikel