字节笔记本
2026年3月22日
Spotube - 开源跨平台 Spotify 客户端
本文介绍 Spotube,一款跨平台的开源音乐流媒体客户端,通过插件系统支持多种音乐源,让用户在不使用 Spotify Premium 的情况下也能享受高品质的音乐体验。
项目简介
Spotube 是一个开源的跨平台音乐流媒体应用,它的核心理念是让用户在享受 Spotify 曲库和播放列表的同时,通过第三方音频源(如 YouTube、Piped、Invidious 等)来播放音乐,从而绕过 Spotify 的广告限制。这意味着用户无需订阅 Spotify Premium,也能获得无广告的音乐收听体验。
Spotube 不是一个基于 Electron 的应用,而是使用 Flutter 框架构建的原生应用,因此在性能、内存占用和用户体验方面都优于传统的 Electron 方案。项目支持 Windows、macOS、Linux、Android 和 iOS 全平台,并提供丰富的插件生态系统,允许用户自定义音乐源。
该项目采用 BSD-4-Clause 许可证发布,拥有活跃的社区,每 3-4 个月发布一个新版本。对于既想使用 Spotify 的曲库推荐,又不想付费订阅 Premium 的用户来说,Spotube 是一个极具吸引力的替代方案。
核心特性
Spotube 的功能丰富且实用,以下按类别进行详细介绍。
音乐播放
- 无广告收听:通过第三方音频源播放音乐,不经过 Spotify 的广告系统。
- 原生性能:基于 Flutter 构建,非 Electron 应用,启动快、内存占用低。
- 本地播放控制:播放控制完全在本地执行,不依赖服务器端控制。
- 时间同步歌词:无论插件是否支持,都提供时间同步的歌词显示。
- 后台播放:支持后台播放和锁屏控制。
- 跨设备同步:支持与 Spotify 账户同步播放列表、收藏和推荐内容。
插件系统
- 插件驱动架构:通过插件支持各种音乐平台和自定义音乐源。
- 社区插件:社区已为流行平台提供了现成的插件。
- 自定义插件:用户可以创建自己的插件来接入任何音乐服务。
- 可扩展性:插件系统设计灵活,支持接入新的音乐元数据、播放列表和音频源。
隐私与安全
- 零遥测:不收集任何用户数据、遥测信息或诊断信息。
- 无用户追踪:完全不追踪用户行为。
- 隐私友好:使用 Piped、Invidious 等注重隐私的前端作为音频源。
下载与管理
- 免费下载:支持自由下载曲目,下载的音乐文件自带完整的元数据标签。
- 离线收听:下载的音乐可以离线播放。
- 元数据标签:下载的音频文件自动嵌入艺术家、专辑、封面等元数据信息。
平台支持
- 全平台覆盖:支持 Windows、macOS、Linux、Android 和 iOS。
- 轻量体积:安装包体积小,资源占用少。
- 原生体验:各平台均提供原生的 UI 体验,非网页套壳。
- 系统托盘:桌面端支持系统托盘图标和快捷操作。
- Discord RPC:桌面端支持在 Discord 中显示当前播放状态。
其他功能
- SponsorBlock 集成:自动跳过 YouTube 音乐中的赞助片段。
- LastFM 集成:支持将播放记录同步到 LastFM。
- ListenBrainz 集成:支持将播放记录提交到 ListenBrainz。
- 主页小组件:Android 和 iOS 支持桌面小组件显示当前播放。
- 窗口小工具:桌面端支持可拖拽的迷你播放器。
技术栈
Spotube 的技术架构现代且高效,主要由以下技术构成:
- 框架:使用 Flutter 构建,实现真正的跨平台原生应用。
- 编程语言:Dart。
- 音频播放:集成 MPV 播放器作为音频后端,media_kit 提供跨平台音频播放能力。
- 数据库:使用 SQLite(通过 drift 库)进行本地数据存储。
- 网络请求:使用 Dio HTTP 客户端进行网络通信。
- 状态管理:使用 Riverpod 进行响应式状态管理。
- 路由:使用 AutoRoute 进行声明式路由管理。
- YouTube 数据提取:使用 YouTubeExplodeDart 和 NewPipeExtractor 从 YouTube 获取音频数据。
- 音频下载:集成 yt-dlp 和 Piped/Invidious 作为音频源。
- 歌词服务:使用 LRCLib 提供时间同步歌词。
- 音乐元数据:集成 MusicBrainz 获取音乐元数据信息。
- UI 组件:使用 Shadcn Flutter 组件库,Fluent UI 图标和 Feather 图标。
- 构建工具:各平台均有对应的原生构建工具链。
整个项目架构清晰,模块化程度高,插件系统设计灵活,便于社区贡献和功能扩展。
安装指南
Spotube 提供了丰富的安装方式,覆盖所有主流平台。
Windows
- 直接下载:从 GitHub Releases 页面下载安装包
- Chocolatey:
choco install spotube - Scoop:
scoop bucket add extras && scoop install spotube - WinGet:
winget install --id KRTirtho.Spotube
macOS
- 直接下载:从 GitHub Releases 页面下载 DMG 文件
- Homebrew:
bash
brew tap krtirtho/apps brew install --cask spotube
Linux
- Flatpak(推荐):
bash
flatpak install com.github.KRTirtho.Spotube - Debian/Ubuntu:下载 .deb 文件后运行
sudo apt install ./Spotube-linux-x86_64.deb - Arch/Manjaro:
bash
# 使用 pamac sudo pamac install spotube-bin # 或使用 yay yay -Sy spotube-bin - Fedora:
sudo dnf install ./Spotube-linux-x86_64.rpm - OpenSUSE:
sudo zypper in ./Spotube-linux-x86_64.rpm - Tarball:下载通用压缩包解压即可运行
Android
- APK 直接下载:从 GitHub Releases 页面下载
- F-Droid:从 F-Droid 应用商店下载
iOS
- IPA 文件:下载 IPA 文件后,需要使用 AltStore 或类似工具进行侧载安装
快速开始
步骤一:安装应用
根据你的操作系统选择合适的安装方式,安装 Spotube 应用。
步骤二:登录 Spotify 账户
首次打开 Spotube 时,需要使用你的 Spotify 账户登录。Spotube 使用 Spotify 的 OAuth 认证,只获取你的播放列表和偏好信息,不会获取付费信息。你可以使用免费的 Spotify 账户。
步骤三:选择音频源
在设置中选择音频源插件。默认提供多种选项:
- Piped:注重隐私的 YouTube 前端
- Invidious:开源的 YouTube 前端
- YouTube:直接从 YouTube 获取音频
- JioSaavn:印度音乐流媒体平台(通过社区插件)
步骤四:开始收听
登录并配置完成后,你可以:
- 浏览 Spotify 的推荐内容
- 访问你的播放列表和收藏
- 搜索歌曲、专辑和艺术家
- 下载喜欢的歌曲到本地
步骤五:自定义设置
根据个人偏好进行设置:
- 选择音频质量
- 配置歌词显示
- 启用 LastFM 或 ListenBrainz 同步
- 安装额外的插件
使用示例
场景一:无广告的 Spotify 体验
你有一个免费的 Spotify 账户,但厌倦了每次听歌时都会被广告打断。安装 Spotube 后,使用你的免费 Spotify 账户登录,选择 YouTube 作为音频源。现在你可以享受完整的 Spotify 曲库和推荐算法,同时通过 YouTube 播放音频,彻底告别广告。
场景二:离线音乐库
通勤路上没有稳定的网络连接?在 Wi-Fi 环境下,使用 Spotube 将喜欢的歌曲和播放列表下载到本地。下载的音乐文件带有完整的元数据标签,即使在没有网络的情况下也能畅享音乐。你甚至可以将下载的文件导入到其他音乐播放器中使用。
场景三:隐私优先的音乐收听
你注重隐私,不想让 Spotify 跟踪你的每一次播放。Spotube 本身不收集任何遥测数据,配合 Piped 或 Invidious 作为音频源,你的音乐收听活动不会被记录在任何第三方服务器上。同时,LastFM 和 ListenBrainz 的同步是可选的,完全由你自己控制。
场景四:多平台音乐同步
在办公室的电脑上创建了一个新播放列表,回家后打开手机上的 Spotube,播放列表已经自动同步。在地铁上用手机下载了几首新歌,回到家用电脑收听时,这些歌曲也在那里。Spotube 与 Spotify 的同步功能确保你的音乐体验在各设备间无缝衔接。
项目链接
- 项目地址:https://github.com/KRTirtho/spotube
- 官网:https://spotube.krtirtho.dev/
- 下载页面:GitHub Releases 页面
- Discord 社区:通过项目 GitHub 页面加入
- 许可证:BSD-4-Clause
- Patreon 赞助:https://patreon.com/KRTirtho