You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为discord.js v13的Discord机器人从URL创建音频资源?

解决方案

问题原因

  • 你使用的ytdl-core-discord库返回的是Promise包装的Opus编码音频流,现有代码未加await读取流实例,直接将Promise对象传入音频资源创建方法,触发类型报错
  • 未指定流的编码类型,@discordjs/voice无法识别已编码的Opus流,会尝试二次转码导致无声音或报错

代码修改步骤

  1. 给ytdl调用添加await关键字,正确获取流实例
  2. 在createAudioResource的配置项中指定inputType为StreamType.Opus,告诉语音库不需要再对流传码

修改后的核心代码片段

if(video){
    // 加await读取ytdl返回的流
    const stream = await ytdl(video.url, {filter: "audioonly"});
    // 指定流类型为Opus
    const resource = createAudioResource(stream, {
        inputType: StreamType.Opus
    });
    player.play(resource);
}

额外检查项

  • 确保已安装语音功能依赖:执行npm install libsodium-wrappers ffmpeg-static安装必要的编码和底层依赖,避免缺库导致的无声音问题
  • 如果后续仍有播放异常,可以将ytdl-core-discord替换为ytdl-core,搭配@discordjs/opus使用,流类型配置调整为StreamType.Arbitrary即可

内容的提问来源于stack exchange,提问作者Jason Hendry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:36:04