
Я могу сделать замедленное видео, используя следующую команду (нашел ее на сайте Как использовать эффект замедленной съемки в определенном интервале времени с помощью ffmpeg):
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
но я также хочу иметь тот же эффект на аудио, например, ту же длительность между10-30секунды имеют замедленный звук, в то время как все остальные аудиочасти имеют обычную скорость.
Также указанная выше команда увеличивает продолжительность видео. Можно ли как-то уменьшить ее до фактической продолжительности видео?
Пожалуйста, кто-нибудь, помогите мне, как это сделать?
решение1
Вы не можете замедлить видеоисохранить его первоначальную длину. Для этого вам придется отрезать часть.
Чтобы замедлить звук, сделайте это
ffmpeg -i input.mkv -filter_complex \
"[0:v]trim=0:10,setpts=PTS-STARTPTS[v1]; \
[0:v]trim=10:30,setpts=(PTS-STARTPTS)*2[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,atempo=0.5[a2]; \
[0:a]atrim=start=30,asetpts=PTS-STARTPTS[a3]; \
[v1][a1][v2][a2][v3][a3]concat=n=3:v=1:a=1[v][a]" \
-map [v] -map [a] output.mp4