Πώς να διορθώσετε το σφάλμα "Προηγούμενη διάρκεια υπερβολικά μεγάλο" στο FFmpeg;

Το FFmpeg είναι ένα ελεύθερο για χρήση και ανοικτού κώδικα πρόγραμμα το οποίο χρησιμοποιείται για τη διαχείριση βίντεο, ήχου και άλλων ροών πολυμέσων. Το πρόγραμμα έχει σχεδιαστεί για να χειρίζεται το χειρισμό που βασίζεται στην γραμμή εντολών της επεξεργασίας αρχείων βίντεο και ήχου. Ωστόσο, πολύ πρόσφατα, έχουν έρθει πολλές αναφορές για σφάλμα " Past Duration Too Large " κατά την κωδικοποίηση ή τη μείωση του βίντεο.

Λογότυπο FFmpeg

Τι προκαλεί το σφάλμα "Past Duration Too Large" στο FFmpeg;

Αφού έλαβε πολλές αναφορές από πολλούς χρήστες, αποφασίσαμε να ερευνήσουμε το θέμα και να επινοήσουμε μια σειρά λύσεων για να το διορθώσουμε πλήρως. Επίσης, εξετάσαμε τους λόγους για τους οποίους ενεργοποιείται αυτό το σφάλμα και τον αναφέραμε ως εξής:

  • Εισαγωγή Framerate Λείπει: Στις περισσότερες περιπτώσεις, το ζήτημα προκαλείται εξαιτίας του μη εισαγόμενου framerate για τις εικόνες. Αυτό οδηγεί στο πρόγραμμα υποθέτοντας ότι το framerate εισόδου είναι 25 fps που μπορεί να προκαλέσει προβλήματα αν αυτό δεν συμβαίνει.
  • Ρυθμίσεις συγχρονισμού που δεν έχουν εφαρμοστεί: Με τους περισσότερους χρήστες, η εφαρμογή ορισμένων ρυθμίσεων συγχρονισμού διορθώνει το ζήτημα. Μερικές φορές, τα καρέ ενδέχεται να μην έχουν συγχρονιστεί σωστά, λόγω του οποίου ενδέχεται να παραλειφθούν συγκεκριμένα καρέ και αυτό το σφάλμα ενδέχεται να ενεργοποιηθεί.

Τώρα που έχετε μια βασική κατανόηση της φύσης του ζητήματος, θα προχωρήσουμε προς τις λύσεις. Βεβαιωθείτε ότι τα εφαρμόσατε με τη συγκεκριμένη σειρά με την οποία παρουσιάζονται για να αποφύγετε τις συγκρούσεις.

Λύση 1: Προσθήκη πλαισίων εισόδου

Αν δεν έχει προστεθεί η καμπύλη εισόδου του βίντεο, ενδέχεται να προκύψουν κάποιες καρέ που πέφτουν και το σφάλμα ενεργοποιείται. Επομένως, σε αυτό το βήμα, θα προσθέσουμε τα πλαίσια εισόδου για αυτό:

  1. Παρατηρήστε τη σύγκληση που χρησιμοποιήσατε για τη μετατροπή του βίντεο, ίσως να είναι παρόμοια με τα παρακάτω
     ffmpeg -i% 05d.png -r 24-c: v libx264 -crf 5 out.mkv 
  2. Τώρα απλά προσθέστε το framerate στη σύγκληση που χρησιμοποιείται ως εξής
     ffmpeg -framerate 24-i% 05d.png -c: v libx264 -crf 5 out.mkv 
  3. Ελέγξτε αν το πρόβλημα παραμένει.

Λύση 2: Χρήση σημαδιών συγχρονισμού

Η προσθήκη των σημαιών συγχρονισμού μπορεί να βοηθήσει στο συγχρονισμό της εξόδου και του βίντεο εισόδου σύμφωνα με τα αρχικά καρέ frames. Επομένως, εάν οι εντολές συγχρονισμού δεν έχουν προστεθεί, είναι πιθανό τα πλαίσια να μην συγχρονίζονται σωστά. Σε αυτό το βήμα, θα προσθέτουμε τις εντολές συγχρονισμού

  1. Σε αυτό το στάδιο, πιθανόν να χρησιμοποιείτε την ακόλουθη σύσκεψη
     ffmpeg -framerate 24-i% 05d.png -c: v libx264 -crf 5 out.mkv 
  2. Ωστόσο, αντί αυτού, χρησιμοποιήστε την ακόλουθη πρόσκληση
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. Σημειώστε ότι μόλις προσθέσαμε το " -async 1 -vsync1 " στη σύγκληση και αυτό πρέπει να προστεθεί στο τέλος της σύγκλησης που χρησιμοποιείτε.

    Σημείωση: Η αρχική σας πρόσκληση μπορεί να διαφέρει από αυτή που χρησιμοποιήθηκε ως παράδειγμα. Οι αλλαγές που προστέθηκαν στη σύγκληση, ωστόσο, δεν πρέπει να διαφέρουν.

Ενδιαφέροντα Άρθρα