2016-04-16 64 views
0

我有我想的ffmpeg使用遍历目录中的每一个mp4文件,并运行在ffmpeg -i myvideo.mp4 -vf fps=1/60 img%03d.jpg命令的命令ffmpeg的每个MP4文件申请命令,在文件夹

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

。但是,当我运行上面的循环,我得到错误“此时文件是意外的。”我怎样才能解决这个问题?

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

回答

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 
相关问题