这个项目能做什么

Music Player 是一个用 Rust 编写的可扩展音乐守护进程、服务端与客户端,以单一二进制文件分发,零运行时依赖。其设计秉承 MPD 与 Mopidy 的精神。 播放由 Rockbox 固件的音频引擎驱动(通过 rockbox-playback、rockbox-dsp 和 rockbox-metadata crate),支持 40 多种格式,包括 MP3、FLAC、Vorbis、Opus、MP4/AAC/ALAC、WavPack、APE、WMA 以及 chiptunes。DSP 链提供 EQ 预设、交叉淡入淡出和 ReplayGain,并具备无缝级缓冲与原生 HTTP 流媒体。 守护进程将音乐库索引到带 FTS5 全文搜索的 SQLite 中,并由数据库触发器自动保持同步。它通过 gRPC(tonic,启用 grpc-web)、GraphQL(含 GraphiQL)、WebSocket 事件以及网页 UI 暴露音乐库。同一个二进制文件既充当服务端又充当客户端——首次调用启动守护进程,后续调用则连接到它。 用户界面包括: - 终端 UI(ratatui),带 fzf 风格模糊查找器、受 neovim 启发的状态行和帮助浮层。 - 网页 UI(React 19、TanStack Query、Jotai、Tailwind v4),通过 GraphQL 订阅实现实时播放位置,响应式设计可适配至手机宽度。 - 可换肤的 Slint 桌面应用,内嵌守护进程,与网页 UI 共享相同的皮肤、字体和组件。 其他功能: - 浏览并流式播放来自 Subsonic/Navidrome 和 Jellyfin 服务器的内容。 - 投屏到 Chromecast 和 UPnP/DLNA 渲染器,或控制另一个 music-player 守护进程。 - 网络电台搜索与浏览(Radio Browser + TuneIn),带书签和全屏正在播放视图。 - 通过 AT Protocol 进行 Rocksky scrobbling。 - 通过 AT Protocol 同步电台书签和喜欢的歌曲,跨设备使用。 - 通过 Chromaprint 进行声学指纹识别,根据音频识别文件,并从 AcoustID/MusicBrainz 为标签不佳的文件命名。 - 由 DuckDB 驱动的收听分析,导入 Spotify、Last.fm 和 Rocksky 历史记录(跨来源去重),用于会话、跳过和品味漂移分析。 - 灵活的音频输出:系统设备(cpal)、stdout、FIFO、Unix socket 或 TCP socket。 安装可通过 curl 安装脚本、npm、Homebrew(包括桌面应用的 macOS cask)、APT 和 DNF 仓库、AUR、Nix flakes,以及适用于 macOS(arm64/x86_64)和 Linux(amd64/arm64)的预构建二进制文件。配置位于 ~/.config/music-player/settings.toml,每个键都可通过 MUSIC_PLAYER_* 环境变量覆盖。