使用fluent-ffmpeg提取视频音频时遇报错求助
问题分析与解决
核心错误原因
你代码里的.audioChannels(0)是关键问题——设置0个音频通道意味着要输出无音频流的文件,但你指定的输出格式是MP3(纯音频格式),ffmpeg无法创建一个没有音频的MP3文件,这直接导致了"Invalid argument"错误。
修复步骤
- 移除
.audioChannels(0)配置,让ffmpeg自动沿用原视频的音频通道数; - 或者根据需求手动设置合理的通道数(比如单声道设为1,立体声设为2)。
修正后的代码
ffmpeg() .input(url) .format("mp3") .output("./src/videos/output-audio.mp3") .on("error", (err) => console.error(`Error converting file: ${err}`)) .on("end", async () => { console.log("audio transcripts"); const stream = fs.createReadStream("./src/videos/output-audio.mp3"); const transcription = await openai.audio.transcriptions.create({ file: stream, model: "whisper-1", response_format: "verbose_json", timestamp_granularities: ["word"], }); transcripts = transcription.text; console.log(transcription.text); }) .run();
额外排查点
如果修复后仍报错,可检查:
- 确认
./src/videos/目录确实存在且有写入权限(可临时用fs.accessSync("./src/videos/", fs.constants.W_OK)验证); - 检查ffmpeg版本,部分旧版本对某些音频编码兼容性较差,尝试升级到最新稳定版。
内容的提问来源于stack exchange,提问作者Idi Favour
相关产品推荐
相关产品推荐

