So verwenden Sie den Zeitlupeneffekt in einem bestimmten Zeitintervall mit ffmpeg

2959
iwocan

Ich versuche, einen Zeitlupeneffekt für meine Videos zu verwenden. Nehmen wir an, ich habe ein 2 Minuten langes Video und möchte diesen Effekt zwischen 20 und 30 Sekunden nutzen.

Ich habe diesen Befehl aus einem Blog gefunden:

ffmpeg -i input.mp4 -vf "setpts=(<speed>/1)*PTS" output.mp4 

Aber ich weiß nicht, wie ich die Dauer in ihr umsetzen soll.

4

1 Antwort auf die Frage

7
LordNeckbeard

Der setptsFilter verfügt nicht über eine Timeline-Bearbeitungsfunktion wie einige andere Filter ( ffmpeg -filterssiehe, was tun soll).

Dies bedeutet, dass Sie ein langsames Video erstellen und es zu Ihren normalen Geschwindigkeits-Videos verketten oder ein paar ausgefallene Filterungen durchführen müssen.

Beispiel: nur Video

Mit den trim, setptsund concatFilter:

Die Eingabe in diesem Beispiel hat eine Dauer von 60 Sekunden. 0-10 ist normale Geschwindigkeit, 10-30 ist 50% langsamer und 30 Ende ist normale Geschwindigkeit, was zu einer Ausgabe mit einer Dauer von ~ 80 Sekunden führt:

ffmpeg -i input.mkv -filter_complex \ "[0:v]trim=0:10,setpts=PTS-STARTPTS[v1]; \ [0:v]trim=10:30,setpts=PTS-STARTPTS[v2]; \ [0:v]trim=start=30,setpts=PTS-STARTPTS[v3]; \ [v2]setpts=PTS/0.5[slowv]; \ [v1][slowv][v3]concat=n=3:v=1:a=0[out]" \ -map "[out]" output.mp4 

Beispiel: mit Audio

ffmpeg -i input.mkv -filter_complex \ "[0:v]trim=0:10,setpts=PTS-STARTPTS[v1]; \ [0:v]trim=10:30,setpts=PTS-STARTPTS[v2]; \ [0:v]trim=start=30,setpts=PTS-STARTPTS[v3]; \ [0:a]atrim=0:10,asetpts=PTS-STARTPTS[a1]; \ [0:a]atrim=10:30,asetpts=PTS-STARTPTS[a2]; \ [0:a]atrim=start=30,asetpts=PTS-STARTPTS[a3]; \ [v2]setpts=PTS/0.5[slowv]; \ [a2]atempo=0.5[slowa]; \ [v1][a1][slowv][slowa][v3][a3]concat=n=3:v=1:a=1[v][a]" \ -map "[v]" -map "[a]" output.mp4 

slowmoVideo

Alternativ können Sie slowmoVideo ausprobieren, was im Vergleich zu ffmpeg wahrscheinlich zu einem besseren Slowdown-Effekt führt (slowmoVideo verwendet ffmpeg). Sie können auch Bézier-Kurven verwenden, um den Effekt zu zeichnen, so dass Sie den Effekt reibungslos einleiten können und Bewegungsunschärfe enthalten können.

Sie müssen für Stream v1 keine Setpts = PTS-STARTPTS verwenden, oder? ptQa vor 10 Jahren 0
Ich bekomme kein Audio mit dem obigen Befehl Karandeep Atwal vor 5 Jahren 0
@KarandeepAtwal Hinzugefügtes Beispiel mit Audio. LordNeckbeard vor 5 Jahren 0