Eine sehr ärgerliche Situation …
Ich habe ein MPG2-Video mit einer Bildrate von 29,97, doch bei der Konvertierung in MP4 werden die Bilder dupliziert.
Dieser Befehl (direkte Konvertierung, keine Optionen):
ffmpeg -i ~/Desktop/file.mpg ~/Desktop/file.mp4
verursacht doppelte Frames...
Beim Einstellen der Framerate mit:
ffmpeg -i ~/Desktop/file.mpg -framerate 29.97 ~/Desktop/file.mp4
Funktioniert auch nicht!
Was mich dazu veranlasst, Folgendes zu versuchen:
ffmpeg -i ~/Desktop/file.mpg -r 29.97 ~/Desktop/file.mp4
Immer noch mit doppelten Frames!
Schließlich habe ich ffmpegs ausprobiert3. PlatzFramerate-Option!:
ffmpeg -i ~/Desktop/file.mpg -vf fps=fps=29.97 ~/Desktop/file.mp4
Allerdings waren Audio und Video bei der Ausgabe nicht synchron!
Welche FPS-Option sollte ich verwenden?
Antwort1
Verwenden
ffmpeg -i ~/Desktop/file.mpg -vsync 0 ~/Desktop/file.mp4
Dadurch wird eine Duplizierung vermieden.
-vsync passthrough
ist gleichbedeutend mit -vsync 0
.
Antwort2
-vsync
ist mittlerweile veraltet, Sie sollten daher -fps_mode
stattdessen verwenden.
Standardmäßig fps_mode
ist auto
, daher kann es Ihre fps automatisch ändern. Beispielsweise hat die Originalquelle eine variable Bildrate, aber ffmpeg kann entscheiden, sie automatisch auf eine konstante Bildrate umzustellen, was zu doppelten und verlorenen Bildern führen kann.
Um jegliche FPS-Änderung zu verhindern, setzen Sie -fps_mode passthrough
. (Das ist dasselbe wie -vsync 0
oder -vsync passthrough
).
Weitere Informationen finden Sie unterffmpeg-Dokumentation.
ffmpeg -i ~/Desktop/file.mpg -fps_mode passthrough ~/Desktop/file.mp4