Я использую ffmpeg в Flash Builder (Action script 3) для преобразования видео в покадровую съемку видео. Я разобрался, как использовать setpts для этого, но результирующий выходной файл имеет ту же длину, что и входной (только последний кадр отображается после покадровой съемки), я хочу, чтобы длительность изменялась на основе настроек, переданных в ffmpeg.
Сначала я пробую выполнить следующее через командную строку:
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4
Любая помощь будет высоко оценена!
решение1
Проблема решена. Я не удалял аудио, так что, по-видимому, он воспроизводил почти пустой аудиофайл на протяжении всего видео.
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4
-an
удаляет звук из видео.
решение2
Еще немного подробностей об ускорении звука здесь. Вы можете сделать до 2x, но вы можете обмануть его, чтобы ускорить еще больше (источник):
Ускорение/замедление звука
Вы можете ускориться или замедлиться.аудиос аудиофильтром 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