Фильтр setpts
не имеет функции редактирования временной шкалы, как некоторые другие фильтры (ffmpeg -filters
чтобы узнать, какие из них).
Это означает, что вам придется делать медленное видео и объединять его с обычным видео или выполнять какую-то необычную фильтрацию.
Пример: только видео
Использование фильтров trim
, setpts
и concat
:
Ввод в этом примере имеет продолжительность 60 секунд. 0-10 будет нормальной скоростью, 10-30 будет на 50% медленнее, а 30-й будет нормальной скоростью, что приведет к выходному сигналу длительностью ~ 80 секунд:
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
Пример: со звуком
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
В качестве альтернативы вы можете попробовать slowmoVideo, что, вероятно, приведет к лучшему эффекту замедления по сравнению с одним ffmpeg (slowmoVideo использует ffmpeg). Это также позволяет вам использовать кривые Безье для построения эффекта, чтобы вы могли плавно инициировать эффект, и это может включать размытие движения.