Heroku部署Discord Bot遭遇FFmpeg PermissionError权限问题求助
Discord Bot部署Heroku后play命令PermissionError问题解决建议
核心问题分析
Heroku运行的是Linux环境,你代码中指定的/app/ffmpeg/ffmpeg.exe是Windows平台的可执行文件,在Linux系统下既无法正常执行,还会触发权限拒绝错误。此外,若已正确配置ffmpeg buildpack,无需手动指定可执行文件路径。
具体修复步骤
移除代码中手动指定的executable参数
将原代码行:voice.play(discord.FFmpegPCMAudio(executable="/app/ffmpeg/ffmpeg.exe", source=url, **FFMPEG_OPTIONS))修改为:
voice.play(discord.FFmpegPCMAudio(source=url, **FFMPEG_OPTIONS))正确添加ffmpeg buildpack后,Heroku会自动将ffmpeg加入系统PATH,discord.py会自动识别并调用该可执行文件。
确认buildpack配置正确性
确保使用的是适配Linux环境的ffmpeg buildpack:- 若使用Heroku官方apt buildpack,需在项目根目录创建
Aptfile文件,写入内容ffmpeg,然后添加buildpack地址:https://github.com/heroku/heroku-buildpack-apt.git - 也可直接使用专门的ffmpeg buildpack,确保其适配Heroku Linux环境。
- 若使用Heroku官方apt buildpack,需在项目根目录创建
重新部署项目
将修改后的代码推送到GitHub,触发Heroku重新部署,确保新代码和配置生效。
额外排查点
- 若问题仍存在,可在Heroku控制台执行命令
which ffmpeg,确认ffmpeg已正确安装且路径可被系统识别。 - 检查
FFMPEG_OPTIONS中的参数,避免使用Windows平台特有的参数配置。
内容的提问来源于stack exchange,提问作者Yaroslav M.
相关产品推荐
相关产品推荐

