Discord Bot无法播放YouTube视频 FFmpeg Invalid argument报错求解
Discord Bot 音频播放报错修复方案
核心问题根因
你代码中的FFMPEG_OPTIONS配置存在参数拼接错误:
# 原错误写法,两行字符串拼接时没有空格分隔 FFMPEG_OPTIONS = {'before_options': '-reconnect_streamed 1' '-reconnect_delay_max 5', 'options': '-vn'}
上述写法实际拼接后的before_options值为-reconnect_streamed 1-reconnect_delay_max 5,FFmpeg解析参数时会把末尾的5识别为独立的输出格式参数,直接触发你遇到的Unable to find a suitable output format for '5'报错。
修复方法
补全两个FFmpeg参数之间的空格即可,修复后的配置如下:
FFMPEG_OPTIONS = { 'before_options': '-reconnect_streamed 1 -reconnect_delay_max 5 -nostdin', 'options': '-vn' }
新增的-nostdin参数用于避免FFmpeg等待标准输入,适配Discord Bot的无交互调用场景。
其他可选排查点
如果修改配置后仍存在播放异常,可按以下顺序排查:
- 验证本地FFmpeg环境支持opus格式,运行命令
ffmpeg -formats | grep opus,返回结果存在opus标识即为正常 - 临时打印提取的流地址
url2,在本地用FFmpeg直接播放该地址,确认流地址本身有效 - 若使用的是停止维护的
youtube-dl,可替换为兼容的yt-dlp库,拉流稳定性更高 - 升级discord.py到2.0及以上稳定版本,避免底层音频处理逻辑存在兼容问题
内容的提问来源于stack exchange,提问作者Calax
相关产品推荐
相关产品推荐

