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

Node.js用spawn执行ffmpeg --help为何输出内容出现在stderr中

问题结论

这是FFmpeg自身的设计,并非Node.js的问题。

原因说明

FFmpeg的输出规则默认如下:

  • 诊断类信息(包括版本信息、帮助说明、参数报错、处理进度日志等)全部输出到stderr
  • 只有转码/处理后的媒体流数据会输出到stdout

你可以直接在系统终端执行重定向命令验证:
ffmpeg --help 1>./stdout.log 2>./stderr.log
执行后查看两个文件,会发现help内容完全保存在stderr.log中,stdout.log为空,可直接证明该行为和Node.js无关。

适配方案

如果需要完整获取FFmpeg的help输出,可以选择以下两种方案:

  • 直接监听stderr事件获取内容,该行为是FFmpeg的标准设计,不属于错误输出,无需额外处理
  • 同时监听stdout和stderr的输出事件,统一拼接内容,适配所有FFmpeg的输出场景

示例代码:

import path from 'path';
import { spawn } from 'child_process';

const childProcess = spawn(path.join(__dirname, 'ffmpeg'), ['--help']);
const outputBuffer = [];

// 统一处理两个输出流
[childProcess.stdout, childProcess.stderr].forEach(stream => {
  stream.setEncoding('utf-8');
  stream.on('data', chunk => outputBuffer.push(chunk));
});

childProcess.on('exit', () => {
  const helpContent = outputBuffer.join('');
  console.log(helpContent);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:06:00