Jak naprawić błąd „Zbyt duży czas trwania w przeszłości” w FFmpeg?



Wypróbuj Nasz Instrument Do Eliminowania Problemów

FFmpeg to darmowy program o otwartym kodzie źródłowym, 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 w oparciu o wiersz poleceń. Jednak całkiem niedawno napłynęło wiele raportów na temat „ Zbyt długi czas trwania w przeszłości ”Błąd podczas kodowania lub zmniejszania wideo.



Logo FFmpeg



Co powoduje błąd „Zbyt długi czas trwania w przeszłości” w FFmpeg?

Po otrzymaniu wielu zgłoszeń od wielu użytkowników postanowiliśmy zbadać problem i opracować zestaw rozwiązań, które całkowicie go naprawią. Przyjrzeliśmy się również przyczynom, z powodu których ten błąd jest wyzwalany, 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 jest wprowadzana 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 wdrożone: W przypadku większości użytkowników wdrożenie pewnych ustawień synchronizacji rozwiązało problem. Czasami ramki mogą nie zostać poprawnie zsynchronizowane, przez co niektóre klatki mogą zostać pominięte i może zostać wywołany ten błąd.

Teraz, gdy masz już podstawową wiedzę na temat natury problemu, przejdziemy do rozwiązań. Upewnij się, że wdrażasz je w określonej kolejności, w której są przedstawione, aby uniknąć konfliktu.

Rozwiązanie 1: dodawanie ramek wejściowych

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

  1. Obserwuj zwołanie, którego użyłeś do konwersji wideo, może być włączone podobny do następujących
    ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv
  2. Teraz po prostu Dodaj the częstotliwość wyświetlania klatek do zwołania używanego 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: Korzystanie z flag synchronizacji

Dodanie flag synchronizacji może pomóc zsynchronizować wyjście i wejściowe wideo zgodnie z początkową liczbą klatek na sekundę. Dlatego też, jeśli polecenia synchronizacji nie zostały dodane, możliwe, że ramki nie są prawidłowo synchronizowane. W tym kroku dodamy polecenia synchronizacji



  1. Na tym etapie prawdopodobnie tak jest za pomocą następujące zwołanie
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
  2. Jednak zamiast tego posługiwać się następujące zwołanie
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1
  3. Zwróć uwagę, że właśnie dodaliśmy „ -async 1 -vsync1 ”Do konwokacji i należy to dodać na końcu konwokacji, której używasz.
    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ć.
2 minuty czytania