在子进程调用 ffmpeg 中禁用输出

Disable output in subprocess call ffmpeg

我目前在 python 中使用以下命令将我的 .webm 文件转换为 .ogg

subprocess.call(['ffmpeg', '-i', songfile, songfile + ".ogg"])

这会打印出一堆我不需要的输出,但我无法使用此命令禁用它。

subprocess.call(['ffmpeg', ' -loglevel quiet','-i', songfile, songfile + ".ogg"])

我收到错误

Unrecognized option '-log-level quiet'.

如何在此处禁用 ffmpeg 输出?

subprocess.call 文档说

To suppress stdout or stderr, supply a value of DEVNULL.

所以你可以替换

subprocess.call(['ffmpeg', '-i', songfile, songfile + ".ogg"])

使用

subprocess.call(['ffmpeg', '-i', songfile, songfile + ".ogg"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)

值得一看,但这就是您的尝试无效的原因:请记住,当您执行 subprocess.call 时没有涉及 shell(除非您明确要求it),这意味着您需要将 -loglevel quiet 作为两个单独的项目传递; ..., '-loglevel', 'quiet', ...