setpts
Filtr nie posiada osi czasu edycji funkcjonalność jak w niektórych innych filtrów (patrz ffmpeg -filters
aby zobaczyć, które robią).
Oznacza to, że będziesz musiał zrobić wolne wideo i połączyć je z normalnymi filmami prędkości lub wykonać fantazyjne filtrowanie.
Przykład: tylko wideo
Używanie trim
, setpts
oraz concat
filtry:
Dane wejściowe w tym przykładzie trwają 60 sekund. 0-10 będzie normalną prędkością, 10-30 będzie o 50% wolniejszą, a 30-koniec będzie normalną prędkością, co da wynik o czasie trwania ~ 80 sekund:
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
Przykład: z dźwiękiem
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
Alternatywnie możesz wypróbować slowmoVideo, które prawdopodobnie skutkuje lepszym efektem spowolnienia w porównaniu do samego ffmpeg (slowmoVideo używa ffmpeg). Pozwala także używać krzywych Béziera do kreślenia efektu, dzięki czemu można płynnie inicjować efekt, a także może obejmować rozmycie ruchu.