You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何隐藏subprocess调用FFmpeg的输出并存入变量

为什么FFmpeg会在终端打印输出
  • subprocess.check_output 默认仅捕获命令的标准输出(stdout)流,未被捕获的流会直接输出到当前终端。
  • 你测试的echo命令所有输出都走stdout流,因此会被完整存入变量,不会在终端显示。
  • FFmpeg的媒体信息、转码进度、运行日志默认全部写入标准错误(stderr)流,你的原有代码没有对stderr做重定向捕获,这部分内容就直接打印到终端了。
隐藏输出并存入变量的实现方法

如果需要把FFmpeg的全部输出捕获到变量用于后续正则匹配,只需要在调用时指定将stderr重定向到stdout,和标准输出一起被捕获即可,参考代码:

import subprocess
output = subprocess.check_output(
    "ffmpeg -i audio.mp3 -f null -",
    shell=True,
    stderr=subprocess.STDOUT
)

执行后FFmpeg的所有输出都会存入output变量(默认是字节类型,使用前可以根据需要用.decode('utf-8')转成字符串),不会在终端打印任何内容。

可选优化:如果你不需要FFmpeg输出全量日志,可以在FFmpeg命令里加日志级别参数过滤无关内容,比如加上-loglevel error就只会输出错误级别的信息,减少后续正则匹配的干扰。


内容的提问来源于stack exchange,提问作者Dev01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:31:36