Hur fixar jag "Past Duration Too Large" -fel i FFmpeg?

FFmpeg är ett gratis att använda och öppet källkodsprogram som används för att hantera video-, ljud- och andra multimedia-strömmar. Programmet har utformats för att hantera kommandoradsbaserad hantering av bearbetning av video- och ljudfiler. Men nyligen har många rapporter kommit in om ett " Past Duration Too Large " -fel vid kodning eller nedskalning av en video.

FFmpeg-logotyp

Vad orsakar felet "För lång varaktighet för stort" i FFmpeg?

Efter att ha fått flera rapporter från flera användare beslutade vi att undersöka problemet och utformade en uppsättning lösningar för att fullständigt korrigera det. Vi tittade också på orsakerna till att detta fel utlöses och listade dem enligt följande:

  • Input Framerate saknas: I de flesta fall orsakas problemet på grund av att ingångsramen inte matats in för bilderna. Detta resulterar i att programmet antar att ingångsramen är 25 fps vilket kan orsaka problem om så inte är fallet.
  • Synkroniseringsinställningar inte implementerade: Med de flesta användare fixade problemet med att implementera vissa synkroniseringsinställningar. Ibland kanske ramarna inte synkroniseras ordentligt på grund av vilka vissa ramar kan tappas och detta fel kan utlösas.

Nu när du har en grundläggande förståelse för frågeställningens natur kommer vi att gå vidare mot lösningarna. Se till att implementera dessa i den specifika ordning de presenteras för att undvika konflikter.

Lösning 1: Lägga till inmatningsramar

Om ingångsramen för videon inte har lagts till kan det leda till att vissa ramar tappas och felet utlöses. Därför kommer vi i detta steg att lägga till inmatningsramarna för det:

  1. Observera konvokationen som du använde för att konvertera videon, den kan se ut som följande
     ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv 
  2. Lägg bara till framerate till konvokationen som används enligt följande
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  3. Kontrollera om problemet kvarstår.

Lösning 2: Använda synkroniseringsflaggor

Om du lägger till synkroniseringsflaggorna kan det hjälpa till att synkronisera utgången och den inmatade videon i enlighet med videoens initiala ramverk. Om synkroniseringskommandon inte har lagts till är det därför möjligt att ramarna inte synkroniseras korrekt. I det här steget lägger vi till synkroniseringskommandon

  1. I detta skede måste du antagligen använda följande sammankallning
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  2. Istället för detta använder du dock följande sammankallande
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. Observera att vi just har lagt till “ -async 1 -vsync1 ” till konvokationen och detta måste läggas till i slutet av konvokationen som du använder.

    Obs: Din första samlokalisering kan skilja sig från den som används som exempel. Ändringarna som läggs till konvokationen bör dock inte skilja sig åt.

Intressanta Artiklar