月明星稀

iOS 版 SollinPlayer 已发布!

折腾了一个多月,终于把这个 iOS 音乐播放器搞出来了

最近终于把手上这个音乐播放器项目收尾了,从最开始的想法到现在能用,前前后后折腾了好几个月。趁着还有印象,写篇文章记录一下。

为什么要做这个?

说实话,App Store 上的音乐 App 已经够多了。但用了一圈下来,总觉得差点意思:

  • 想听网易云的歌?得装网易云
  • 想听 QQ 音乐?得再装一个
  • 家里 NAS 上存了一堆无损?还得再找个支持 WebDAV 的
  • 更别提有些歌这个平台有那个平台没有…

所以就想着,能不能做一个”全都要”的播放器?本地、在线、NAS 全支持,而且界面得好看。

先看效果

主界面

底部是常驻的迷你播放器,点一下就能展开完整播放界面。资料库这边可以按歌曲、专辑、艺术家来浏览,用起来和系统音乐 App 差不多的逻辑。

播放界面

播放界面花了不少心思。背景会自动取当前歌曲封面做模糊,看起来比纯黑舒服多了。左右滑动可以切换队列、封面、歌词三个页面。

歌词同步

IMG_3319.PNG

歌词这块支持 LRC 格式的逐行同步,当前播放的那句会高亮显示。双击某一句可以直接跳到那个时间点播放,还挺方便的。

有些歌词时间不太准,可以单独给每首歌设置偏移量,调一次下次就记住了。

在线搜索

IMG_3336.PNG

搜索这块接了网易云、QQ音乐、酷我几个平台的接口。搜到的歌可以直接播放,也可以批量选中加到歌单里。

音质可以选 128k、320k 或者无损,在设置里改就行。

WebDAV 播放

IMG_3325.PNG

这个是我自己用得最多的功能。家里群晖上存了不少无损,配置好 WebDAV 地址和账号密码就能直接播放。

播放的时候是边播边缓存的,不用等整首歌下载完才能听。而且音频的封面、歌手这些元数据都能正常识别。

主题切换

IMG_3322.PNG

内置了几套主题,除了经典的 iOS 风格,还有个新拟态风格和一个粉粉的可爱风格。粉粉主题还能把封面换成磁带的样式,挺有意思的。

播放界面的背景也可以自定义,除了封面模糊,还能选纯色、渐变,或者干脆自己传张图。

均衡器

加了个 10 段均衡器,内置了摇滚、流行、古典这些常用预设。喜欢折腾的也可以自己调。不过因为技术限制,均衡器只对本地文件有效,在线播放用不了。

歌单管理

歌单分本地和在线两种,本地歌单只能加本地歌,在线歌单只能加在线歌,这样播放的时候不会乱。

支持多选批量添加、滑动删除、批量删除这些操作,管理起来挺顺手的。

一些技术细节

整个项目是纯 SwiftUI 写的,最低支持 iOS 16。

播放核心用的 AVFoundation,均衡器那块用了 AVAudioEngine 做实时处理。WebDAV 流式播放踩了不少坑,最后用 AVURLAsset 配合自定义的资源加载器才搞定。

数据存储没用 Core Data,直接 UserDefaults 加 JSON 文件,简单够用。

还想做的

目前能想到的还有这些:

  • CarPlay 支持
  • Apple Watch App
  • 歌词翻译显示
  • 更多在线音乐源
  • iPad 适配

最后

这个项目断断续续做了挺久,中间重构过好几次。现在总算是能拿出来见人了,虽然还有不少可以改进的地方,但基本功能都齐了。


最后更新:2026年1月