MPD简介

Music Player Daemon(以下简称MPD)是一看强大的灵活的音乐播放服务器端应用,结合mpc使用,好用的不要不要的。

1. 系统平台及准备

a) 系统平台及软件源

名称 选择版本
系统平台及版本 Deepin Linux 15.11(64位)桌面版
软件源 阿里开源镜像站

b) 软件版本

名称 选择版本 命令
mpd 0.19.21 mpd –version
mpc mpd version: 0.19.0 mpc version

注:命令包含sudo 命令开头, 表示用户临时提权; 反之表示一般用户操作.

c) 准备工作

安装系统,添加并更新软件源; 安装相应软件包:

软件名 命令 备注
lsof sudo apt install lsof 第一步
mpd sudo apt install mpd 第二步
mpc sudo apt install mpc 第三步

以上

1
sudo apt install lsof mpd mpc

一步到位

查看帮助文档, 即man mpd、man mpc或man lsof了解常规操作;

生成必要文件及文件夹:

类型 文件(夹)名 创建后的绝对路径 备注
d .mpdconf /home/username/.mpdconf username为用户自己的用户名
f .mpdconf /home/username/.mpdconf/.mpdconf
f pid /home/username/.mpdconf/pid
f state /home/username/.mpdconf/state
f log /home/username/.mpdconf/log
d database /home/username/.mpdconf/database
f mpd.db /home/username/.mpdconf/database/mpd.db
d playlists /home/username/.mpdconf/playlists
命令 备注
mkdir -p ~/.mpdconf/database ~/.mpdconf/playlists
touch ~/.mpdconf/.mpdconf ~/.mpdconf/database/mpd.db ~/.mpdconf/pid ~/.mpdconf/state ~/.mpdconf/log

在配置文件(~/.mpdconf/.mpdconf)中写入如下内容, 含义请看帮助文档:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
bind_to_address "127.0.0.1:6600"
music_directory    "~/Music"
playlist_directory "/home/username/.mpdconf/playlists"
db_file            "/home/username/.mpdconf/database/mpd.db"
pid_file           "/home/username/.mpdconf/pid"
state_file         "/home/username/.mpdconf/state"
log_file           "/home/username/.mpdconf/log"

audio_output {
  name "audio"
 type "alsa"
}

在配置文件中的音乐文件夹(~/Music)下放置一些音乐文件。

2. 遇到的问题

1) 无法连接或者socket端口6600被占用.

解决: 步骤1:用命令sudo lsof -i :6600查看端口使用情况; 步骤2:结果中是否存在进程号(PID)为1的进程占用mpd. 如果有,使用sudo systemctl disable mpd.service取消mpd开机自启后, 重启后重复步骤1, 如果还存在端口占用, 则修改配置文件中6600处;没有则进行下一步; 步骤3:使用kill 或 pkill命令结束mpd相关全部进程, 再次启动mpd.

mpd --no-daemon --stdout --verbose ~/.mpdconf/.mpdconf 命令启动, 观察输出信息, 直至没问题后使用命令 mpd ~/.mpdconf/.mpdconf

根据自己意愿选择添加可选项.

2) 问题1步骤1中的命令能不提权运行吗.

解: 可以的. 如果只需要在当前用户级别下查看端口使用是可以的, 但是查看当前用户级别的端口占用,有时是没有结果的;但提权至系统级后mpd进程又出现了, 神不神奇. 这就是我遇到的不提权, 在当前用户级别没有检测到6600端口占用, 但是一直提示端口被占用无法连接.

3) pid文件无法阅读或者不存在, 是必要的吗.

解: 先说该文件的必要性. 如果想使用mpd --kill结束mpd进程, 就必须用. 对于不存在或无法阅读, 先查看配置文件是否使用了pid文件, 如果使用了, 根据对应路径去查看是否还存在pid文件, 如不存在则使用touch命令创建, 文件名根据配置文件(/home/username/.mpdconf/.mpdconf)中的pid_file补充; 无法阅读则修改权限即可, 图省事就chmod 777.

3. 常用操作命令

前提 已完成安装配置,切配置合理正确. 启动及播放流程简单示意:

1
2
3
mpd ~/.mpdconf/.mpdconf # 启动mpd, 并加载用户配置文件
mpc update; mpc ls | mpc add; mpc playlist | cat -b # 本命令含扫描、添加、标序号为一行, 是一行, 不是一句
mpc play n # n为歌名前面的序号
命令 含义
mpc current 获取当前播放歌曲
mpc toggle 播放/暂停
mpc stop 停止播放和toggle区别还是很大的

启动

1
mpd ~/.mpdconf/.mpdconf

停止

1
mpd ~/.mpdconf/.mpdconf --kill

如果觉得输入很长的指令麻烦,可以在bash用户级配置文件中加上别名就好很多了, 比如:

1
alias mympd='mpd ~/.mpdconf/.mpdconf'

以后输入mympd就会执行带参数的mpd指令