Jak naprawić błąd „Past Duration Too Large” w FFmpeg?

FFmpeg to darmowy program typu open source, który służy do obsługi strumieni wideo, audio i innych strumieni multimedialnych. Program został zaprojektowany do obsługi przetwarzania plików wideo i audio na podstawie wiersza poleceń. Jednak całkiem niedawno pojawiło się wiele raportów o błędzie „ Zbyt długi czas trwania ” podczas kodowania lub zmniejszania skali wideo.

Logo FFmpeg

Co powoduje błąd „Zbyt długi czas trwania” w FFmpeg?

Po otrzymaniu licznych raportów od wielu użytkowników postanowiliśmy zbadać problem i opracowaliśmy zestaw rozwiązań, aby go całkowicie naprawić. Przyjrzeliśmy się również przyczynom, dla których ten błąd został uruchomiony, i wymieniliśmy je w następujący sposób:

  • Brak wejściowej liczby klatek na sekundę : W większości przypadków problem jest spowodowany tym, że wejściowa liczba klatek na sekundę nie została wprowadzona dla obrazów. Powoduje to, że program zakłada, że ​​wejściowa liczba klatek na sekundę wynosi 25 fps, co może powodować problemy, jeśli tak nie jest.
  • Ustawienia synchronizacji nie zostały zaimplementowane: U większości użytkowników wdrożenie niektórych ustawień synchronizacji rozwiązało problem. Czasami ramki mogą nie zostać poprawnie zsynchronizowane, z powodu których niektóre ramki mogą zostać upuszczone i może zostać wyzwolony ten błąd.

Teraz, gdy znasz już podstawy problemu, przejdziemy do rozwiązań. Pamiętaj, aby zaimplementować je w określonej kolejności, w jakiej są przedstawione, aby uniknąć konfliktu.

Rozwiązanie 1: Dodanie ramek wejściowych

Jeśli wejściowa liczba klatek na sekundę wideo nie została dodana, może to spowodować upuszczenie niektórych klatek i wyzwolenie błędu. Dlatego w tym kroku dodamy do tego ramki wejściowe:

  1. Obserwuj konwokację, której użyłeś do konwersji wideo, może być podobny do poniższego
     ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv 
  2. Teraz wystarczy dodać liczbę klatek na sekundę do konwokacji w następujący sposób
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  3. Sprawdź, czy problem nadal występuje.

Rozwiązanie 2: Używanie flag synchronizacji

Dodanie flag synchronizacji może pomóc zsynchronizować wyjście i wideo wejściowe zgodnie z początkowymi szybkościami klatek wideo. Dlatego jeśli komendy synchronizacji nie zostały dodane, możliwe, że ramki nie są poprawnie synchronizowane. W tym kroku dodamy polecenia synchronizacji

  1. Na tym etapie prawdopodobnie używasz następującego konwokacji
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  2. Zamiast tego użyj następującego konwokacji
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. Zauważ, że właśnie dodaliśmy „ -async 1 -vsync1 ” do konwokacji i należy to dodać na końcu używanej konwokacji.

    Uwaga: Twoje początkowe zwołanie może różnić się od tego użytego jako przykład. Zmiany dodane do zwołania nie powinny się jednak różnić.

Ciekawe Artykuły