在 NAS 上搭建自己的音乐流媒体服务

  之所以选择在 NAS 上搭建自己的音乐库,不外乎下面几个原因:

  • 有好的播放设备,希望找到无损音源发挥最佳收听效果。
  • 音乐平台即使购买了会员,因为版权或中外音源差异的原因,总有自己喜欢的歌曲无法播放。
  • 和文字内容一样,出于某些原因,音乐也会因为歌词被屏蔽。

  而在积累了足够多的音乐专辑后,就会希望找到一种优雅,高效的方式来随时随地播放自己收集到的歌曲。具体来讲,需求是:

  1. 方便在电脑(web 端或 app)和移动设备(app)上播放。
  2. 能够整理并利用音乐的专辑,歌词等元数据信息。
  3. 服务器端安装需要docker友好(方便使用 docker compose 管理及迁移到任何平台)。

  首先被排除的就是群晖(QNAP)自带的 Music Station,它的 web 端和移动端 app 在体验上都难以令人满意。除自带软件之外,提供音乐服务一般有两种方式:1. 专门的服务器端软件串流音乐文件 + 客户端播放;2. 将音乐文件当作普通文件,通过 SMB 或 WebDAV 等协议播放。因为需要外网访问,第二种方式对于体积比较大的无损音源来说不太友好。在尝试了一些软件组合后,找到了下面几个软件可以满足需求。

Navidrome

  Navidrome 的简介是“开源的基于网页的音乐收藏服务器和流媒体服务。它让你可以在任何浏览器或移动设备上自由地听你的音乐收藏。它就像你的个人 Spotify!”,它既提供服务器端的音乐串流功能,也能当作 web 端的网页播放软件使用(也可通过 PWA 方式安装到移动设备上)。另外它支持 Subsonic 和 OpenSubsonic,所以有不少客户端可以直接使用。Docker compose 安装如下:

services:
  navidrome:
    image: deluan/navidrome:latest
    user: 1000:1000 # 设置了合适权限的用户
    ports:
      - "4533:4533"
    restart: unless-stopped
    volumes:
      - "/share/Container/navidrome:/data"
      - "/share/Music:/music:ro"
    networks: # 为了可以被同网络上的 Nginx proxy manager 访问到
      - my-dockers-network

networks:
  my-dockers-network:
    external: true

  安装好后即可通过 http(s)://<ip>:4533 打开它的管理页面。但很快发现因为流媒体的设计理念,它无法通过传统的文件目录来浏览音乐,而只能通过歌曲的元数据(如专辑、艺术家等)来组织曲库。如果音乐文件的元数据不完整或不正确,整个曲库会混乱不堪。这时需要另一款能够补齐所有音乐元数据信息的软件。

Music Tag Web

  Music Tag Web 是一款可以编辑歌曲的标题,专辑,艺术家,歌词,封面等信息的音乐标签编辑器程序(也就是“刮削”), 支持FLAC, APE, WAV, AIFF, WV, TTA, MP3, M4A, OGG, MPC, OPUS, WMA, DSF, MP4等音频格式。最主要它可以直接在浏览器中整理 NAS 上的音乐文件,省去了通过 SMB 等协议挂载远程目录的繁琐步骤。

  它的 docker compose 安装如下:

version: '3'

services:
  music-tag:
    image: xhongc/music_tag_web:latest
    container_name: music-tag-web
    ports:
      - "8002:8002"
    environment:
      - PUID=1000 # 设置了合适权限的用户
      - PGID=1000
    volumes:
      - /share/Music:/app/media:rw
      - /share/Container/music-tag-web:/app/data
    restart: unless-stopped

  虽然操作逻辑需要熟悉一下,但提供的功能很方便,可以手动,自动,批量对音乐文件的元数据进行编辑。在此,也向该项目的作者表示感谢。

播放客户端

  有了元数据和歌词完备的音乐,Navidrome 就可以提供稳定可靠的音乐串流服务了。当然,你很可能需要把它配置成可以通过外网访问。客户端选择上,我个人测试了几款兼容 Subsonic 协议的应用:Navidrome, Feishin, Symfonium。目前的搭配方案是:电脑端直接用 Navidrome 本身的播放功能(web 端和 PWA),手机端购买了功能更强大,UI比较精美的 Symfonium。

写在最后

  当你再次听到熟悉的歌,想起上学时中午飞奔回家打开录音机;想起中考结束的夏日晚上躺在凉席上反复听着一张专辑;想起第一次买到磁带随身听,一方面感叹音乐如此美妙,一方面希望那充电电池可以再耐用一些;想起父亲说“我听到一首非常好听的歌”;想起第一次听现场演唱会;想起在陌生的城市和音乐为伴……通过整理这些音乐,重拾当时的记忆,何尝也不是一种乐趣。

Leave a Comment

Your email address will not be published. Required fields are marked *