У меня есть много папок с 6 или более видео в каждой. В настоящее время я использую этот код для преобразования их в AVI:

ffmpeg -i input.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output.avi

Вместо того, чтобы вводить этот код для каждого отдельного видео, есть ли код, который я могу использовать, чтобы конвертировать все видео в папке один за другим? Я использую Windows.

1 ответ1

0

Вот цикл в оболочке, использующий ваш текущий метод для преобразования .mp4 в .avi. Если у вас есть другие форматы и расширения имени файла, вам придется его улучшить:

for i in *.mp4; do ffmpeg -i "$i" -vcodec mpeg4 -qscale:v 1 -aspect 16:9 "$(basename "$i" .mp4).avi"; done

Итак, в файле с несколькими пробелами:

#!/bin/sh

for i in *.mp4; do
    ffmpeg -i "$i" -vcodec mpeg4 -qscale:v 1 -aspect 16:9 "$(basename "$i" .mp4).avi"
done

i - это переменная, перебирающая все файлы, соответствующие * .mp4. Команда basename удаляет расширение .mp4, затем мы можем добавить .avi. Все кавычки предназначены для обработки файлов любого типа, включая файлы с пробелами или другие специальные символы, не нарушая весь процесс. $(), который обозначает вывод команды изнутри, может быть заключен в кавычки и без проблем содержать кавычки внутри.

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