开始之前

在一切开始之前,我希望各位能够对 Project Anni 中的各个部分有一个大致的印象。

Project Anni 包括两个部分:对音乐资源的组织和对音频资源的分发。

前者包含整轨切分、元信息编辑、元数据整理等。Anni 提供了切分整轨、检查音频的工具,并提出了元数据仓库的概念将音频元数据和音频文件分离,便于格式化地整理音乐的元数据。

后者包括一套完整的服务端、客户端应用。客户端用于实际的播放,服务端则用于提供客户端所需的音频、封面等资源。我们曾经设想过将分发的形式以 P2P 的方式呈现,但最终还是选择了传统的 C/S 架构,将 Anni 定位为一个便于 Self host 的项目。Anni 服务端的理想部署环境是 NAS,但同时也支持基于 Google DriveVPS 部署方式。

目前,前者的实现已较为完善,但在数据格式及工具的易用性上仍有待优化,暂时没有完全稳定;后者则是目前开发的重点,待敲定的包括 Anniv 的协议细节,各服务端和客户端的实现也正在进行中。

讲在前面

Project Anni 的出现是为了填补「不满足我们需求」的空白,而不是为了纯泛用性而生。

和每一个定制项目一样,Anni 并不一定适合每一个人,我们也不奢求所有用户和我们的需求都完全一致。

同时,作为我用 Rust 编写的第一个较大型项目,这对我而言也是一个 Learn to Rust 的过程,因此代码质量一定有所不足,欢迎各位的 Pull Request

我只希望,在填坑 Anni 的过程中,不要遗忘了初心