ffmpeg 未在批处理脚本中正确使用通配符

问题描述 投票:0回答:2

我想要做的实际上非常简单,如果从 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
2个回答
4
投票

不知道

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

尽管如此,ffmpeg 似乎期望提供

%
literally
,因此批量修复将在
%
之前加上插入符号:
^%

Erm- 使

%
加倍 -
^x
通常适用于批量具有特殊含义的字符;看来你需要
%
才能逃脱
%
...


0
投票

这个问题不是ffmpeg造成的,而是命令行解释器造成的。 我有完全相同的问题。 正如您在原始问题的错误消息中看到的那样,“%0”已被 .bat 文件的名称和路径替换。 这已经在命令行上发生了

就我而言,我有一个批处理文件“frames1.bat”,它只是:

cd /DC:\Users\用户名\Documents fmpeg\werk ffmpeg -i 00.mp4 拇指%04d.jpg -hide_banner 暂停

它产生了错误:

image2 @ 000001eb29122980] 指定的文件名“thumbC:\Users\username\Documents fmpeg\werk rames1.bat4d.jpg”不包含图像序列模式或模式无效。

因此,不是像 ffmeg 那样用数字替换“%04d”,而是用我的 .bat 文件的路径文件名替换“%0”

进一步观察,我发现命令行上已经发生了这种情况。 这被馈送到 ffmpeg:

C:\Users\用户名\文档 fmpeg\werk>ffmpeg -i 00.mp4 拇指"C:\用户\用户名\文档 fmpeg\werk rames1.bat"4d.jpg -hide_banner

如您所见,在 ffmpeg 启动之前文件名就已经被替换了。

解决办法:

ffmpeg -i 00.mp4 拇指%%04d.jpg -hide_banner

添加的 % 符号告诉命令行解释器将其放置不变,以便 ffmpeg 可以正确解释它。

© www.soinside.com 2019 - 2024. All rights reserved.