【问题标题】:Wildcard for sequential images连续图像的通配符
【发布时间】:2012-09-11 02:17:07
【问题描述】:

我正在尝试使用 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.

【问题讨论】:

    标签: ffmpeg jpeg avconv


    【解决方案1】:

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

    【讨论】:

    • 我更新了我的问题以使其更简单——只是将 png 文件转换为 jpg。我仍然无法弄清楚如何正确使用通配符系统。我试过搜索,但找不到任何解释。什么是正确的语法?谢谢。
    • convert 是一个不同的实用程序,对吧? ffmpeg 是不同的。我正在使用 ffmpeg 执行此操作,并且在这里运行良好。
    • 无论我使用哪个程序,我都会收到找不到文件错误。我想知道我的系统出了什么问题?我发现的所有示例都显示相同的内容。
    【解决方案2】:

    这是在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2019-01-21
      • 1970-01-01
      • 2021-07-21
      相关资源
      最近更新 更多