【问题标题】:discord.js playing audio on multiple serversdiscord.js 在多个服务器上播放音频
【发布时间】:2020-05-12 03:25:09
【问题描述】:

我使用 Node.js / ffmpeg 为 discord.js 制作了一个测试测试机器人,用于在 discord 的频道中播放广播电台,并且没有问题,但是我在考虑如何将同一个电台流式传输到高效地使用多个服务器/通道。

例如,如果我在“Discord server one”上播放它:

var voiceChannel = message.member.voiceChannel;
    voiceChannel.join().then(connection => {
    console.log("joined channel");
    const dispatcher = connection.playArbitraryInput('http://philae.shoutca.st:8950/live', { volume: 0.5 });

    dispatcher.on("end", end => {
      console.log("left channel");
      voiceChannel.leave();
     });
        }).catch(err => console.log(err)); 

但是,如果我想在我的机器人所属的另一台服务器上播放它,我需要再次创建音频流吗?

如果是这样,那有点麻烦。我的机器人必须为每个实例单独编码流?

我想知道是否有任何方法可以重用音频流并重新流式传输,这样如果我的机器人在 100 个频道中,它只有一个流的下载实例和 100 次上传

我觉得我说得有道理,但让我做一些假代码来帮助解释一下:

可以说我可以这样做:

let cachedAudioStream = cacheArbitraryInput('http://philae.shoutca.st:8950/live', {});

那么对于每个传出实例:

connection1.playArbitraryInput(cachedAudioStream, { volume: 0.5 });
connection2.playArbitraryInput(cachedAudioStream, { volume: 0.8 });
connection3.playArbitraryInput(cachedAudioStream, { volume: 1 });

等等

谢谢

【问题讨论】:

    标签: node.js ffmpeg discord.js audio-streaming internet-radio


    【解决方案1】:

    由于流是由 Discord.js 管理的(你只给一个链接,而 Discord.js 使用 FFMPEG 来处理它),你不能不修改 Discord.js 代码来做。

    您的问题是相关的,但我认为这不可行,至少如果您使用 Discord.js。你仍然可以在他们的Github repository 上打开一个问题来询问他们。

    【讨论】:

    • 是的,不幸的是,它希望提高效率,但至少目前看来,至少每个新的音频连接都会创建一个全新的实例。
    【解决方案2】:

    discord.js 有一个 'Voice Broadcast' 用于无线电机器人之类的东西。是的,您必须将呼叫连接到广播,仅此而已。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-11
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      相关资源
      最近更新 更多