我正在尝试使用avconv为一系列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.
答案 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