写在前面

我原本是Apple music+酷狗音乐的双持用户,同时开着两个流媒体平台的会员。其实主要是馋Apple music这边的音质与简约的听歌体验,再加上我手上Apple设备也比较常用,Apple music那无与伦比的歌词特效简直是我音乐流媒体平台的白月光。

但由于众所周知的原因,Apple music的曲库及其匮乏,国区有的小众VOCALOID歌曲连歌词都没有甚至根本查无此歌。 。 。到最后就变成了如果没有的歌我必须去酷狗音乐找了下载手动传到iCloud 音乐资料库上,而Apple又会对你传上去的无损音乐进行自动转码转为有损的AAC格式……

让我下定决心自建音乐库发生在去年12月,在去看miku with you的演唱会发现候场的3首歌曲酷狗根本没有而是在网易云,或者是网易云没有而在酷狗……鼻子一歪哭了,等到回到宿舍立刻决定自建音乐库来逃离这些流媒体破碎的体验……

选择音乐库程序

我们假设你现在已经有了自己收藏的歌曲,什么?你说你只是做好了逃离国内APP的准备但是歌全在上面,那你自己开个会员下下来啊

不过,在做出决定之前,我还是强烈建议阅读这个系列的第二篇文章来按照标准整理你的音乐文件来完善专辑、艺人等信息并将其结构化,这样不仅可以使你的音乐库更加美观并方便的尝试切换不同平台获得最优的体验,同时之后在使用Last.fm记录自己的听歌信息时也可以更好的匹配到正确的专辑与艺人信息。

Jellyfin/emby/Navidrome 选哪个?

这里借用音流文档音乐服务 栏块介绍这几个平台的差异:

Subsonic

Navidrome

Audio Station

Emby

Jellyfin

Plex

内嵌歌词1

-

外置歌词

-

在线歌词

-

歌手简介

-

歌手头像

-

*2

*3

多艺术家

-

-

回放增益

-

评分功能4

收藏功能5

文件夹

-

删除接口

-

  1. 自 1.2.8 起,音流开启边听边存后可读取音乐文件内嵌歌词。

  2. Navidrome 若要显示歌手头像,需要配置 Spotify API(国内环境即使配置了也很难有作用),或在歌手文件夹下放一张名为 artist.* 的图片。Artwork location resolution

  3. Audio Station 的歌手头像用的是音乐库中的专辑图片。

  4. Audio Station 只能对歌曲评分。

  5. Audio Station 和 Plex 没有收藏功能,音流会将评级为 🌟🌟🌟🌟🌟 的歌曲视为收藏的歌曲

群晖的Audio Station会自动将/music下的文件当作音乐且直接从套件中心安装就可以不需要我教,而Plex我没有用过而且不是很符合我的审美,所以这里着重介绍Jellyfin/emby/Navidrome这三个平台提供的音乐服务与对应的手机端APP。

部署

强烈建议使用docker容器类平台来搭建和管理这些自建服务(这是NAS党基本技能好不好!),当然,如果你是群晖用户,我不是矿神套件源已经提供了这些音乐服务的套件,一键安装就可以做到开箱即用

下面的部署方法全部依赖于docker compose文件,什么?你不知道docker compose是啥?自己带上自己NAS系统的名字去搜docker compose怎么部署

群晖小白系列(二十八)在群晖上用多种方式运行Docker容器 - 知乎

全网最详细介绍飞牛NAS(Fn OS)之Docker篇+部署兰空图床(lsky-pro) - 知乎

jellyfin

jellyfin建议使用nyanmisaka/jellyfin 的镜像,对各类设备的驱动支持也更加友好

首先创建一个文件夹并在这个文件夹下创建cacheconfig用于存储jellyfin的数据

mkdir jellyfin && cd jellyfin && mkdir config cache

在刚刚创建的jellyfin文件夹下创建一个docker-compose.yaml文件

services:
  jellyfin:
    image: nyanmisaka/jellyfin:latest
    container_name: jellyfin
    ports:
      - 8096:8096 #选一个没有占用的端口
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /volume1/music:/media/music:rw #前面的/volume1/music改成你自己音乐文件夹的所在位置
    restart: unless-stopped
    devices:
      - /dev/dri:/dev/dri

保存文件后拉起即可

docker compose up -d

emby

同样的,首先创建一个emby文件夹并在这个文件夹下创建config 存储emby的数据

mkdir emby && cd emby && mkdir config

emby并不是开源的,部分高级功能(如转码、显示歌词等)需要emby premiere来解锁,当然如果你只是想(永久)体验一下可以把下面的image的emby/embyserver:latest 镜像换成xinjiawei1/emby_unlockd:latest 来破解emby premiere

services:  
  emby:
    image: emby/embyserver:latest
    container_name: emby
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
    volumes:
      - ./config:/config
      - /volume1/music:/music #前面的/volume1/music改成你自己音乐文件夹的所在位置
    ports:
      - 8096:8096  #选一个没有占用的端口
    devices:
      - /dev/dri:/dev/dri
    restart: unless-stopped

保存文件后拉起即可

docker compose up -d

依旧创建一个Navidrome文件夹并在这个文件夹下创建data 文件夹存储Navidrome的数据

mkdir navidrome && cd navidrome && mkdir data

没啥好说的,创建yaml文件

services:
  navidrome:
    image: deluan/navidrome:latest
    user: 1000:1000 # should be owner of volumes
    ports:
      - 4533:4533 #选一个没有占用的端口
    restart: unless-stopped
    volumes:
      - "./data:/data"
      - "/volume1/music:/music:ro" #前面的/volume1/music改成你自己音乐文件夹的所在位置

保存文件后拉起即可

初始化音乐服务

Jellyfin/emby

事实上,Jellyfin是在emby转向闭源后的开源解决方案,所以这两除了体验互有利弊外管理媒体的方式都几乎相同……(比如,都要求创建不同的资料库来区分管理媒体)因为这两更加偏向媒体中心的形式

访问8096端口(或如果修改了端口访问对应的端口)进入Jellyfin/emby,在设置了首选显示语言、创建管理用户以后emby或者Jellyfin会让你创建一个资料库,先跳过,稍后去控制台设置

使用刚刚创建的管理员账户登陆,Jellyfin点击左上角的菜单图标——>控制台——>服务器分类栏下的媒体库折叠菜单——>展开后点击媒体库,点按添加媒体库;emby点击右上角的设置图标——>EmbyServer折叠菜单下的媒体库 ,点按新增媒体库 ,然后你就会发现,竟能如此相像

内容类型 设置为音乐 ,点击新增文件夹 并选择/music文件夹(或你映射的路径)

需要注意的是,emby允许你三选一以下的

  • 将音乐散落在文件夹内(会读取音频文件的tag来给音乐分类)

  • 按照艺人文件夹/专辑文件夹的方式分类存放歌曲文件

  • 按照专辑文件夹分类的方式存放歌曲文件

如果你的音乐文件十分散乱或者三种类型混排,建议使用Jellyfin(Jellyfin会自动识别,参见Music | Jellyfin)或者阅读这个系列的第二篇文章来按照专辑文件夹分类的方式整理一下歌曲文件。

接下来的关于自动刮削设置,如果你确保你的音频文件存在完整的ID3或FLAC tag(参见这个系列的第二篇文章(臭博主就会给自己引流),你可以将关于自动刮削元数据的选项全部取消只保留对艺人的元数据自动刮削。

完成全部设置后,点击确定即可,Jellyfin/emby会自动扫描媒体库,返回主页就可以看到你的音乐文件了。

啥配置也不需要,直接访问4533端口或者你自己映射的端口按照对应的指示配置管理员账户然后登陆就行

食用体验

网页端直接播放

emby

是三个当中做的最美观的(不好看怎么能让用户付费嘛),播放详情页面也有对专辑封面的取色,不过歌词是要买高级版才有的功能

embymusicmainpage.webp
embymusicnowplaying.webp
embymusiclogo.webp

如果刮削到了歌手的tag左上角还会显示出对应的标

embymusiclyric.webp

Jellyfin

界面还算过得去,有最基础的现在播放详情功能和歌词展示

jellyfinmainpagemusic.webp
jellyfinmusicnowplaying.webp
jellyfinmusiclyric.webp

是三个中最丑的,歌词展示只有短短的一行,有一种毛坯房的美感

navidromemainpage.webp
navidromelyric.webp
navidromesonginfo.webp

APP播放推荐

音流

优点:

  1. 可以接入上述三个平台甚至群晖那个半死不活的Audio Station

  2. 全 平 台 覆 盖(包括Windows/macOS/Linux/iOS/Android)

  3. 有诸如定时停止/设置音质/每日推荐等等高级功能

  4. 有我最喜欢的系统播放组件显示歌词的功能(但是要氪金)

缺点:

  1. 有部分功能要付费(如主备线路切换和歌曲下载功能)

  2. 你就算买了会员也要联网验证资格……(不知道算不算缺点)

Feishin

jeffvli/feishin: A modern self-hosted music player.

优点:

  1. 有几乎媲美emby的美观播放界面

  2. 适配了网易云的歌词自动搜索和自动搜索翻译功能

  3. 还是好漂亮……

缺点:

  1. 只能连接到Jellyfin/Navidrome/OpenSubsonic兼容服务器(不支持emby)

  2. 没有移动设备端的支持

Feishinmainpage.webp
Feishinlyric.webp
Feishinvisualizer.webp

完善音乐库

到这里,相信你已经有了自己心中的选择,不过对于自建音乐库来说,搭建服务平台是最简单的,真正麻烦的是整理这些音乐文件让他们看起来井井有条,只依靠Jellyfin的emby的刮削可能并不准确:NAS自建音乐库指南(二)——整理你的音乐文件 - Fridayssheep的鲸湾

年末了看到大家都在分享自己的听歌报告(成分揭秘/浓度揭底)?没关系,自建音乐库可以借助Last.fm记录你的听歌记录: