nvidrome音乐平台使用记录

nvidrome 搭建了两周多时间,发现一些问题,再做一些记录补充。

客户端使用

nvidrome音乐平台,可以通过浏览器直接访问,通过上次的配置,访问子域名进入登录界面,输入账号密码。

1、修改语言
右上角点击人物头像,然后“个性化”在该界面修改语言、主题等

2、添加用户
右上角点击人物头像,然后“用户”在该界面增加修改用户

3、歌单管理
nvidrome 会直接把音乐源配置的目录以及子目录所有的源文件,自动识别专辑和艺术家,但是歌单需要自己创建。我是在主目录下,用子目录区分,然后在每个子目录创建一个m3u文件。该文件生成后可以被nvidrome识别并播放。

自动生成脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash

MUSIC_DIR="/home/test/music"

# 遍历一级子目录
for dir in "$MUSIC_DIR"/*/ ; do
playlist="${dir}playlist.m3u"
echo "Generating playlist: $playlist"

# 清空 playlist 文件
> "$playlist"

# 将该子目录所有音频文件写入 playlist
find "$dir" -maxdepth 1 -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.m4a" -o -iname "*.wav" \) \
-printf "%f\n" >> "$playlist"
done

echo "All playlists generated!"

4、音乐文件核对
有些源文件,nvidrome无法读取到专辑和艺术家,可能会导致播放失败和卡顿。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/bash

MUSICDIR="/home/test/music"
OK="ok_files.txt"
BAD="problem_files.txt"

echo "=== Navidrome/Symfonium MP3 播放兼容性检查 ==="
echo "扫描目录: $MUSICDIR"
echo "" > "$OK"
echo "" > "$BAD"

# 需要 ffmpeg 和 id3v2
command -v ffmpeg >/dev/null 2>&1 || { echo "需要安装 ffmpeg"; exit 1; }
command -v id3v2 >/dev/null 2>&1 || { echo "需要安装 id3v2"; exit 1; }

find "$MUSICDIR" -type f -iname "*.mp3" | while read -r file; do
echo "检查文件: $file"

has_error=0
reason=""

# 1. ffmpeg 能否读取(检测损坏)
ffmpeg -v error -i "$file" -f null - 2>ffmpeg_err.txt
if [ -s ffmpeg_err.txt ]; then
has_error=1
reason+="【音频损坏或无法解码】"
fi

# 2. 标签检查
tags=$(id3v2 -l "$file")

title=$(echo "$tags" | grep "^TIT2" | cut -d':' -f2- | xargs)
artist=$(echo "$tags" | grep "^TPE1" | cut -d':' -f2- | xargs)
album=$(echo "$tags" | grep "^TALB" | cut -d':' -f2- | xargs)

if [ -z "$title" ]; then
has_error=1
reason+="【缺少标题Title】"
fi

if [ -z "$artist" ]; then
has_error=1
reason+="【缺少艺术家Artist】"
fi

if [ -z "$album" ]; then
has_error=1
reason+="【缺少专辑Album】"
fi

# 输出结果
if [ $has_error -eq 0 ]; then
echo "$file" >> "$OK"
else
echo "$file $reason" >> "$BAD"
fi

rm -f ffmpeg_err.txt
done

echo "=== 检查完成 ==="
echo "可正常播放文件列表: $OK"
echo "存在问题的文件列表: $BAD"

5、移动端软件

  • tempo
    一款开源且免费的音乐播放器效果如下:

  • symfonium
    一款支持自定义界面、使用者众多的APP,有试用时间,买断收费制。我比较喜欢自定义。

  • 音流
    国内音乐播放器,买断收费制