Windows下ffmpeg不支持https协议,discord.py音乐bot播放报错如何解决
Windows平台discord.py音乐机器人FFmpeg HTTPS输入报错解决方案
问题根因确认
你之前的判断正确,报错核心是当前使用的FFmpeg版本未编译HTTPS协议支持。Windows平台的FFmpeg安装逻辑和Linux完全不同,无需寻找./configure配置文件进行编译操作,直接替换适配版本即可。
第一步:安装带HTTPS支持的FFmpeg版本
- 搜索FFmpeg官方Windows构建包,选择full完整版(不要下载basic精简版),完整版默认内置openssl依赖,原生支持HTTPS输入
- 下载完成后解压到磁盘任意目录,例如
C:\FFmpeg,解压后确认C:\FFmpeg\bin目录下存在ffmpeg.exe、ffplay.exe、ffprobe.exe三个可执行文件 - 将FFmpeg的bin目录路径添加到系统环境变量Path:右键「此电脑」→属性→高级系统设置→环境变量→在系统变量列表中找到Path→点击编辑→新建→粘贴
C:\FFmpeg\bin→依次点击确定保存所有配置窗口 - 验证配置生效:按Win+R输入cmd打开命令提示符,执行
ffmpeg -protocols,输出的支持协议列表中能找到https即代表版本符合要求
第二步:优化Python调用代码
新增FFmpeg路径显式声明和流播放适配参数,避免环境变量识别失效、YouTube音频流断连问题,修改后代码如下:
channel = message.author.voice.channel if message.content.startswith("IT play"): voicechannel = await channel.connect() songname = message.content.split(" ")[2] vurl = "https://www.youtube.com/watch?v=kn4nL99Vb5A" song = pafy.new(vurl) audio = song.getbestaudio() print(audio.url) # 显式指定FFmpeg路径,添加流播放适配参数 FFMPEG_PATH = r"C:\FFmpeg\bin\ffmpeg.exe" ffmpeg_options = { 'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn' } source = discord.FFmpegPCMAudio(audio.url, executable=FFMPEG_PATH, **ffmpeg_options) voicechannel.play(source)
第三步:依赖校验
- pafy需要配合yt-dlp才能正常解析YouTube音频链接,执行
pip install yt-dlp安装对应依赖即可 - 不要长期复用硬编码的测试音频链接,YouTube生成的音频直链存在时效性,每次播放前需重新调用pafy解析获取最新地址
内容的提问来源于stack exchange,提问作者LordPhoenix44
相关产品推荐
相关产品推荐

