Cum se remediază eroarea „Durata trecută prea mare” în FFmpeg?

FFmpeg este un program open source gratuit de utilizat care este utilizat pentru gestionarea fluxurilor video, audio și a altor fluxuri multimedia. Programul a fost conceput pentru a gestiona prelucrarea pe linie de comandă a procesării fișierelor video și audio. Cu toate acestea, destul de recent, au apărut o mulțime de rapoarte despre o eroare „ Durata trecută prea mare ” în timpul codificării sau reducerii scalării unui videoclip.

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 o remedia complet. De asemenea, am analizat motivele din cauza cărora se declanșează această eroare și le-am enumerat după cum urmează:

  • Framerate de intrare lipsă:  În majoritatea cazurilor, problema este cauzată de faptul că framerate-ul de intrare nu a fost introdus pentru imagini. Acest lucru duce la faptul că programul presupune că frecvența de intrare este de 25 fps, ceea ce poate cauza probleme dacă nu este cazul.
  • Setări de sincronizare neimplementate : la majoritatea utilizatorilor, implementarea anumitor setări de sincronizare a rezolvat problema. Uneori, este posibil ca cadrele să nu fie sincronizate corect din cauza căruia anumite cadre ar putea fi abandonate și această eroare ar putea fi declanșată.

Acum, că aveți o înțelegere de bază a naturii problemei, vom trece la soluții. Asigurați-vă că le implementați în ordinea specifică în care sunt prezentate pentru a evita conflictele.

Soluția 1: Adăugarea cadrelor de intrare

Dacă framerate-ul de intrare al videoclipului nu a fost adăugat, s-ar putea ca unele cadre să cadă și să se declanșeze eroarea. Prin urmare, în acest pas, vom adăuga cadrele de intrare pentru asta:

  1. Observați convocarea pe care ați folosit-o pentru a converti videoclipul, s-ar putea să fie similară cu următoarea
    ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv
  2. Acum , pur și simplu adăugați framerate convocării utilizate după cum urmează
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
  3. Verificați dacă problema persistă.

Soluția 2: Utilizarea semnalizărilor de sincronizare

Adăugarea steagurilor 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

  1. În această etapă, probabil că utilizați următoarea convocare
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
  2. 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
  3. Rețineți că tocmai am adăugat „ -async 1 -vsync1 ” la convocare și acest lucru trebuie adăugat la sfârșitul convocării pe care o utilizați.

    Notă:  Convocarea dvs. inițială ar putea diferi de cea utilizată ca exemplu. Cu toate acestea, modificările adăugate la convocare nu ar trebui să difere.