Python Discord使用FFmpeg播放音频报错:'FFmpegPCMAudio'无'_process'属性
解决Discord.py中FFmpegPCMAudio的
_process属性错误 问题描述
尝试在Discord语音频道播放MP3文件,已正确安装FFmpeg,但运行代码时触发以下错误:
AttributeError: 'FFmpegPCMAudio' object has no attribute '_process'
原代码
@bot.command() async def joinandplay(ctx): song = os.path.isfile("musik.mp3") voice_channel = bot.get_channel(940326390857883648) vc = await voice_channel.connect() voice = discord.FFmpegPCMAudio(song) vc.play(voice)
错误原因
os.path.isfile("musik.mp3")返回的是布尔值(True/False),而discord.FFmpegPCMAudio要求传入的是音频文件的路径字符串。将布尔值传入会导致FFmpegPCMAudio初始化失败,无法生成必要的_process属性,从而触发错误。
修正后的代码
import os import discord from discord.ext import commands @bot.command() async def joinandplay(ctx): song_path = "musik.mp3" # 先验证文件是否存在 if not os.path.isfile(song_path): await ctx.send("指定的音频文件不存在!") return voice_channel = bot.get_channel(940326390857883648) vc = await voice_channel.connect() # 传入正确的文件路径 voice = discord.FFmpegPCMAudio(song_path) vc.play(voice)
额外注意事项
如果FFmpeg未添加到系统环境变量PATH中,需要在FFmpegPCMAudio中指定可执行文件路径:
- Windows系统示例:
voice = discord.FFmpegPCMAudio(song_path, executable="C:/path/to/ffmpeg.exe") - Linux/macOS系统示例:
voice = discord.FFmpegPCMAudio(song_path, executable="/usr/bin/ffmpeg")
内容的提问来源于stack exchange,提问作者F L R U Z
相关产品推荐
相关产品推荐

