Spotube 的播放队列——v5.1.0 新增多选批量操作
队列 vs 播放列表
Spotube 里有两个容易混淆的概念:
| 概念 | 类比 | 特点 |
|---|---|---|
| 队列(Queue) | 播放器的"即时播放列表" | 临时、动态、按播放顺序自动增长和收缩,可以随时清空,不会持久保存 |
| 播放列表(Playlist) | Spotify/YouTube 的歌单 | 持久保存、有元信息(封面、描述)、可以搜索过滤、可以在不同会话间恢复 |
播放列表里选一首播放时,Spotube 会自动把这个播放列表里的所有曲目加到队列后面。队列是"这次播放会话的临时状态"。
队列基础操作
添加到队列
- 播放列表 → 单曲右侧三点 → "添加到队列"
- 搜索结果页 → 单曲卡片 → 右键/长按 → "添加到队列"
- 连续点击多首 → 批量加入
- 播放完整播放列表时自动全部入队
移除 / 重排
- 队列页左滑(移动端)或右键(桌面端)→ 移除
- 桌面端可以拖拽重排(Qt/Hover effect)
- 按 Del 键移除当前播放的曲目
清空队列
队列页底部有"清空"按钮。清空后立即停止当前播放(因为没有下一首了)。
v5.1.0 新增:多选和批量操作
v5.1.0 引入了 Issue #2839 实现的队列多选系统——之前只能一条一条删,现在可以:
- 长按(移动)或 Ctrl+点击(桌面) 进入多选模式
- 勾选多首
- 底部出现批量操作按钮:
- 批量移除
- 批量标记收藏
- 批量设为"稍后播放"(移动到队列末尾)
- 批量设为"立即播放"(插到当前位置之后)
对长队列(比如导入了一张 30 首专辑)来说,批量操作大幅提升了效率。
队列与播放器的交互
队列和 Spotube 的播放内核(MPV)实时同步:
- 队列里的下一首会在当前曲目的最后 3 秒自动预缓冲(MPV 自己做的)
- 播放结束自动切下一首——不需要 Spotube 发送任何指令,MPV 内部已经准备好了
- 上一首(
player.backward())也是队列里的上一首,Spotube 不做额外判断
循环模式
Spotube 支持三种循环:
- 不循环:播完队列最后一首停止
- 循环队列:播完最后一首回到第一首
- 循环单曲:当前曲目无限循环
三种模式都走 MPV 的本地配置,Spotube 只是调 MPV 的 loop 参数。
队列的临时特性
⚠️ 队列不会持久保存——关掉 Spotube 再打开,队列会空。只有播放列表会被保存。
如果你想保留某次播放会话的队列:
- 队列页 → 全选 → 批量
- 选 "保存为新播放列表"
- 给它起个名字,之后就能在播放列表里恢复了
队列异常排查
加歌后不播放
- 检查音频源插件是否正常(可能插件挂了,Spotube 拿不到音频流)
- 切换到另一个音频源试试
- 重启 Spotube,看看队列是否能恢复
下一首提前切
这是 MPV 的预缓冲机制导致的正常现象——MPV 会在当前曲目结束前几秒就播放下一首的开头,无缝衔接。如果觉得太早,可以在 Spotube 设置里调整 "crossfade" 参数(默认 0ms,设为 3000~5000ms 会有柔和过渡)。