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

Discord.py机器人音频播放无输出:无报错、is_playing返回True

Discord Bot音频无输出问题修复方案

voice.play() 方法本身无返回值,所以打印sound得到None属于正常行为,和音频加载无关。针对is_playing()返回True但无音频输出的问题,可按以下步骤修复:

1. 调整FFmpeg调用参数

默认的FFmpegPCMAudio参数不符合Discord音频传输要求,修改播放代码为:

voice.play(discord.FFmpegPCMAudio(
    source="song.mp3",
    before_options="-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5",
    options="-vn"
))

参数说明:

  • before_options 配置音频流自动重连逻辑,避免网络波动导致的无输出
  • -vn 禁用视频流处理,避免格式解析错误

2. 修复语音频道连接逻辑

原代码每次调用play都会尝试连接频道,若Bot已在频道中会触发隐性异常,替换原有连接逻辑:

# 替换原await voice_channel.connect()代码块
if ctx.voice_client is None:
    await voice_channel.connect()
else:
    await ctx.voice_client.move_to(voice_channel)

3. 验证FFmpeg环境

确认运行环境已安装FFmpeg且可被程序调用:

  • Windows:将ffmpeg.exe放在Bot根目录,或添加FFmpeg路径到系统环境变量
  • Linux:执行apt install ffmpeg安装
  • Mac:执行brew install ffmpeg安装

4. 检查Bot权限

确认Bot在对应服务器拥有以下权限:

  • 连接语音频道
  • 语音发言
  • 无频道级的发言限制

5. 替换音频下载依赖

原项目使用的youtube-dl已停止维护,大概率出现音频下载异常,建议替换为yt-dlp:

  • 执行pip install yt-dlp安装
  • 将代码中import youtube_dl修改为import yt_dlp as youtube_dl即可,无需修改其他调用逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:36:04