"нет такого файла или каталога" при преобразовании видео в новую структуру папок
Я пытаюсь скопировать большой архив видео (сидя в подпапках) в параллельную структуру папок при конвертации видео из mov в mp4 (плюс некоторые другие настройки). Это команда:
for f in Users/me/VIDEOARCHIVE/*/*.mov; do ffmpeg -i "$f" "Users/me/CONVERTED/${f%.mov}.mp4"; done
Тем не менее, я получаю "нет такого файла или каталога" для выходного файла. Я знаю, что на этом сайте много похожих вопросов, но ни один из них не помог мне.
Я также попытался заранее создать пустую структуру папок так, чтобы она создавала только файл.mp4, но все равно получала ту же ошибку.
Это работает, когда (пустая) структура папок уже создана заранее. Но как только отсутствует папка, я получаю сообщение "нет такого файла или каталога".
Есть ли способ сказать ему, чтобы создать родительские папки, если это необходимо, чтобы он мог помещать файлы в них?
1 ответ
Есть ли способ сказать ему, чтобы создать родительские папки, если это необходимо, чтобы он мог помещать файлы в них?
FFmpeg? Нет. Он не будет создавать папки самостоятельно. На самом деле, очень немногие программы делают это.
Некоторые предложения:
- Вы должны создать папку заранее.
- Вам нужно использовать базовое имя файла, так как
$f
уже содержит полный путь к файлу. - Вы должны использовать рекурсивное сглаживание для вашего видеоархива (
**/*
) пройти через все каталоги.
Собираем это вместе:
# enable recursive globbing
shopt -s globstar
# create the directory if necessary
dir="/Users/me/CONVERTED/"
mkdir -p "$dir"
# iterate over all files
for f in /Users/me/VIDEOARCHIVE/**/*.mov; do
# get the file's basename
fname="$(basename "$f")"
# run the command, replacing the file extension
ffmpeg -i "$f" "$dir/${fname%.mov}.mp4"
done