Hoe de fout 'afgelopen duur te groot' in FFmpeg te repareren?

FFmpeg is een gratis en open source programma dat wordt gebruikt voor het verwerken van video-, audio- en andere multimediastreams. Het programma is ontworpen om de verwerking van video- en audiobestanden op opdrachtregelbasis af te handelen. Vrij recent zijn er echter veel rapporten binnengekomen van een " Past Duration Too Large " -fout tijdens het coderen of verkleinen van een video.

FFmpeg-logo

Wat veroorzaakt de fout "Te lange duur" in FFmpeg?

Nadat we meerdere rapporten van meerdere gebruikers hadden ontvangen, hebben we besloten het probleem te onderzoeken en een reeks oplossingen bedacht om het probleem volledig te verhelpen. We hebben ook de redenen onderzocht waarom deze fout is geactiveerd en hebben ze als volgt vermeld:

  • Invoerframerate ontbreekt: in de meeste gevallen wordt het probleem veroorzaakt doordat de invoerframerate niet wordt ingevoerd voor de afbeeldingen. Dit betekent dat het programma ervan uitgaat dat de invoerframerate 25 fps is, wat problemen kan veroorzaken als dat niet het geval is.
  • Synchronisatie-instellingen niet geïmplementeerd: bij de meeste gebruikers is het probleem opgelost door bepaalde synchronisatie-instellingen te implementeren. Soms worden de frames mogelijk niet correct gesynchroniseerd, waardoor bepaalde frames kunnen worden verwijderd en deze fout kan worden geactiveerd.

Nu u een basiskennis hebt van de aard van het probleem, gaan we verder met de oplossingen. Zorg ervoor dat u deze implementeert in de specifieke volgorde waarin ze worden gepresenteerd om conflicten te voorkomen.

Oplossing 1: invoerframes toevoegen

Als de invoerframerate van de video niet is toegevoegd, kan dit ertoe leiden dat sommige frames worden verwijderd en wordt de fout geactiveerd. Daarom zullen we in deze stap de invoerkaders daarvoor toevoegen:

  1. Bekijk de convocatie die je hebt gebruikt om de video te converteren, deze kan er ongeveer zo uitzien als hieronder
     ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv 
  2. Voeg nu de framerate als volgt toe aan de convocatie
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  3. Controleer of het probleem blijft bestaan.

Oplossing 2: synchronisatievlaggen gebruiken

Door de synchronisatievlaggen toe te voegen, kunt u de uitvoer en de invoervideo synchroniseren volgens de eerste framerates van de video. Als de synchronisatieopdrachten niet zijn toegevoegd, is het mogelijk dat de frames niet correct worden gesynchroniseerd. In deze stap voegen we de synchronisatieopdrachten toe

  1. In dit stadium moet u waarschijnlijk de volgende convocatie gebruiken
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  2. Gebruik in plaats hiervan de volgende convocatie
     ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. Merk op dat we zojuist " -async 1 -vsync1 " aan de convocatie hebben toegevoegd en dit moet worden toegevoegd aan het einde van de convocatie die u gebruikt.

    Opmerking: uw aanvankelijke oproeping kan verschillen van die gebruikt als voorbeeld. De wijzigingen die aan de oproeping zijn toegevoegd, mogen echter niet verschillen.

Interessante Artikelen