Cum să remediați eroarea „Durată trecută prea mare” în FFmpeg?
FFmpeg este un program de utilizare liberă și open source, care este utilizat pentru manipularea fluxurilor video, audio și a altor fluxuri multimedia. Programul a fost conceput pentru a gestiona procesarea bazată pe linia de comandă a procesării fișierelor video și audio. Cu toate acestea, destul de recent, o mulțime de rapoarte au apărut cu o eroare „ Durată trecută prea mare ” în timpul codificării sau reducerii unei dimensiuni video.
Ce cauzează eroarea „Durata trecută prea mare” în FFmpeg?
După ce am primit numeroase rapoarte de la mai mulți utilizatori, am decis să investigăm problema și am conceput un set de soluții pentru a-l rectifica complet. De asemenea, am analizat motivele pentru care este declanșată această eroare și le-am enumerat după cum urmează:
- Lipsa framei de intrare: în majoritatea cazurilor, problema este cauzată de faptul că nu au fost introduse cadrele de intrare pentru imagini. Acest lucru are ca rezultat programul presupunând că framerate-ul de intrare este de 25 fps, ceea ce poate cauza probleme dacă nu este cazul.
- Setările de sincronizare nu sunt implementate: cu majoritatea utilizatorilor, implementarea anumitor setări de sincronizare a rezolvat problema. Uneori, cadrele s-ar putea să nu fie sincronizate corespunzător din cauza cărora anumite cadre pot fi abandonate și această eroare ar putea fi declanșată.
Acum că aveți o înțelegere de bază a naturii problemei, vom merge mai departe către soluții. Asigurați-vă că le implementați în ordinea specifică în care sunt prezentate pentru a evita conflictul.
Soluția 1: Adăugarea de cadre de intrare
Dacă nu s-a adăugat framerate-ul de intrare al videoclipului, s-ar putea ca unele cadre să fie eliminate și eroarea să fie declanșată. Prin urmare, în acest pas, vom adăuga cadrele de intrare pentru asta:
- Respectați convocarea pe care ați folosit-o pentru a converti videoclipul, poate fi similară cu cea următoare
ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv
- Acum pur și simplu adăugați framerate la convocarea folosită după cum urmează
ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
- Verificați dacă problema persistă.
Soluția 2: Utilizarea indicatorilor de sincronizare
Adăugarea indicatorilor de sincronizare poate ajuta la sincronizarea ieșirii și a videoclipului de intrare în funcție de cadrele inițiale ale videoclipului. Prin urmare, Dacă comenzile de sincronizare nu au fost adăugate, este posibil ca cadrele să nu fie sincronizate corect. În acest pas, vom adăuga comenzile de sincronizare
- În această etapă, probabil trebuie să utilizați următoarea convocare
ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
- Cu toate acestea, în loc de aceasta, utilizați următoarea convocare
ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1
- Rețineți că tocmai am adăugat „ -async 1 -vsync1 ” la convocare și aceasta trebuie adăugată la sfârșitul convocării pe care o utilizați.
Notă: Convocarea inițială poate diferi de cea folosită ca exemplu. Cu toate acestea, modificările adăugate la convocare nu ar trebui să difere.