Ich verwende ffmpeg im Flash Builder (Actionscript 3), um ein Video in einen Zeitraffer des Videos umzuwandeln. Ich habe herausgefunden, wie man dafür setpts verwendet, aber die resultierende Ausgabedatei hat dieselbe Länge wie die Eingabe (wobei nur das letzte Bild nach dem Zeitraffer angezeigt wird). Ich möchte, dass die Dauer basierend auf den an ffmpeg übergebenen Einstellungen geändert wird.
Ich versuche zunächst Folgendes über die Befehlszeile:
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4
Jede Hilfe wäre sehr willkommen!
Antwort1
Problem gelöst. Ich habe den Ton nicht entfernt, also wurde vermutlich die fast leere Audiodatei für die gesamte Dauer des Videos abgespielt.
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4
-an
entfernt den Ton aus dem Video.
Antwort2
Hier noch ein paar weitere Details zur Beschleunigung von Audio. Sie können die Geschwindigkeit bis auf das Doppelte erhöhen, aber Sie können auch noch mehr beschleunigen (Quelle):
Audio beschleunigen/verlangsamen
Sie können beschleunigen oder verlangsamenAudio-mit dem atempo Audiofilter. So verdoppeln Sie die Audiogeschwindigkeit:
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
Der Atempo-Filter ist auf Werte zwischen 0,5 und 2,0 beschränkt (er kann also auf nicht weniger als die Hälfte der ursprünglichen Geschwindigkeit verlangsamen und auf nicht mehr als das Doppelte der Eingangsgeschwindigkeit beschleunigen). Falls nötig, können Sie diese Einschränkung umgehen, indem Sie mehrere Atempo-Filter aneinanderreihen. Folgendes vervierfacht die Audiogeschwindigkeit:
ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv
Mithilfe eines komplexen Filtergraphen können Sie Video und Audio gleichzeitig beschleunigen:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv