Как изменить скорость файла 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
Другие вопросы по тегам