Kaip ištaisyti „FFmpeg“ klaidą „Per ilga trukmė per didelė“?

„FFmpeg“ yra laisvai naudojama ir atvirojo kodo programa, naudojama tvarkyti vaizdo, garso ir kitus daugialypės terpės srautus. Programa buvo sukurta valdyti komandų eilutėmis tvarkant vaizdo ir garso failus. Tačiau visai neseniai gauta daug pranešimų apie klaidą „ Praėjusi trukmė per didelė “ koduojant ar mažinant vaizdo įrašą.

„FFmpeg“ logotipas

Kas sukelia „FFmpeg“ klaidą „Per ilga trukmė per didelė“?

Gavę daugybę pranešimų iš kelių vartotojų, nusprendėme ištirti problemą ir sugalvojome sprendimų rinkinį, kad visa tai ištaisytų. Be to, mes ištyrėme priežastis, dėl kurių atsiranda ši klaida, ir išvardijome jas taip:

  • Trūksta įvesties kadrų dažnio: daugeliu atvejų problema kyla dėl to, kad įvestas kadrų dažnis nebuvo įvestas vaizdams. Tai lemia, kad programa daro prielaidą, kad įvesties kadrų sparta yra 25 kadrai per sekundę, o tai gali sukelti problemų, jei taip nėra.
  • Neįdiegti sinchronizavimo nustatymai: dauguma vartotojų įgyvendino tam tikrus sinchronizavimo parametrus. Kartais kadrai gali būti netinkamai sinchronizuoti, dėl to kai kurie kadrai gali būti atmesti, ir ši klaida gali būti suaktyvinta.

Dabar, kai jūs suprantate klausimo pobūdį, pereisime prie sprendimų. Įsitikinkite, kad įgyvendinate juos tam tikra tvarka, kokia jie pateikiami, kad išvengtumėte konfliktų.

1 sprendimas: pridėkite įvesties rėmus

Jei vaizdo įrašo įvesties kadrų dažnis nebuvo pridėtas, gali būti, kad kai kurie kadrai sumažės, o klaida suaktyvinama. Todėl šiame etape pridėsime įvesties rėmus:

  1. Atkreipkite dėmesį į šaukimą, kurį naudojote konvertuodami vaizdo įrašą, jis gali būti panašus į šiuos:
     ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv 
  2. Dabar tiesiog pridėkite rėmelį prie šaukimo, kuris naudojamas taip
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -cff 5 out.mkv 
  3. Patikrinkite, ar problema išlieka.

2 sprendimas: sinchronizavimo vėliavų naudojimas

Pridėjus sinchronizavimo žymes, gali būti lengviau sinchronizuoti išvestį ir įvestą vaizdo įrašą pagal pradinius vaizdo įrašo kadrų dažnius. Todėl, jei sinchronizavimo komandos nebuvo pridėtos, gali būti, kad rėmai nėra sinchronizuojami tinkamai. Šiame žingsnyje pridėsime sinchronizavimo komandas

  1. Šiame etape jūs tikriausiai turite naudoti šį šaukimą
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -cff 5 out.mkv 
  2. Tačiau vietoj to naudokite šį šaukimą
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. Atminkite, kad ką tik pridėjote „ -async 1 -vsync1 “ prie kvietimo ir tai turi būti pridėta kvietimo pabaigoje, kurį naudojate.

    Pastaba: jūsų pradinis sušaukimas gali skirtis nuo pavyzdžio. Vis dėlto sušaukimo metu padaryti pakeitimai neturėtų skirtis.

Įdomios Straipsniai