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

Discord使用FFmpegPCMAudio部署Heroku的ffmpeg路径问题求助

Discord.py部署Heroku时FFmpegPCMAudio路径问题解决方案

核心问题原因

本地代码硬编码了FFmpeg可执行文件的绝对路径,Heroku容器环境不存在该路径,且无需手动上传FFmpeg二进制文件即可完成配置。

分步解决方案

  • 第一步:移除代码中的硬编码路径
    调整discord.FFmpegPCMAudio的executable参数逻辑,适配本地开发和线上部署双场景:
    import os
    
    # 优先读取环境变量中的FFmpeg路径,无配置则调用系统PATH中的FFmpeg
    ffmpeg_path = os.environ.get('FFMPEG_PATH', None)
    with youtube_dl.YoutubeDL(YDL_OPTIONS) as ydl:
      info = ydl.extract_info(url, download=False)
      await ctx.send('Сейчас играет: ' + info.get('title'))
      url2 = info['formats'][0]['url']
      print(url2)
      if ffmpeg_path:
        source = discord.FFmpegPCMAudio(url2, executable=ffmpeg_path, **FFMPEG_OPTIONS)
      else:
        source = discord.FFmpegPCMAudio(url2, **FFMPEG_OPTIONS)
      vc.play(source)
    
    本地开发时可在项目根目录新增.env配置文件,添加一行FFMPEG_PATH=/Users/someUser/ffmpeg即可正常使用,无需来回修改代码。
  • 第二步:配置Heroku环境的FFmpeg
    进入Heroku应用管理页面,在设置板块找到Buildpacks配置项,添加官方适配的FFmpeg构建包即可。部署时Heroku会自动在容器环境中安装FFmpeg并添加到系统路径,不需要手动上传二进制文件到代码仓库。

可选优化

目前youtube_dl已经停止维护,可替换为活跃维护的yt-dlp,用法和youtube_dl基本一致,仅需要替换导入的库名即可获得更快的解析速度和更多站点适配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:45:05