如何解决通过 opusscript
我一直在尝试使用电子通过不和谐机器人播放声音。但是,我遇到了三个问题。
首先是我通常用来播放声音文件的代码虽然不和谐返回一个错误,指出我缺少 opus.node 和 opusscript。这不应该发生,因为我已经安装了 @discordjs/opus,并且在电子实例之外运行相同的代码可以正常工作。
message.member.voice.channel.join().then((connection) => {
const dispatcher = connection.play(ytdl("https://www.youtube.com/watch?v=ZlAU_w7-Xp8",{ quality: "highestaudio" }));
dispatcher.on("finish",() => {
console.log("Song is finished.");
});
});
为了解决这个错误,我安装了 opusscript。然而,这是第二个问题的来源。我能够运行声音 - 前 9 次。第九次之后,机器人发出以下错误:
(node:21064) UnhandledPromiseRejectionWarning: RangeError: offset is out of bounds
at Uint16Array.set (<anonymous>)
at OpusScript.encode (C:\Users\spiralio\Desktop\sb\node_modules\opusscript\index.js:67:16)
at Encoder._encode (C:\Users\spiralio\Desktop\sb\node_modules\prism-media\src\opus\Opus.js:60:25)
at Encoder._transform (C:\Users\spiralio\Desktop\sb\node_modules\prism-media\src\opus\Opus.js:157:30)
at Encoder.Transform._read (_stream_transform.js:191:10)
at Encoder.Transform._write (_stream_transform.js:179:12)
at doWrite (_stream_writable.js:403:12)
at writeOrBuffer (_stream_writable.js:387:5)
at Encoder.Writable.write (_stream_writable.js:318:11)
at VolumeTransformer.ondata (_stream_readable.js:716:22)
仅当我正在播放的声音文件与自身重叠 9 次时才会发生此错误。如果我让它在此错误播放之前完成,我可以继续播放声音就好了。但是,一旦错误播放,无论我等待多久,声音都不再播放。
我尝试的一个解决方案是让机器人在渲染器进程中运行,而不是在主进程中运行。但是,这提示我机器人无法从浏览器连接到语音通道的问题。
解决方法
这里似乎存在一些问题。
首先,这里的根本问题是我们正在编码一个太大的文件。我怀疑这些视频正在滚雪球,以至于我们撞到了砖墙。
我会尝试仅下载音频以避免发送过大的文件(请参阅 ytdl options)。
message.member.voice.channel.join().then((connection) => {
const dispatcher = connection.play(ytdl("https://www.youtube.com/watch?v=ZlAU_w7-Xp8",{ quality: "highestaudio",filter: "audioonly" }));
dispatcher.on("finish",() => {
console.log("Song is finished.");
});
});
Electron 没有检测到 @discordjs/opus
似乎是原生模块和您的构建器的一个更深层次的问题。您是否在生产中遇到过这种情况,或者您是否在某处重新创建了 Electron 设置?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。