11

Я использую ffmpeg во Flash Builder (Action script 3), чтобы конвертировать видео в промежуток времени. Я разработал, как использовать setpts, чтобы сделать это, но конечный выходной файл имеет ту же длину, что и вход (только последний кадр отображается после промежутка времени), я хочу, чтобы продолжительность была изменена на основе переданных настроек к ffmpeg.

Я пытаюсь ниже через командную строку сначала:

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

Любая помощь будет принята с благодарностью!

2 ответа2

13

Задача решена. Я не удалял аудио, так что, вероятно, он проигрывал, почти пустой, аудиофайл в течение всего времени видео.

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4

-an удаляет аудио из видео.

1

Еще некоторые подробности по ускорению звука. Вы можете сделать до 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .