首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DiscordJS v13 AudioPlayer在尝试流式传输来自youtube视频的音频流时遇到缓冲问题。

DiscordJS v13 AudioPlayer在尝试流式传输来自youtube视频的音频流时遇到缓冲问题。
EN

Stack Overflow用户
提问于 2021-09-16 02:32:28
回答 1查看 367关注 0票数 0

这是到目前为止我的不和谐音乐机器人的代码。我相信机器人具有适当的权限,并且能够加入调用"!play“命令的人的语音通道。我遇到的问题是,我似乎不能弄清楚为什么音频流停留在“缓冲”状态。文档指出,“缓冲”状态应该通过或失败,但它似乎被卡住了。

代码语言:javascript
运行
复制
client.on("messageCreate", async message => {
    if (message.content.slice(0, 6) == "!play ") {
        // check input to see if it is a youtube URL
        let input = message.content.slice(6);
        if (isYoutubeUrl(input)) {
            url = input;
        } else {
            formatInput(input);
            url = await searchVideo(searchTerm);
        }
        if (message.member.voice.channelId !== null) {
            const permissions = message.member.voice.channel.permissionsFor(message.client.user);
            if (!permissions.has("CONNECT") || !permissions.has("SPEAK")) {
              return message.channel.send(
                "I need the permissions to join and speak in your voice channel!"
              );
            }

            const connection = joinVoiceChannel({
                channelId: message.member.voice.channel.id,
                guildId: message.guild.id,
                adapterCreator: message.guild.voiceAdapterCreator
            })

            const stream = await ytdl(url, { filter:'audioonly' });
        
            const player = createAudioPlayer();
            var resource = createAudioResource(stream, { seek: 0, volume: 1 });
            player.play(resource);
            connection.subscribe(player);

        } else {
            message.reply("You need to be in a voice channel to play music!");
        }
    }
})

下面是当我对播放器本身执行console.log时出现的结果

代码语言:javascript
运行
复制
<ref *1> AudioPlayer {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  subscribers: [
    PlayerSubscription {
      connection: [VoiceConnection],
      player: [Circular *1]
    }
  ],
  _state: {
    status: 'buffering',
    resource: AudioResource {
      playbackDuration: 0,
      started: false,
      silenceRemaining: -1,
      edges: [Array],
      playStream: [OggDemuxer],
      metadata: null,
      silencePaddingFrames: 5,
      audioPlayer: [Circular *1]
    },
    onReadableCallback: [Function: onReadableCallback],
    onFailureCallback: [Function: onFailureCallback],
    onStreamError: [Function: onStreamError]
  },
  behaviors: { noSubscriber: 'pause', maxMissedFrames: 5 },
  debug: [Function (anonymous)],
  [Symbol(kCapture)]: false
}
EN

回答 1

Stack Overflow用户

发布于 2021-09-20 09:06:57

结果发现流不是问题所在。我只需要使用“@discordjs/getVoiceConnection”包中的“discordjs”组件,并将流广播到该连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69201721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档