【问题标题】:ffmpeg not using wildcard properly from batch scriptffmpeg 没有从批处理脚本中正确使用通配符
【发布时间】:2013-03-08 21:53:16
【问题描述】:

我想要做的实际上非常简单,如果从 cmd 窗口中执行,它就可以正常工作,尽管在批处理脚本中使用时它不起作用。以下命令通常会获取所有具有 anim_xxxx.png 模式的 .png 文件(%04d 代表 ffmpeg 中的 4 个数字)。

ffmpeg -f image2 -i anim_%04d.png -vcodec mjpeg -q:v 0 -r 25 foo.avi

现在我得到的错误是我的图像序列的通配符,我不知道问题是什么。使用另一个像 * 这样的通配符会给我同样的错误。

[image2 @ 000000000033e8c0] 找不到带有路径的文件 'anim_render.bat4d.png' 和 0-4 范围内的索引 anim_render.bat4d.png: 没有这样的文件或目录

%04d 是否类似于批处理文件中不存在于批处理文件之外的任何变量?到目前为止,我找不到任何类似的案例。

【问题讨论】:

    标签: windows batch-file ffmpeg


    【解决方案1】:

    不知道%04FFMPEG 而言是什么意思,尽管anim_*.mpg 似乎是一种更常见的指定all starting 'anim_' 的方法@ 也许这是一个特殊含义+any 4 characters(尽管???? 似乎在这里更常见。

    尽管如此,ffmpeg 似乎期望 % 提供 literally 所以批量解决方法是在 % 之前加上一个插入符号:^%

    Erm- 使 % 的两倍 - ^x 通常适用于批量具有特殊含义的字符;看来你需要% 来逃避%...

    【讨论】:

    • 它指定了模式 anim_xxxx.png 就像我在问题中写的那样。在 %04d 的情况下,xxxx 是从 0001 开始增加的数字。不幸的是,使用 ^% 给了我同样的错误:/ 哦,我应该提到,我已经尝试过 * 并得到了同样的错误。
    • %0 in batch 表示“此批处理文件的名称”,因此由于您的批处理名称为“anim_render.bat”,因此批处理替换为 %0 和 anim_%04d.png 变为 anim_anim_render.bat4d.png 所以理论上,该行应该变成ffmpeg -f image2 -i anim_%%04d.png -vcodec mjpeg -q:v 0 -r 25 foo.avi - 将%翻倍
    • 呃,我不知道为什么,但这有效,即使我尝试了完全相同的事情,但在使用与上述完全相同的脚本时再次出现相同的错误。好吧,它现在有效,答案是正确的,所以谢谢你让我再试一次,我猜:D
    • 我总是遇到麻烦,而且我已经断断续续地做了很多年。 %04d 来自 C 函数 printf。在那里它将生成带有前导零的 4 位数字。值得一看ffmpeg.org/ffmpeg-all.html#image2-1 上比手册页长的文档,Scanf 是 printf 的反面,并使用相同的字符转换。除非您使用 -start_number,否则数字应从 0 开始。
    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    相关资源
    最近更新 更多