【问题标题】:DiscordJS audio playback with multiple streamsDiscordJS 具有多个流的音频播放
【发布时间】:2022-02-09 03:20:33
【问题描述】:

我正在尝试使用 discord.js 创建一个既能播放音乐又能播放音效的 discord 机器人。

机器人可以正确播放音乐,但在音乐播放过程中尝试播放音效时,音效永远不会开始/结束。

我有以下代码用于播放音效。

function play(guildID, serverQueue, resource){
    const newAudioPlayer = createAudioPlayer();
    const oldAudioPlayer = serverQueue.audioPlayer;

    const connection = getVoiceConnection(guildID)

    oldAudioPlayer.pause();
    connection.subscribe(newAudioPlayer);

    newAudioPlayer.on(AudioPlayerStatus.Idle, () => {
        console.log("Done playing");
        connection.subscribe(oldAudioPlayer);
        oldAudioPlayer.unpause();
        newAudioPlayer.stop();
    }).on('error', err => {
        console.log("Something went wrong when trying to play sound effect");
        console.log(err);
        connection.subscribe(oldAudioPlayer);
        oldAudioPlayer.unpause();
        newAudioPlayer.stop();
    })

    newAudioPlayer.play(resource);
    console.log("Trying to play");
}

我意识到语音连接一次只能订阅一个音频播放器,而音频播放器一次只能播放一个资源。这就是为什么我创建了一个名为“newAudioPlayer”的新临时音频播放器来播放短音效。然后我暂停旧的音频播放器并订阅与新音频播放器的连接。

只要 oldAudioPlayer 之前没有被用于播放资源,声音效果就会正确播放。一旦使用 oldAudioPlayer 播放资源,newAudioPlayer 就永远不会开始播放资源。我已经为 newAudioPlayer 检查了所有不同的 AudioPlayerStates,但没有一个被触发。

serverQueue.audioPlayer 在加入语音通道时初始化,并始终设置。

程序确实打印“尝试播放”,但听不到任何声音。

【问题讨论】:

    标签: node.js discord discord.js


    【解决方案1】:

    显然这是 discord.js 的一个已知问题:

    https://github.com/discordjs/discord.js/issues/7232

    如果其他音频播放器的文件也在读取流,则解决方法是将本地文件作为流播放。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2019-02-24
    • 2021-07-28
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多