Hogyan lehet kijavítani az „Előző időtartam túl nagy” hibát az FFmpeg fájlban?

Az FFmpeg egy ingyenesen használható és nyílt forráskódú program, amelyet videó, audio és egyéb multimédia folyamok kezelésére használnak. A programot a video- és audiofájlok feldolgozásának parancssori alapú kezelésére tervezték. A közelmúltban azonban sok jelentés érkezett egy „A múlt időtartama túl nagy ” hibáról egy videó kódolása vagy kicsinyítése során.

Mi okozza a „Túl nagy múltbeli idő” hibát az FFmpeg-ben?

Miután több felhasználótól számos jelentést kaptunk, úgy döntöttünk, hogy kivizsgáljuk a problémát, és megoldások sorozatát dolgoztuk ki a probléma teljes kijavítására. Ezenkívül megvizsgáltuk a hiba kiváltásának okait, és az alábbiak szerint soroltuk fel őket:

  • Hiányzik a bemeneti képkocka sebessége:  A legtöbb esetben a problémát az okozza, hogy a bemeneti képkockasebességet nem adták meg a képekhez. Ennek eredményeként a program azt feltételezi, hogy a bemeneti képkocka sebessége 25 kép / mp, ami problémákat okozhat, ha nem ez a helyzet.
  • A szinkronizálási beállítások nincsenek végrehajtva: A legtöbb felhasználónál bizonyos szinkronizálási beállítások végrehajtása megoldotta a problémát. Előfordulhat, hogy a keretek nem lesznek megfelelően szinkronizálva, ami miatt bizonyos keretek eldőlhetnek, és ez a hiba kiváltható.

Most, hogy alaposan megértette a kérdés természetét, továbblépünk a megoldások felé. Ügyeljen arra, hogy ezeket a bemutatásuk sorrendjében hajtsa végre a konfliktusok elkerülése érdekében.

1. megoldás: Bemeneti keretek hozzáadása

Ha a videó bemeneti képkockasebességét nem adták hozzá, akkor egyes képkockák leeshetnek, és a hiba kiváltható. Ezért ebben a lépésben hozzáadjuk az ehhez szükséges beviteli kereteket:

  1. Figyelje meg a videó konvertálásához használt egyeztetést, amely hasonló lehet a következőkhöz
    ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv
  2. Most egyszerűen adja hozzá a képkockasebességet az alábbiak szerint használt összehíváshoz
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
  3. Ellenőrizze, hogy a probléma továbbra is fennáll-e.

2. megoldás: A Sync Flags használata

A Szinkronizálás zászlók hozzáadásával elősegítheti a kimenet és a bemeneti videó szinkronizálását a videó kezdeti képkockasebességének megfelelően. Ezért, ha a szinkronizálási parancsokat nem adták hozzá, akkor lehetséges, hogy a keretek nincsenek megfelelően szinkronizálva. Ebben a lépésben hozzáadjuk a szinkronizálási parancsokat

  1. Ebben a szakaszban valószínűleg a következő összehívást kell használnia
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
  2. Ehelyett azonban használja a következő összehívást
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1
  3. Ne feledje, hogy most hozzáadtuk az „ -async 1 -vsync1szót a híváshoz , és ezt hozzá kell adni a használt egyeztetés végén.

    Megjegyzés:  A kezdeti egyeztetés eltérhet a példaként használtól. Az összehíváshoz hozzáadott változtatások azonban nem különbözhetnek egymástól.