Windows ffmpeg未正确使用批处理脚本中的通配符
我想要做的实际上是超级简单,如果在cmd窗口中执行,它工作得很好,尽管在批处理脚本中使用时它不工作。下面的命令通常会获取模式为anim_xxxx.png的所有.png文件(%04d代表ffmpeg中的4个数字) 现在我得到的错误是图像序列的通配符,我不知道问题出在哪里。使用另一个通配符,如*会产生相同的错误 [image2@0000000000 33E8C0]找不到路径为的文件 “anim_render.bat4d.png”,索引范围为0-4 anim_render.bat4d.png:没有这样的文件或目录Windows ffmpeg未正确使用批处理脚本中的通配符,windows,batch-file,ffmpeg,Windows,Batch File,Ffmpeg,我想要做的实际上是超级简单,如果在cmd窗口中执行,它工作得很好,尽管在批处理脚本中使用时它不工作。下面的命令通常会获取模式为anim_xxxx.png的所有.png文件(%04d代表ffmpeg中的4个数字) 现在我得到的错误是图像序列的通配符,我不知道问题出在哪里。使用另一个通配符,如*会产生相同的错误 [image2@0000000000 33E8C0]找不到路径为的文件 “anim_render.bat4d.png”,索引范围为0-4 anim_render.bat4d.png:没有这样
%04d是否与批处理文件中不存在于批处理文件之外的任何变量相似?到目前为止,我还没有找到任何类似的案例。不知道
%04
对于FFMPEG
来说意味着什么,尽管anim.*.mpg
似乎是一种更为普遍理解的指定所有开头的'anim.
的方法,也许这是一种特殊的含义+任何4个字符
(虽然?
在这里似乎更常见
尽管如此,ffmpeg似乎希望%
按字面上的提供,因此批量治疗方法是在%
之前加上插入符号:^%
Erm-使%
-^x
加倍通常与批处理中具有特殊意义的字符一起工作;似乎您需要%
来转义%
。它指定了模式anim_xxxx.png,就像我在问题中所写的那样。在%04d的情况下,xxxx是从0001开始的递增数字。使用^%可以得到不幸的是,同样的错误:/哦,我应该提到,我已经尝试过*并且得到了相同的错误。%0在批处理中意味着“此批文件的名称”,因此,因为您的批的名称是“anim\u render.bat”批处理将%0替换为anim\uuu%04d.png
成为anim\u anim\u render.bat4d.png
,因此理论上,该行应该变成ffmpeg-f image2-i anim\uu04d.png-vcode mjpeg-q:v 0-r 25 foo.avi
-将%/code>加倍,我不知道为什么会这样,尽管我尝试了完全相同的方法但是,在使用与上面完全相同的脚本时,再次出现相同的错误。它现在可以工作了,答案是正确的,因此感谢您让我再试一次。我想:我总是遇到问题,我已经断断续续地做了很多年。%04d来自C函数printf。在那里,它将生成前导零的4位数字。它是值得一看的是,Scanf上长于手册页的文档与printf相反,并且使用相同的字符转换。除非使用-start\u number,否则数字应该从0开始。
ffmpeg -f image2 -i anim_%04d.png -vcodec mjpeg -q:v 0 -r 25 foo.avi