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指令