如何在终端循环中 运行 ffmpeg 使用每个子目录中的文件生成视频

How to run ffmpeg in a loop in the terminal to generate videos using files from every subdirectory

我有一些目录 ./vis,其中包含我想要循环生成视频的图像。如果我要在其中一个子目录中执行此操作,比如 ./vis/subdir1 我可以 运行:

ffmpeg -framerate 10 -pattern_type glob -i '*.jpg' out.mp4

现在我想为每个子目录生成视频,我试过这个:

for d in */; do ffmpeg -framerate 10 -pattern_type glob -i '${d}*.jpg' "${d}".mp4"; done

但是好像不行。有什么想法吗?

  • '${d}*.jpg'用单引号括起来,变量d不插值
  • "${d}".mp4" 未正确引用。此外,变量 d 包含一个尾部斜杠,必须将其删除。

那么请尝试以下操作:

for d in */; do
    ffmpeg -framerate 10 -pattern_type glob -i "$d*.jpg" "${d%/}.mp4"
done