自从上班的地方不给用苹果之后,我就慢慢地将使用环境从苹果中迁移出来, 这篇博客说的是将音乐库从 Apple Music 迁移到 navidrome 中的一些实践。

需求

  • 智能歌单功能
  • 可以缓存音乐的客户端
  • 可直接扫描音乐文件夹

综上,选择目前能满足我需求而且开发较活跃的 navidrome 。

安装方面,用 docker compose 启动镜像,配置好之后可以开机启动,只要设置好 docker desktop 的开机启动即可。

services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    user: 1000:1000
    ports:
      - "4533:4533"
    restart: unless-stopped # 自动重启
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Asia/Shanghai
      ND_TRANSCODINGENABLED: true
    volumes:
      - "/home/ruan/navidrome/config:/data" # 映射配置文件
      - "/mnt/g/Music:/music:ro"            # 映射音乐库

遇到的问题

alac 无损格式无法播放

之前通过 apple music 无损格式管理音乐库,所以音乐格式是通过m4a容器存储的。 但是 navidrome 的 web 页面和一部分客户端没办法直接播放m4a播放,这一点让我比较烦恼。

经过询问gpt发现能利用ffmpeg直接将m4a格式转换成flac格式,并且能保留全部标签。

# 把music.m4a转换成music.flac
ffmpeg -i "music.m4a" -c:a flac -compression_level 8 -map 0 -map_metadata 0 "music.flac"
# 把当前文件夹下的m4a音频转换成flac
for i in *m4a; do ffmpeg -i "$i" -c:a flac -compression_level 8 -map 0 -map_metadata 0 "${i%m4a}flac" && rm "$i"; done
# 把当前文件夹下所有子文件夹里的m4a音频转换成flac
for f in *; do `cd "$f"; for i in *m4a; do ffmpeg -i "$i" -c:a flac -compression_level 8 -map 0 -map_metadata 0 "${i%m4a}flac" && rm "$i"; done`; done

智能歌单创建

navidrome官方只支持编辑配置文件的智能歌单,没有图形界面的操作方式。我觉得这样太麻烦, 所以直接使用Feishin这个带有图形界面功能的桌面客户端创建。

思考

以前总觉得互联网是开放自由的,但是国内互联网的发展却越来越封闭,各大厂商抢到用户之后马上开始封闭,就像是在圈养可以产羊毛的绵羊一样。 里面的内容搜索引擎都搜不到,逼迫用户注册、看广告、充钱。另外,国内的互联网信息丢失非常严重,以前逛的论坛、资源网站逐渐消失, 这一点从寻找失传媒体越来越火可以看出。所以,我觉得各种数据还是由自己管理保存更好。自己的东西毕竟可以做321备份策略, 丢了也怨不了谁。