%D在Bash中的文件名

我正在使用ffmpeg将一些jpgs转换为mp4文件,它似乎工作得很好,video.mp4被创build。 这是我正在使用的命令:

ffmpeg -r 0.1 -i uploads/image%d.jpg uploads/video.mp4 

我有我的上传目录中的这些文件

 image1.jpg image2.jpg image3.jpg image4.jpg 

我在一个快速的谷歌search中find了这个例子。 我已经改变了一点,但图像%d.jpg保持不变。 它应该循环每个图像,并将其放入mp4。 不过,我发现它不包括这里的最后一个文件。

%d如何递增1,然后抓取每个文件? 为什么不抓住最后一个文件? 当我删除第四个图像,那么它只加载前两个图像,所以最后的图像只是没有被列入由于某种原因。

任何意见,如何这项工作真的会有所帮助,谢谢!

ffmpeg知道%d表示一个单独的数字字符,并且通过文件列表递增。 所以这是ffmpeg而不是shell – 这对于确保图像是按顺序很重要。

请注意,如果您的数字后缀不止一个数字 – 比如image001.jpg到image110.jpg那么您需要告诉它:

ffmpeg -r 0.1 -i uploads/image%03d.jpg uploads/video.mp4

“%03d”表示3位数字,左边用零填充(例如005)。 “%05d”意味着剩下5位数字填充零(例如00044)

另外请注意,你不能在数字上有空白,所以如果你这样做了重命名。

有关这里的数字格式的更多细节: http : //www.pixelbeat.org/programming/gcc/format_specs.html

如果你知道范围,你可以做类似的事情

  ffmpeg -r 0.1 -i uploads/image{1..4}.jpg uploads/video.mp4 

AFAIK, %d属于ffmpeg ,而不是bash。 我testing了你的命令,它工作正常。 确保第三个图像在文件名的开头没有空格。