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、移动端软件