javascript - “错误:找不到 Opus 引擎。” 尝试播放 mp3 文件时 (discord.js)
问题描述
我正在使用 Heroku 托管我的应用程序,其中有以下代码:
if (isReady && message.content === '!play')
{
isReady = false;
var voiceChannel = message.member.voiceChannel;
voiceChannel.join().then(connection =>
{
const dispatcher = connection.playFile('./BRODYQUEST.mp3');
dispatcher.on("end", end => {
voiceChannel.leave();
});
}).catch(err => console.log(err));
isReady = true;
}
当我输入命令时,机器人会加入我的频道,但它不会播放任何音乐。我在控制台中收到此错误:
2018-04-29T07:00:49.053720+00:00 app[worker.1]: Error: Couldn't find an Opus engine.
2018-04-29T07:00:49.053738+00:00 app[worker.1]: at Object.exports.guaranteeOpusEngine (/app/node_modules/discord.js/src/client/voice/opus/OpusEngineList.js:30:31)
2018-04-29T07:00:49.053739+00:00 app[worker.1]: at AudioPlayer.playUnknownStream (/app/node_modules/discord.js/src/client/voice/player/AudioPlayer.js:87:18)
2018-04-29T07:00:49.053741+00:00 app[worker.1]: at VoiceConnection.playFile (/app/node_modules/discord.js/src/client/voice/VoiceConnection.js:448:24)
2018-04-29T07:00:49.053742+00:00 app[worker.1]: at voiceChannel.join.then.connection (/app/bot.js:71:40)
2018-04-29T07:00:49.053744+00:00 app[worker.1]: at <anonymous>
2018-04-29T07:00:49.053745+00:00 app[worker.1]: at process._tickCallback (internal/process/next_tick.js:188:7)
解决方案
为了运行它,您需要ytdl-core
安装。
npm install --save ytdl-core
如果您收到“OPUS_ENGINE_MISSING”的错误消息,则需要安装 discord.js 推荐的 opus 软件包之一。
npm install --save node-opus
如果您收到“找不到 FFMPEG”的错误消息,可以通过安装 ffmpeg 来解决。
在 Debian / Ubuntu 上:
sudo apt-get install ffmpeg
在 Windows 上:
npm install ffmpeg-binaries --save
此外,有报道称以这种方式从 Windows 10 提供的 Ubuntu 子系统播放音频不起作用。
推荐阅读
- delphi - 将表达式作为参数传递给 delphi 中的过程或函数
- node.js - 如何以编程方式启动/停止 Metro Bundler
- c# - 如何将 UWP 与 RDP 集成
- javascript - 使用 (?<= lookbehind assertion 时的“SyntaxError:未终止的正则表达式文字”
- google-apps-script - Google 数据洞察连接器 getData 缺少字段
- ruby-on-rails - 如何为acts_as_taggable_on 缓存我的tag_counts。
- gap-system - 如何更改 GAP 中的当前目录?
- c# - 未映射强类型配置设置
- mysql - MySQL中某列的类型发生变化时如何设计?(以前是int,现在需要是int或者string)
- jquery - 在无限数量的图像之间淡入淡出