You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 64位环境下Discord Bot报错:FFMPEG not found 求助

解决Discord机器人「Error: FFMPEG not found」报错(Windows 64位)

Hey Robin, 这个报错的核心原因是你的Discord机器人(尤其是涉及语音处理的功能)需要FFmpeg来完成音频编解码,但系统找不到它的执行路径。你之前尝试的重装依赖、简化代码这些操作没解决问题很正常,因为根源不在代码依赖上,而是FFmpeg本身没被系统识别到。下面给你几个针对性的解决方案,按优先级排序:

方案1:手动安装FFmpeg并添加到系统环境变量(最稳定通用)

这是让整个系统都能调用FFmpeg的标准方式:

  • 去FFmpeg官方网站下载Windows 64位的静态构建包(选不带"shared"的版本,解压后直接就能用,不用安装)
  • 把解压后的文件夹放到一个固定路径,比如C:\ffmpeg
  • 进入文件夹里的bin目录,复制它的完整路径(比如C:\ffmpeg\bin
  • 打开系统环境变量设置:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
  • 在「系统变量」区域找到Path,点击「编辑」→「新建」,粘贴刚才复制的bin路径
  • 重启所有打开的命令行窗口、VS Code等开发工具(环境变量修改后必须重启才会生效)
  • 验证:打开CMD输入ffmpeg -version,如果能输出FFmpeg的版本信息,说明配置成功了

方案2:在代码中直接指定FFmpeg路径(适合不想修改系统环境的场景)

如果不想折腾系统环境变量,可以在Discord机器人的配置里直接指定FFmpeg的绝对路径:

若使用discord.js:

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildVoiceStates // 语音功能必须的权限意图
  ],
  // 替换成你自己的FFmpeg路径,注意Windows下用双反斜杠或者正斜杠
  ffmpegPath: 'C:\\ffmpeg\\bin\\ffmpeg.exe'
});

若使用discord-player这类音频工具库:

const { Player } = require('discord-player');
const player = new Player(client, {
  ffmpegPath: 'C:\\ffmpeg\\bin\\ffmpeg.exe' // 直接指定FFmpeg执行文件路径
});

方案3:用npm包自动安装FFmpeg(最省心)

可以通过ffmpeg-static这个npm包自动下载对应系统的FFmpeg二进制文件,完全不用手动配置:

  1. 安装依赖包:
npm install ffmpeg-static --save
  1. 在代码中引入并配置:
const ffmpeg = require('ffmpeg-static');
const { Client, GatewayIntentBits } = require('discord.js');

const client = new Client({
  intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildVoiceStates],
  ffmpegPath: ffmpeg.path // 直接使用包提供的FFmpeg路径
});

额外排查要点

  • 如果你修改了系统环境变量,一定要重启所有命令行和开发工具,否则新的环境变量不会生效
  • 确认代码中的路径没有拼写错误,Windows路径里的反斜杠要写成\\(转义格式)或者直接用/
  • 如果你用的是discord.js v14及以上版本,务必确保机器人的intents包含GuildVoiceStates,否则语音相关功能会直接异常

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

火山引擎 最新活动