Как изменить скорость файла AVI?
Я хочу изменить скорость видеофайла AVI таким образом, чтобы он воспроизводился вдвое дольше, чем это было изначально. Я пытался сделать это с ffmpeg
, но это приводит к очень низкому качеству видео:
ffmpeg -i in.avi -filter:v "setpts=2.0*PTS" out.avi
Как это сделать на Ubuntu 15.10 без потери качества?
2 ответа
Я подозреваю, что ваша копия FFmpeg также перекодирует, используя значения поумолчанию для контейнера avi, что может быть немного неумолимым. Попробуйте запустить следующие простые дополнения в командной строке:
ffmpeg -i in.avi \
-filter:v "setpts=2.0*PTS" \
-c:v mpeg4 -q:v 2 \
-an \
out.avi
Движущей частью этой командной строки является настройка "качество":-q:v 2
который может быть установлен от 1 до 31 с самым высоким качеством, равным 1, и самым низким, равным 31. Обратите внимание, что я использовал-an
запретить использование аудиопотока.
Если это эффективно повышает качество вашего выходного видео, вы можете рассмотреть возможность добавления следующих флагов к вашей видео строке:
-vtag XVID -f avi -mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 300
Я обычно использую эти флаги при кодировании для старого устройства, и они дают значительно лучший результат...
Рекомендации:
для меня это сработало очень хорошо, используя эту команду:
ffmpeg -i in.mp4 \
-filter_complex "[0:v]setpts=0.50*PTS[v];[0:a]atempo=2.00[a]" \
-map "[v]" -map "[a]" out.mp4
Примечание:setpts=0.50 == 2x, а темп должен быть 1/setpts == 2.0. Другой пример:
# 1.25x
ffmpeg -i in.mp4 \
-filter_complex "[0:v]setpts=0.80*PTS[v];[0:a]atempo=1.25[a]" \
-map "[v]" -map "[a]" out.mp4