Ich versuche, die Bildrate eines Videos zu ändern, damit es etwas länger läuft. Ich möchte es nicht neu kodieren und der Ton soll synchron bleiben. Ich konnte das Rohvideo aus dem Video extrahieren und dann mit ... neu remuxen.
ffmpeg -i source.mkv -c copy -f h264 video.h264
ffmpeg -r 23.976 -i video.h264 -c copy dest.mp4
Dadurch wird ein Video erstellt, das jetzt zur richtigen Zeit ohne Ton abgespielt wird.
Wie erhalte ich eine fertige MP4-Datei mit Audio?
Antwort1
Sie müssen die Audiogeschwindigkeit an das Video anpassen und es neu kodieren. Dies ist jedoch auch ohne Neukodierung des Videos möglich.
Berechnen Sie zunächst, wie stark Sie den Ton anpassen müssen. Angenommen, dies war ursprünglich ein 25-fps-Video, das Sie auf 23,976 verlangsamen, dann beträgt Ihr Geschwindigkeitsfaktor 23,976/25 = 0,959. Wir werden das in den atempo
Filter einfügen, um die Geschwindigkeit des Audios anzupassen, indem wir es vom Original abziehen source.mkv
.
ffmpeg -i source.mkv -r 23.976 -i video.h264 -filter_complex "[0:a]atempo=0.959[out]" -map 1:v -map "[out]" -c:a aac -c:v copy out.mp4
Hier -filter_complex
wird der Audiostream aus der nullten Eingabedatei ( source.mkv
) genommen und durch den Filter geleitet atempo
, dann wird die Ausgabe benannt [out]
. Wir verwenden dann -map
Argumente, um anzugeben, dass wir diesen Audiostream sowie den Videostream aus der ersten Eingabedatei (beginnend bei Null, also eigentlich der zweiten, video.h264
) nehmen möchten. Wir müssen den Ton neu kodieren, weil wir ihn ändern möchten, aber wir können das Video einfach in den Container kopieren.