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:
- 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
- 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
- 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
- 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
- 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
- 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ć.