Heroku部署Python Discord音乐机器人出现FFmpeg Errno 13权限错误
问题根因
- 你上传到仓库的
ffmpeg.exe是Windows平台的可执行文件,Heroku使用Linux操作系统,无法运行该格式的程序 - 手动上传的二进制文件默认没有执行权限,所以触发
PermissionError报错 - 之前使用FFmpeg buildpack报错的原因是你代码里硬编码了Windows下的FFmpeg路径,buildpack安装的FFmpeg是全局可调用的,不需要指定exe路径
解决方案步骤
步骤1:清理仓库内的FFmpeg文件
把你上传的整个FFmpeg/目录从GitHub仓库删除,不要手动托管FFmpeg二进制文件。
步骤2:重新配置Heroku buildpack
添加FFmpeg buildpack到你的Heroku应用,操作路径:你的Heroku应用后台 → Settings → Buildpacks → Add buildpack,填入对应buildpack地址即可。
步骤3:修改代码中的FFmpeg调用逻辑
原来的硬编码Windows路径的代码:
voice_channel.play(discord.FFmpegPCMAudio(executable="FFmpeg/bin/ffmpeg.exe", source=filename))
修改为直接调用全局FFmpeg,不需要指定executable参数:
voice_channel.play(discord.FFmpegPCMAudio(source=filename))
如果确实需要指定executable参数,填"ffmpeg"即可:
voice_channel.play(discord.FFmpegPCMAudio(executable="ffmpeg", source=filename))
步骤4:重新部署应用
提交代码修改后推送到GitHub,触发Heroku自动部署即可生效。
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

