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

使用Nextcord开发Discord机器人播放MP3失败:FFmpeg未找到

解决Nextcord机器人无法播放MP3的问题

问题根源

错误日志里明确显示nextcord.errors.ClientException: ffmpeg was not found——系统找不到FFmpeg可执行文件,导致无法解码生成的MP3音频,自然没法播放。

解决步骤

1. 安装FFmpeg

  • Windows:下载FFmpeg编译好的二进制包,解压后把ffmpeg.exe所在的文件夹路径添加到系统环境变量PATH中。
  • macOS:打开终端执行brew install ffmpeg(需先安装Homebrew)
  • Linux:Debian/Ubuntu系执行sudo apt install ffmpeg,其他发行版用对应包管理器安装。

2. 验证安装

打开终端/命令提示符,输入ffmpeg -version,能显示版本信息就说明安装成功。

3. 代码优化(可选但推荐)

原代码存在文件名冲突、错误处理宽泛等问题,以下是优化版本:

import os
import tempfile
from gtts import gTTS
import nextcord
from nextcord.ext import commands

@bot.command(name="bottalk")
async def bottalk(ctx, *args):
    text = " ".join(args)
    user = ctx.message.author
    
    # 检查用户是否在语音频道
    if not user.voice:
        await ctx.send("先加入语音频道啊!")
        return
    
    # 连接语音频道
    try:
        vc = await user.voice.channel.connect()
    except nextcord.ClientException:
        # 已连接则复用现有客户端
        vc = ctx.voice_client
    if not vc:
        await ctx.send("连不上语音频道哦")
        return
    
    # 用临时文件存储音频,避免文件名冲突
    with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as temp_file:
        temp_filename = temp_file.name
    
    # 生成TTS音频
    sound = gTTS(text=text, lang="en", slow=False)
    sound.save(temp_filename)
    
    # 停止当前播放的音频
    if vc.is_playing():
        vc.stop()
    
    # 如果环境变量未生效,可填写FFmpeg绝对路径,比如Windows的"C:/ffmpeg/bin/ffmpeg.exe"
    source = await nextcord.FFmpegOpusAudio.from_probe(
        temp_filename,
        method="fallback",
        executable="ffmpeg"
    )
    
    # 播放完成后清理临时文件并断开连接(可按需调整)
    def on_play_end(error):
        if error:
            print(f"播放出错:{error}")
        vc.disconnect()
        if os.path.exists(temp_filename):
            os.remove(temp_filename)
    
    vc.play(source, after=on_play_end)

额外提示

若添加环境变量后仍找不到FFmpeg,直接在executable参数中填写FFmpeg的绝对路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:55:29