ffmpeg: Как замедлить видео на некоторое время
Я хочу уменьшить скорость видео с помощью FFmpeg на x секунд, после этого оно должно воспроизводиться как раньше. Есть ли способ сделать это в ffmpeg, используя setpts
параметр? Я нашел этот документ FFmpeg только для настройки всего уровня скорости.
Rightnow ffmpeg читает папку с изображениями, содержащую около 200 изображений, для создания видео, используя:
ffmpeg -f image2 -pattern_type glob -i 'image2/*.png' -vf fps=25/1 -s 640x360 -b 2000k output.mp4
1 ответ
FFmpeg не имеет прямого способа сделать это. Что вы можете сделать, это разделить видео на фрагменты, применить замедленное движение к каждому фрагменту и объединить все вместе снова. filter_complex
для этого можно использовать цепочку фильтров.
ffmpeg -i input_video -filter_complex "
[0:v]trim=0:10[v1];
[0:v]trim=10:30[v2];
[0:v]trim=start=30[v3];
[v2]setpts=PTS/0.5[slowv];
[v1][slowv][v3]concat=n=3:v=1:a=0[outv]" -map [outv] map 0:a -c:v libx264 -c:a copy output_video
Поскольку вы манипулируете видео, вам может понадобиться перекодировать поток. Для этого вы можете выбрать подходящий кодек отсюда.
Надеюсь это поможет!