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

替换yt_dlp后Discord音乐Bot的FFmpeg返回码1故障排查

Discord音乐Bot替换yt_dlp后FFmpeg返回码1无法播放问题排查

常见排查方向及解决方案

1. yt_dlp 音频提取配置适配

yt_dlp与youtube-dl的默认格式提取逻辑有差异,需明确指定Discord兼容的音频格式:

  • 在ydl_opts中配置格式与后处理参数,确保输出opus/mp3等Discord支持的编码:
ydl_opts = {
    'format': 'bestaudio/best',
    'postprocessors': [{
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'opus',
        'preferredquality': '192',
    }],
    'quiet': True,
    'no_warnings': True,
}
  • 若FFmpeg未在系统PATH中,需手动指定路径:
ydl_opts['ffmpeg_location'] = 'D:/Tools/ffmpeg.exe' # Windows示例,Linux/macOS直接写可执行文件路径

2. FFmpeg 启动参数修正

Discord Bot调用FFmpeg时的参数需匹配yt_dlp输出的流特性:

  • 必须添加-vn参数禁用视频流,避免FFmpeg处理视频报错
  • 替换旧参数:将-b:a改为-c:a指定音频编码,确保参数符合FFmpeg最新语法
  • 示例discord.py的FFmpeg调用配置:
from discord import FFmpegPCMAudio

audio_source = FFmpegPCMAudio(
    source=extracted_audio_url,
    executable="/usr/bin/ffmpeg", # 替换为你的FFmpeg路径
    options="-vn -c:a libopus -b:a 128k"
)

3. 音频流URL有效性验证

yt_dlp返回的临时签名URL可能存在权限或过期问题:

  • 直接复制日志中的音频URL到浏览器,确认能正常播放
  • 避免对URL做额外转义处理,确保传递给FFmpeg的是原始有效地址

4. FFmpeg版本升级

旧版FFmpeg可能不支持yt_dlp输出的新编码/容器:

  • 升级到FFmpeg 5.x以上稳定版
  • 执行ffmpeg -version确认版本,检查是否包含libopus等必要编码库

日志排查关键

若上述方案无效,需重点分析日志:

  • 给yt_dlp开启 verbose 日志:在ydl_opts中添加'verbose': True,查看音频提取过程中的警告/错误
  • 捕获FFmpeg的错误输出,查找类似Invalid data found when processing input或Unsupported codec的具体报错信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:57:21