ffmpeg对文件夹中的每个mp4文件应用命令

时间:2016-04-16 02:11:09

标签: bash ffmpeg command-line-arguments

我有命令

for file in *.mp4; do ffmpeg -i "${file%.mp4} -vf fps=1/60 img%03d.jpg; done

我想在ffmpeg中使用它来迭代目录中的每个mp4文件并运行ffmpeg -i myvideo.mp4 -vf fps=1/60 img%03d.jpg命令。但是,当我运行上面的for循环时,我收到错误"此时文件是意外的。"我该如何解决这个问题?

我还应该提到文件名中包含空格和其他特殊字符。

1 个答案:

答案 0 :(得分:1)

几个问题:

  • 缺少结束语。
  • 输入不需要
  • Parameter expansion,因为不需要删除输入名称的任何部分,所以只需使用普通变量。
  • 输出需要参数扩展,否则每个循环命令将生成相同的输出名称。
  • 将图像输出到自己的目录会使事情更加整洁。
  • 我添加-q:v 3以提高JPG输出的质量。一个很好的尝试范围是2-5,其中较低的值是更高的质量和更大的文件大小。

修复示例:

mkdir images
for file in *.mp4; do ffmpeg -i "$file" -vf fps=1/60 -q:v 3 "images/${file%.mp4}.jpg"; done