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二进制文件,完全不用手动配置:
- 安装依赖包:
npm install ffmpeg-static --save
- 在代码中引入并配置:
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




