FFMPEG - конвертировать видео в замедленную съемку
Я использую ffmpeg во Flash Builder (Action script 3), чтобы конвертировать видео в промежуток времени. Я разработал, как использовать setpts, чтобы сделать это, но конечный выходной файл имеет ту же длину, что и вход (только последний кадр отображается после промежутка времени), я хочу, чтобы продолжительность была изменена на основе переданных настроек к ffmpeg.
Я пробую ниже через командную строку сначала:
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4
Любая помощь будет принята с благодарностью!
2 ответа
Задача решена. Я не удалял аудио, так что, вероятно, он воспроизводил почти пустой аудиофайл в течение всего времени видео.
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4
-an
удаляет аудио из видео.
Еще некоторые подробности по ускорению звука. Вы можете сделать до 2 раз, но вы можете обмануть его, чтобы ускорить еще больше ( источник):
Ускорение / замедление звука
Вы можете ускорить или замедлить звук с помощью аудио фильтра atempo. Чтобы удвоить скорость звука:
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
Фильтр atempo ограничен использованием значений от 0,5 до 2,0 (так что он может замедлять его не менее чем до половины первоначальной скорости и увеличивать скорость до не более чем вдвое). Если вам нужно, вы можете обойти это ограничение, соединив несколько фильтров atempo вместе. Следующее с четырехкратной скоростью звука:
ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv
Используя сложный фильтр, вы можете ускорить видео и аудио одновременно:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv