顺序图像的通配符

时间:2012-09-11 02:17:07

标签: ffmpeg jpeg avconv

我正在尝试使用av​​conv为一系列jpg文件制作动画。基于众多示例,我正在尝试使用%d.jpg来指定文件。或%05d.jpg。但是,我得到了:

avconv -i %d.jpg a.avi
avconv version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers built on Jun 12 2012 16:37:58 with gcc 4.6.3
%d.jpg: No such file or directory

以下是我的目录列表:

10380.jpg
10390.jpg
10400.jpg
1040.jpg
10410.jpg
10420.jpg
10430.jpg
10440.jpg

有从00000.jpg到14400.jpg的jpeg

我真的不了解通配符系统,但这就是示例中的内容。

(注意:我将其标记为ffmpeg,因为avconv的标签不存在,而avconv取代ffmpeg)

更新 我正在根据@ av501的答案更新问题。

首先,我有一个按顺序排序的png文件列表10.它们的文本在5位整数之前。例如:

SkinMattekNutrient_py_00000.png
SkinMattekNutrient_py_00010.png
SkinMattekNutrient_py_00020.png
...
SkinMattekNutrient_py_10440.png

将这些批量转换为jpg的方法是什么?我试过了

convert ...
SkinMattekNutrient_py_%05d.png %05d.jpg

convert ...
SkinMattekNutrient_py_%5d.png %5d.jpg

但我明白了:

convert SkinMattekNutrient_py_%05d.png %05d.jpg
convert: missing an image filename `%05d.jpg' @ error/convert.c/ConvertImageCommand/3011.

2 个答案:

答案 0 :(得分:6)

您需要将%5d用于您的文件。但你似乎有两个问题

要使%5d工作,您必须有5位数字。 [你有一个1040.jpg]也是连续的。 00000.jpg然后00001.jpg。你的文件名似乎跳了10个。

如果所有这些都是10的倍数,那么你可以使用%d50.jpg [但你仍然需要修复你的1040.jpg]

否则命令行在这里工作[我正在使用ffmpeg -i%5d.jpg out.avi和ffmpeg -i%5d0.jpg out.avi]

答案 1 :(得分:4)

这是在Bash shell中批量转换图像文件的一种方法:

for f in *.png; do ffmpeg -i "$f" "${f%.png}.jpg"; done

我相信这种技术适用于需要单独列出输入和输出文件的任何命令。在你的情况下,这将是:

for f in *.png; do convert "$f" "${f%.png}.jpg"; done