播放缓冲与弱网兜底——网络抖动时怎么不掐歌
两层离线机制
Symfonium 有两层独立的离线 / 弱网兜底:
- 缓存层:手动缓存 + 自动缓存规则,把你想要的内容提前存好,断网也能完整播放
- 缓冲层:播放时实时拉流 + 提前缓冲一小段,网络抖动时从缓冲继续,不让播放中断
缓存层解决"完全断网还想听"的问题,缓冲层解决"网络忽快忽慢不让卡"的问题。
缓冲怎么做
Symfonium 播放一首歌曲时:
- 开头先拉几秒,播放的同时继续预拉后面的内容
- 如果网络突然断掉或速度变慢,继续从缓冲里的内容播放
- 缓冲里的内容用光了、网络还没恢复 → 暂停并提示等待网络恢复
- 网络恢复后自动从断点继续拉流、继续播放
这一套默认开启,不需要用户手动管。
缓冲长度可以调
设置 → Offline → 缓冲与下载 → Rolling cache(滚动缓冲)。
可选项通常是 20 秒、60 秒、120 秒、240 秒。缓冲越长,越能扛网络抖动,但占用的临时存储也越多。
推荐:大多数场景用默认值(通常 60 秒)就够了。地铁或经常信号不好的路段可以调长到 120 秒。
和缓存的关系
缓冲和缓存互相独立、互不干扰:
- 正在播放但没点过"离线缓存"的曲目:依赖缓冲层兜底
- 已经缓存过的曲目:即使没网络,直接从缓存目录读,不走网络也不依赖缓冲
- 部分缓存(比如一首歌只缓存到一半):Symfonium 会优先用已缓存的部分,缓冲层继续拉剩余部分
为什么有时候还是会卡
即使缓冲和缓存都开了,还是可能卡顿的情况:
- 服务器端转码本身慢:Plex / Jellyfin / Navidrome 转码大文件时如果服务器 CPU 扛不住,Symfonium 这边等不到数据就会卡顿——这不是网络的锅
- 云盘 API 限速:Google Drive / OneDrive / Dropbox 免费版对 API 调用和流量都有限速,高峰时段可能拉不到数据
- Symfonium 自己处理链太重:DSD + 全部 DSP 效果叠加时,如果手机 CPU 扛不住解码和 DSP 计算,会出现"卡顿"表现——但这时候其实是解码 / DSP 慢,不是网络慢
判断卡在哪层
播放时出现卡顿,先看:
- Symfonium 播放界面的当前源显示(本地 / 缓存 / 流式)
- 如果是流式,看网络速率指示器有没有红色
- 如果速率正常还是卡,大概率是手机 CPU 扛不住 DSP / DSD,关掉几层效果试试
- 如果速率掉成 0,是网络断了或服务器挂了
建议策略
- 经常断网通勤:手动缓存 + 自动缓存规则(Wi-Fi 时触发),把常听的歌提前存好
- 基本在线:依赖缓冲层就行,默认设置够用
- 云盘源:云盘 API 限速比服务器源严重得多,尽量手动缓存后再听