6

我正在尝试使用 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 下面的答案更新问题。

首先,我有一个按 10 顺序排列的 png 文件列表。它们的文本前面有一个 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.
4

2 回答 2

7

您需要为您的文件使用 %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]

于 2012-09-11T04:58:50.027 回答
5

这是在 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
于 2012-12-09T20:53:42.167 回答