Feishin:一个把 Navidrome、Jellyfin 和 Subsonic 统一起来的现代音乐播放器
现代自托管音乐播放器。 Feishin 支持任何实现 Navidrome、Jellyfin 或 OpenSubsonic 兼容 API 的音乐服务器。
秒懂
- 它是什么?
- Feishin 是 Sonixd 的重写版,用 Electron 和 TypeScript 构建,为自托管音乐服务器提供桌面端和 Web 端播放界面。它支持 Navidrome、Jellyfin 和 OpenSubsonic 兼容 API,但 MPV 后端、歌词抓取和智能播放列表等功能在不同平台上有明显取舍。
- 适合谁用?
- Feishin 适合已经运行 Navidrome、Jellyfin 或 Subsonic 兼容服务器、并且想要一个比 Web 界面更完整、支持 MPV 播放和歌词同步的桌面客户端的用户。它不适合那些需要离线播放、移动端原生体验或完整音频格式支持的人,因为 Web 后端不支持 MPV,桌面端需要额外安装 MPV 二进制,而且 macOS 和 Linux 各有额外配置步骤。
- 能商用吗?
- 可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决的是播放器碎片化问题
自托管音乐服务器有很多选择,但每个服务器自带的 Web 界面往往功能有限,而且体验参差不齐。Feishin 的目标是提供一个统一的、现代化的播放器前端,可以连接 Navidrome、Jellyfin 或任何实现 OpenSubsonic API 的服务器。它不是服务器本身,而是一个客户端,把播放、歌词、智能播放列表这些功能集中到一个界面里。这个定位和 Sonixd 一脉相承,Feishin 就是 Sonixd 的重写版。对于同时运行多个音乐服务器、或者想摆脱服务器自带界面的用户来说,Feishin 提供了一个一致的入口。
双后端设计:MPV 和 Web 播放器
Feishin 的核心机制是双播放后端。桌面客户端同时支持 MPV 和 Web 播放器,而 Web 版本和 Docker 版本只支持 Web 播放器。MPV 后端意味着音频解码和输出由外部 MPV 进程处理,这通常能带来更广泛的格式支持和更好的音频输出控制。Web 后端则完全运行在浏览器或 Electron 的渲染进程中,牺牲一些能力换取部署简单。README 明确说桌面客户端是推荐方式,因为它支持两个后端,并且内置了歌词抓取功能。这个设计意味着如果你只需要一个轻量 Web 播放器,Feishin 的 Web 版本能用,但功能会被砍掉一半。
部署方式:桌面、Docker 和 Web 的差异
获取 Feishin 的方式有三种,复杂度递增。最简单的是直接下载桌面客户端,但 macOS 12 以上需要手动移除 quarantine 属性,Linux 可以用 Flathub 或 AppImage 安装脚本。Docker 方式适合服务器部署,运行 `docker run --name feishin -p 9180:9180 ghcr.io/jeffvli/feishin:latest` 就能启动,端口 9180 是默认的。Web 版本直接访问 https://feishin.vercel.app,但只支持 Web 播放器。Docker 和 Web 版本都支持环境变量配置,比如 `SERVER_NAME`、`SERVER_TYPE`、`SERVER_URL`,这些可以预先定义服务器连接,甚至用 `SERVER_LOCK=true` 锁定这些设置,只允许用户输入用户名和密码。这种配置方式适合管理员部署后分发给用户,但要注意 `SERVER_LOCK` 只有在三个服务器变量都设置时才有效。
配置细节:MPV 路径和密码存储
第一次启动桌面版时,Feishin 会要求指定 MPV 二进制文件的路径。如果没有安装 MPV,需要先安装。重启后要添加服务器,输入完整 URL,包括协议和端口,比如 `https://navidrome.my-server.com` 或 `http://192.168.0.1:4533`。对于 Navidrome,README 建议勾选“保存密码”,并在 Navidrome 配置中把 `SessionTimeout` 调大,比如 72 小时,否则会话可能频繁过期。Linux 用户要注意密码存储默认使用 libsecret,如果需要用 kwallet,必须在 Settings > Window > Passwords/secret store 里显式切换。这个细节很容易被忽略,但会影响登录体验。
环境变量带来的部署灵活性
Feishin 支持通过环境变量覆盖应用设置,变量前缀是 `FS_`,例如 `FS_GENERAL_THEME=defaultDark` 可以设置主题,`FS_GENERAL_LANGUAGE` 可以设置语言。这些变量只在首次运行时生效,适合 Docker 或 Web 部署时统一配置。另外还有几个实用变量:`REMOTE_URL` 用于服务器内部和外部 URL 不一致的情况,比如 Navidrome 的 `ShareURL`;`PUBLIC_PATH` 用于把 Feishin 托管在子路径下,比如 `/feishin`;`ANALYTICS_DISABLED=true` 可以关闭 Umami 分析追踪。这些选项让 Feishin 可以嵌入到现有的反向代理或子目录结构中,而不是强制占用根路径。
局限性:Web 后端的短板和平台摩擦
Feishin 最大的限制是 Web 版本和 Docker 版本不支持 MPV 后端。这意味着如果你用 Docker 部署,只能依赖 Web 播放器,音频格式支持和性能可能不如桌面版。另一个问题是 macOS 的媒体键需要用户授予“可信赖的辅助功能客户端”权限,而且必须重启应用才能生效。Linux 的 Wayland 原生模式是实验性的,README 明确说这不是官方支持。歌词抓取功能只在桌面客户端内置,Web 版本没有提到。这些平台差异意味着你不能假设所有部署方式都提供相同体验。
与 Sonixd 的关系和替代方案
Feishin 是 Sonixd 的重写版,这意味着它继承了 Sonixd 的定位,但代码和 UI 是重做的。对于已经熟悉 Sonixd 的用户,Feishin 是自然升级路径。替代方案方面,如果你只需要一个轻量 Web 播放器,Navidrome 自带的 Web 界面就够用,而且没有额外部署成本;如果你需要更专业的音频播放,可以考虑直接使用 MPV 配合命令行,但那样会失去图形界面和服务器集成。Feishin 的差异化在于它把多个服务器 API 统一到一个界面,并且提供智能播放列表编辑器,这个功能在 Navidrome 上特别有用。但如果你只用 Jellyfin,Jellyfin 自己的客户端可能更成熟。
维护和许可证注意事项
Feishin 采用 GPL-3.0 许可证,这意味着如果你修改并分发它,必须开源你的修改版本。对于个人使用没有影响,但如果你计划集成到商业产品,需要留意许可证义务。项目当前活跃,最近一次提交在 2026 年 7 月,v1.15.1 是当前版本。维护模式看起来是持续迭代,而不是停滞状态。升级成本方面,桌面客户端需要手动下载新版本,Docker 用户可以通过 `docker pull ghcr.io/jeffvli/feishin:latest` 更新,但要注意环境变量和配置在升级后是否保持兼容,尤其是 `SERVER_LOCK` 这类锁定设置。
编辑结论
Feishin 适合已经运行 Navidrome、Jellyfin 或 Subsonic 兼容服务器、并且想要一个比 Web 界面更完整、支持 MPV 播放和歌词同步的桌面客户端的用户。它不适合那些需要离线播放、移动端原生体验或完整音频格式支持的人,因为 Web 后端不支持 MPV,桌面端需要额外安装 MPV 二进制,而且 macOS 和 Linux 各有额外配置步骤。在采用之前,先确认你的服务器类型是否被支持,特别是 OpenSubsonic 的认证方式,以及你是否接受 GPL-3.0 许可证对分发和修改的限制。如果你主要使用 Navidrome 并依赖智能播放列表编辑,Feishin 的集成是直接的,但如果你只需要一个简单的 Web 播放器,官方 Web 界面可能更省事。
社区笔记