这个项目能做什么
Viboplr 是一款插件优先的桌面音乐播放器,适用于 macOS 和 Windows,基于 Tauri 2、React 和 Rust 构建。它可以播放本地文件夹和远程音乐服务中的音频与视频,充当编排器:插件系统连接流媒体提供商、元数据服务、歌词数据库和图像源,而核心应用负责播放、音乐库管理和 UI。
音乐库管理
本地文件夹在后台扫描,并带有进度报告和实时文件监视。Subsonic/Navidrome 集合会同步到同一音乐库中,远程集合可通过插件连接。本地曲目可导出为自包含、可托管的音乐源(清单加文件),已发布的清单可作为集合订阅。元数据通过 lofty 标签库读取,并以文件名解析作为回退方案,搜索由 SQLite FTS5 驱动,覆盖标题、艺术家、专辑、流派和文件名,不区分重音和大小写。流派元数据以标签形式存储,并与曲目建立多对多关系。
播放
默认引擎是原生 mpv,基于捆绑的 libmpv 构建,提供原生解码、无缝播放和独占(位完美)音频输出,并在两个平台上支持原生视频渲染。通过系统 webview 的 HTML5 浏览器引擎作为自动回退。其他播放功能包括 10 段均衡器、ReplayGain 归一化、最高 10 秒的可配置交叉淡入淡出、转盘式速度控制、拖放队列管理、自动继续规则、基于曲目、艺术家或标签的无限电台、三态喜欢、紧凑的置顶迷你播放器,以及带视频故事板预览的波形进度条。
视图与皮肤
视图包括首页(电台轮播加货架)、带同步卡拉 OK 歌词和插件可视化器的全屏正在播放视图、艺术家、专辑、标签和曲目的详情页、带标签页的历史视图、支持 M3U8 和 .mixtape 导出/导入的播放列表,以及集合管理器。内置八款皮肤(Default、OLED Black、Arctic Light、Forest、Silver、Ocean Blue、Viboplr、Sunset),支持自定义 JSON 皮肤、社区画廊、19 个颜色令牌以及可选的按皮肤净化的 CSS。
插件与集成
JavaScript 插件是主要的扩展机制,提供流媒体、元数据、歌词、图像解析、下载、上下文菜单项、侧边栏视图、首页货架、正在播放信息项、可视化器、事件钩子、设置面板和计划任务。内置插件涵盖 Last.fm 记录播放和元数据、来自 LRCLIB 和 Lyrics.ovh 的歌词,以及来自 TheAudioDB、Deezer、iTunes 和 MusicBrainz 的封面图。画廊插件包括 Spotify、TIDAL、通过 yt-dlp 的 YouTube、Genius、qBittorrent 和可视化器。插件通过结构化数据模型渲染,而非原始 HTML 注入,并可在扩展视图中启用、禁用、重新排序和配置。
其他能力
类 Chrome 的隔离配置文件、首次运行引导向导、受管外部依赖(ffmpeg、yt-dlp)的检测、安装和自动更新、基于插件的实体封面图与标签合成图像、原生操作系统上下文菜单、用于问题报告的用户审核诊断包,以及带稳定和测试通道的内置自动更新。
技术与格式
技术栈为:Tauri 2 作为应用外壳,Rust 用于扫描、数据库、同步、播放引擎和 API 客户端,TypeScript/React/Vite 用于前端,libmpv 加 HTML5 回退用于播放,SQLite 通过 rusqlite 加 FTS5,lofty 用于标签,notify 用于文件监视,tauri-plugin-store v2 用于状态持久化。原生解码的音频格式包括 MP3、FLAC、AAC/M4A、ALAC、WAV、OPUS、WMA、OGG、AIFF、APE、WavPack、TTA、DSD 等;视频支持在两个平台上覆盖 MP4/M4V/MOV(H.264),在 Windows 上通过浏览器引擎支持 WebM。
开发与许可
开发需要 Node.js 18+ 和 Rust 1.70+ 以及平台特定的 Tauri 先决条件;README 记录了开发和生产的构建命令、代码检查和测试脚本,以及文档站点的 VPS 部署流程,包括 GitHub Actions 工作流。项目采用 GPL-3.0-or-later 许可,Rust 和 JavaScript 依赖采用宽松许可,libmpv、ffmpeg 和 yt-dlp 作为单独的外部组件使用。
评论
0 评分人数达到10人后显示
登录后参与讨论。