C++ · 项目报告

yappologistic/Spun

A CD-shaped music player for Linux, with local playback and Cider integration.

已完成 打开 GitHub
Y
340星标
13Fork
16Issue
NOASSERTION许可证

分析结果

项目分析

Spun 是一个面向 Linux 桌面的拟物化音乐播放器,使用 C++/Qt 6 构建。它支持本地音乐播放、匿名浏览 YouTube Music、连接 Jellyfin/Navidrome/Subsonic,以及通过 Cider 控制 Apple Music。核心特色是把专辑封面渲染到旋转的 CD、黑胶、磁带或 TP-7 风格播放器上,并提供可选 3D 视图、歌词、队列、Mini 模式和 TX-6 风格混音器。项目源码可见,但采用 PolyForm Noncommercial 1.0.0 非商业许可证,不是 OSI 认可的开源许可证。

适用领域 Linux 桌面应用 / 音乐播放器 / 本地音频播放 / 流媒体音乐集成 / Qt/QML/Quick 3D / C++ 桌面 GUI / 拟物化 UI / 多媒体应用
配置难度 中高。对于 Arch、CachyOS、Fedora 或 NixOS 用户,按 README 构建相对直接;但对于 Ubuntu LTS 或企业环境,需要自行处理新版 Qt 6.8+、TagLib 2.0+、Qt Quick 3D、YouTube 可选运行时和 Cider API 配置,整体安装与调试复杂度较高。对于开发者而言,需要熟悉 C++20、CMake、Qt/QML、Qt Multimedia 和 Linux 桌面环境。
商业价值 商业价值受许可证限制较大。它更适合作为个人用户音乐播放器、Linux 桌面美学项目、Qt/QML 多媒体 UI 参考案例,或用于非商业社区发行版体验增强。由于采用非商业许可证,企业不能简单将其集成到商业产品或商业发行中。若从产品角度看,其拟物化 3D 音乐播放器体验具有差异化和展示价值,但要商业化需要先解决授权、打包分发、跨发行版兼容、流媒体合规性和长期维护问题。
01

技术亮点

  • 界面设计非常有辨识度,提供 CD、黑胶、磁带、TP-7 等多种拟物化播放器视图
  • 支持 2D 和可选 3D 模式,包含材质、光照、旋转、唱针、磁带轮等细节动画
  • 功能覆盖本地音乐、YouTube Music、Cider/Apple Music、Jellyfin、Navidrome/Subsonic 等多种来源
  • 本地音乐不会被复制或修改,导入时可跳过重复歌曲并支持取消
  • 支持歌词、专辑详情、队列、媒体键、Mini 模式和进度拖动
  • Vinyl 模式支持按专辑轨道模拟唱片 groove band,并通过唱针选择歌曲和位置
  • TP-7 视图中提供 TX-6 风格混音器,可对额外本地音轨进行音量、EQ、延迟和压缩处理
  • YouTube Music 集成不使用 Google 登录、浏览器 cookies 或账号同步,更偏向本地匿名体验
  • Nix flake 支持 x86_64 和 aarch64 Linux
  • 对 Qt/C++ 多媒体和高质量 QML UI 开发有参考价值
02

目标用户

  • 使用 Linux 桌面并偏好高颜值音乐播放器的个人用户
  • 喜欢 CD、黑胶、磁带等复古拟物化播放界面的音乐爱好者
  • 需要本地音乐、YouTube Music、Jellyfin、Navidrome/Subsonic 或 Cider/Apple Music 集成的用户
  • Qt/C++ 桌面应用开发者和 UI/UX 设计参考者
  • 使用 Arch、CachyOS、Fedora、NixOS 等较新 Linux 发行版的用户
03

配置要求

  • 需要 Linux 环境,项目主要在 CachyOS + Hyprland + Noctalia 环境开发,其他桌面环境的集成效果可能不同
  • 需要 C++20 编译器
  • 需要 CMake 3.22+
  • 需要 Ninja、pkg-config、Python 3
  • 需要 Qt 6.8+,包含 Quick Controls、Multimedia、SVG 和开发文件
  • Qt Quick 3D 为可选依赖,用于 3D 播放器视图
  • 需要 TagLib 2.0+ 开发文件
  • Ubuntu 22.04/24.04 默认仓库 Qt 和 TagLib 版本不足,通常需要手动安装新版 Qt SDK 并自行构建 TagLib 2.x
  • Cider 集成需要本机运行 Cider,并启用 Cider local API;默认连接端口为 10767
  • Apple Music 播放依赖 Cider 的 Apple Music 登录和访问权限
  • YouTube Music 功能依赖隔离运行时 runtime/youtube,以及 ytmusicapi、yt-dlp 等第三方工具
  • Nix 构建因非商业许可证需要设置 NIXPKGS_ALLOW_UNFREE=1
04

适用场景

  • 播放本地音乐文件,并通过拖拽文件或文件夹导入播放队列
  • 以 CD、黑胶、磁带或 TP-7 录音机风格展示专辑封面和播放动画
  • 通过 Cider 控制 Apple Music 播放、队列和媒体控制
  • 匿名搜索和播放 YouTube Music 内容,无需 Google 登录
  • 连接 Jellyfin、Navidrome 或 Subsonic 音乐库进行播放
  • 在 Mini 模式下作为桌面小型音乐控制器使用
  • 查看歌词、专辑详情、队列和完整封面
  • 使用 TP-7/TX-6 风格界面进行简单多轨混音和 EQ 调整
  • 研究 Qt 6、Qt Quick、Qt Quick 3D、多媒体播放和拟物化交互设计
05

部署与配置

  • 安装构建依赖。Arch/CachyOS 可执行:sudo pacman -S --needed base-devel git cmake ninja python qt6-base qt6-declarative qt6-multimedia qt6-svg qt6-wayland taglib qt6-quick3d
  • Fedora 可执行:sudo dnf install gcc-c++ git cmake ninja-build pkgconf-pkg-config python3 qt6-qtbase-devel qt6-qtdeclarative-devel qt6-qtmultimedia-devel qt6-qtsvg-devel qt6-qtwayland taglib-devel qt6-qtquick3d-devel
  • 克隆仓库:git clone https://github.com/yappologistic/Spun.git
  • 进入目录:cd Spun
  • 构建项目:./scripts/build.sh -DBUILD_TESTING=OFF
  • 安装启动器:./scripts/install-launcher.sh
  • 从应用菜单打开 Spun,或在项目目录运行:./scripts/run.sh
  • 如果不需要 3D 功能,可构建时增加参数:-DSPUN_ENABLE_3D=OFF
  • 如需 YouTube Music 支持,需安装 Python 3 venv/pip 和 Node.js,然后执行:./scripts/setup-youtube.sh
  • Nix/NixOS 用户可在启用 flakes 后执行:NIXPKGS_ALLOW_UNFREE=1 nix run --impure .
06

风险与注意事项

  • 许可证为 PolyForm Noncommercial 1.0.0,限制商业用途,不适合直接用于商业产品或企业分发场景
  • 项目没有打包安装器,普通用户需要从源码构建,安装门槛较高
  • 依赖 Qt 6.8+ 和 TagLib 2.0+,在 Ubuntu LTS 等发行版上配置较麻烦
  • YouTube Music 集成为非官方方案,依赖 ytmusicapi 和 yt-dlp,可能因 YouTube 接口变化而失效
  • Cider/Apple Music 功能依赖 Cider 本身、其本地 API、权限配置和版本兼容性
  • 3D 视图可能增加 GPU/显卡驱动和 Qt Quick 3D 兼容性问题
  • 桌面集成主要在特定环境开发,其他发行版、Wayland/X11、桌面环境下可能存在差异
  • 项目星标约 340、fork 约 13,社区规模尚小,长期维护和问题响应存在不确定性
  • Nix 包因许可证被视为 unfree,需要显式允许非自由软件
  • README 明确说明源码可见但不是 OSI 开源,对二次开发、再分发和商业使用需要仔细审查许可证

历史记录

热榜历史快照

2026-09-14 第29名 新收录 · github_search