[Bug] Cuefield AutoMix 交接后第三首起播放器卡死,切歌无法恢复(v2.2.0)
Author: HeliHlKtCreated Sep 11, 2026Updated Sep 11, 2026
环境
- Mineradio 2.2.0
- Windows
- 音源:QQ 音乐
- Cuefield AutoMix:开启
问题表现
启动后可以正常导入 QQ 音乐歌单,前两首能够正常播放和切换。 发生一次 Cuefield AutoMix 交接后,后续歌曲可能卡在 0:00 且完全无声。 切换歌曲或歌单无法恢复,重启应用后暂时正常。 关闭 Cuefield AutoMix 并重启后,问题不再出现。
排查结果
QQ 音乐连接层正常:
- 登录态和 playback key 有效
- 连续三次
/api/qq/song/url请求均成功 - 第三首仍能取得有效无损 FLAC 地址
- 经
/api/audio代理读取第三首成功返回 HTTP 206 和有效音频数据
因此问题应位于前端 Web Audio / Cuefield 状态管理。
疑似原因
涉及文件:
public/js/modules/05-playback/08-audio-graph-controls.jspublic/js/modules/05-playback/18-cuefield-automix-integration.js
Cuefield 交接后,音频元素保留 __mineradioPreparedAudioGraph,
并被标记为 adopted。
下一次普通切歌调用 resetPlaybackAudioGraphForSourceSwitch() 时:
disconnectAudioGraphNodes()断开当前 source/analyser/gain 节点- 随后又从
__mineradioPreparedAudioGraph取回同一批已断开的节点 - 将
audioReady设置为true audioGraphHealthy()只检查对象引用是否存在,没有验证连接是否仍有效ensurePlaybackAudioGraph()因而不会重新构建音频图
最终表现为播放地址和 UI 状态正常,但音频输出链已经断开。
修复建议
普通切歌时不要重新采用已断开的 prepared graph。可以考虑:
- Cuefield handoff 完成并转移所有权后清理 prepared graph 标记;或
- 仅在真正切换到新的预加载 Audio 元素时执行 prepared graph adoption;或
- disconnect 后将
audioReady保持为 false,让initAudio()使用保留的 MediaElementSource 重新连接节点。
Source: XxHuberrr/Mineradio