Skip to content

[Bug] 音源接口返回死链导致播放器卡死,需增加 URL 有效性预检及音源自动切换容错能力 #303

Description

@eivgogo

问题描述 (Description)

当前行为

在当前架构下,前端通过 /api/music/url 接口获取歌曲播放链接后,直接赋值给 <audio> 标签或播放器进行加载。
当该接口成功返回 JSON,但**实际返回的 url 字段是一个死链(无法访问的资源)**时,播放器会一直卡在“缓冲/加载中”的状态。此时,播放器 UI 无响应。

复现步骤 (Steps to Reproduce)

复现步骤

  1. 在网络正常的情况下,触发音乐播放(如点击列表中的某首歌曲);
  2. 确保后端 /api/music/url 接口返回一个实际不可用的死链 URL;
  3. 观察播放器 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 等)时,播放器不应卡死,而是应该有如下容错表现:

  1. 停止当前卡顿的加载,重置播放器状态(UI 恢复初始状态);
  2. 自动触发备选音源获取逻辑,重新向接口请求新的有效 URL;
  3. 若最终无有效音源,则弹出明确的提示音源加载失败,并允许用户手动跳过。

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions