将视频转换为新文件夹结构时出现“没有此文件或目录”

将视频转换为新文件夹结构时出现“没有此文件或目录”

我正在尝试将大量视频存档(位于子文件夹中)复制到并行文件夹结构,同时将视频从 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

相关内容