【发布时间】:2017-05-31 19:17:55
【问题描述】:
我正在使用 FFmpeg 将 webm 转换为 mp4。
我的批处理文件是
cd "C:\Users\Matt\Desktop\" && for %f in (*.webm) do ffmpeg -y -i "C:\Users\Matt\Desktop\%~f" -vcodec libx264 -b:v 600K -pass 1 -acodec aac -b:a 128k "C:\Users\Matt\Desktop\%~nf.mp4" && ffmpeg -y -i "C:\Users\Matt\Desktop\" -vcodec libx264 -b:v 600K -pass 2 -acodec aac -b:a 128k "C:\Users\Matt\Desktop\%~nf.mp4"
它适用于 CRF 和 1 Pass,但使用 2 Pass 它会在第二遍时停止并给出错误:
C:\Users\Matt\Desktop" -vcodec libx264 -b:v 600K -pass 2 -acodec aac -b:a 128k C:\Users\Matt\Desktop\video:参数无效
Path 缺少第一个双引号,文件名“video 01.mp4”被截断。
【问题讨论】:
-
你确定第二遍中的
-i参数是正确的吗?另外两次你使用它时,你已经指定了一个文件。在最后一个例子中,它似乎是一个目录 - 可能终端\"被解释为转义 -" -
@Magoo 你是对的,第二个路径缺少 %~f。解决了,谢谢。
-
2-pass 意思是第一遍的输出作为第二遍的输入,对吧?
-
@aschipfl 我现在不确定。在 wiki 上,它显示了用作两个通道的输入的原始源。 trac.ffmpeg.org/wiki/Encode/H.264#twopass
-
啊,我明白了。你应该相信文档而不是我,我真的不知道
ffmpeg,它只是我说的方式对我来说更合乎逻辑,但该工具似乎工作方式不同(我猜某处有一个临时文件保存收集的信息在第一次通过时)。很抱歉让您感到困惑!
标签: batch-file cmd ffmpeg command-prompt