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 第三步

以上

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)中写入如下内容, 含义请看帮助文档:

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. 常用操作命令

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

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区别还是很大的

启动

mpd ~/.mpdconf/.mpdconf

停止

mpd ~/.mpdconf/.mpdconf --kill

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

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

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