问题描述 (Description)
当前行为
在当前架构下,前端通过 /api/music/url 接口获取歌曲播放链接后,直接赋值给 <audio> 标签或播放器进行加载。
当该接口成功返回 JSON,但**实际返回的 url 字段是一个死链(无法访问的资源)**时,播放器会一直卡在“缓冲/加载中”的状态。此时,播放器 UI 无响应。
复现步骤 (Steps to Reproduce)
复现步骤
- 在网络正常的情况下,触发音乐播放(如点击列表中的某首歌曲);
- 确保后端
/api/music/url 接口返回一个实际不可用的死链 URL;
- 观察播放器 UI 状态,此时会持续显示“缓冲中”且无法交互。
接口返回数据示例
当前获取歌曲链接的接口返回 JSON 数据如下(其中 url 为测试用的死链):
{
"url": "http://175.27.166.236/kgqq/qq.php?type=mp3&id=001jf7HS0tCZp9&level=lossless",
"type": "flac",
"sourceName": "全豆要[聚合音源]",
"attempts": [
{
"name": "全豆要[聚合音源]",
"status": "success"
}
],
"requestedSource": "tx",
"downloadSource": "tx"
}
期望行为 (Expected Behavior)
当遇到实际音源地址不可用(死链、404、403 等)时,播放器不应卡死,而是应该有如下容错表现:
- 停止当前卡顿的加载,重置播放器状态(UI 恢复初始状态);
- 自动触发备选音源获取逻辑,重新向接口请求新的有效 URL;
- 若最终无有效音源,则弹出明确的提示音源加载失败,并允许用户手动跳过。
问题描述 (Description)
当前行为
在当前架构下,前端通过
/api/music/url接口获取歌曲播放链接后,直接赋值给<audio>标签或播放器进行加载。当该接口成功返回 JSON,但**实际返回的
url字段是一个死链(无法访问的资源)**时,播放器会一直卡在“缓冲/加载中”的状态。此时,播放器 UI 无响应。复现步骤 (Steps to Reproduce)
复现步骤
/api/music/url接口返回一个实际不可用的死链 URL;接口返回数据示例
当前获取歌曲链接的接口返回 JSON 数据如下(其中
url为测试用的死链):{ "url": "http://175.27.166.236/kgqq/qq.php?type=mp3&id=001jf7HS0tCZp9&level=lossless", "type": "flac", "sourceName": "全豆要[聚合音源]", "attempts": [ { "name": "全豆要[聚合音源]", "status": "success" } ], "requestedSource": "tx", "downloadSource": "tx" }期望行为 (Expected Behavior)
当遇到实际音源地址不可用(死链、404、403 等)时,播放器不应卡死,而是应该有如下容错表现: