Используйте для цикла. Этот пример предназначен для bash
и использует манипулирование переменными bash
, но его можно адаптировать для других оболочек типа unix/linux.
Примечание: это предполагает, что вы находитесь в каталоге с файлами, и что видео- и аудиофайлы присутствуют с одинаковыми именами, отличающимися только расширением (.m4v - видео, .m4a - аудио).
for v in *.m4v; do ffmpeg -i "${v}" -i "${v//.m4v/.m4a}" -acodec copy -vcodec copy "${v//.m4v/.mp4}"; done
объяснение
for v in *.m4v
Выполните следующие действия для каждого файла, заканчивающегося на «.m4v». v
- это имя переменной, которая будет присваиваться каждому видеофайлу в текущем каталоге, по одному, bash
. bash
автоматически преобразует *.m4v
в список файлов .m4v в текущем каталоге и передает их в цикл for. Вам не нужно вводить имена файлов вручную.
Переменная v
содержит разные имена видеофайлов на каждой итерации цикла, например, "video_file_1.m4v"
, затем "video_file_2.m4v"
и т.д. ${v//pattern/replacement}
replace } сообщает bash
найти вхождения pattern
и заменить их с replacement
. Например, ${v//.m4v/.mp4}
преобразует имя файла "video_file_1.m4v"
в "video_file_1.mp4"
.