Linux自学之MPD问题一二及解决
Linux自学之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被占用.
解: 全程使用mpd --no-daemon --stdout --verbose ~/.mpdconf/.mpdconf
命令启动, 观察输出信息, 直至没问题后使用命令mpd ~/.mpdconf/.mpdconf
根据自己意愿选择添加可选项.
步骤1:用命令sudo lsof -i :6600
查看端口使用情况;
步骤2:结果中是否存在进程号(PID)为1的进程占用mpd. 如果有,使用sudo systemctl disable mpd.service
取消mpd开机自启后, 重启后重复步骤1, 如果还存在端口占用, 则修改配置文件中6600处;没有则进行下一步;
步骤3:使用kill 或 pkill命令结束mpd相关全部进程, 再次启动mpd.
2) 问题1步骤1中的命令能不提权运行吗.
解: 可以的. 如果只需要在当前用户级别下查看端口使用是可以的, 但是查看当前用户级别的端口占用,有时是没有结果的;但提权至系统级后mpd进程又出现了, 神不神奇. 这就是我遇到的不提权, 在当前用户级别没有检测到6600端口占用, 但是一直提示端口被占用无法连接.
3) pid文件无法阅读或者不存在, 是必要的吗.
解: 先说该文件的必要性. 如果想使用mpd --kill
结束mpd进程, 就必须用. 对于不存在或无法阅读, 先查看配置文件是否使用了pid文件, 如果使用了, 根据对应路径去查看是否还存在pid文件, 如不存在则使用touch
命令创建, 文件名根据配置文件(/home/username/.mpdconf/.mpdconf)中的pid_file补充; 无法阅读则修改权限即可, 图省事就chmod 777.
3. 一波骚操作
前提 已完成安装配置,切配置合理正确.
启动及播放流程简单示意:
步骤1: mpd ~/.mpdconf/.mpdconf # 启动mpd, 并加载用户配置文件
步骤2: mpc update; mpc ls | mpc add; mpc playlist | cat -b # 本命令含扫描、添加、标序号为一行, 是一行, 不是一句
步骤3: mpc play n # n为歌名前面的序号
命令 | 含义 |
---|---|
mpc current | 获取当前播放歌曲 |
mpc toggle | 播放/暂停 |
mpc stop | 停止播放和toggle区别还是很大的 |
每次输入mpd ~/.mpdconf/.mpdconf
启动, mpd ~/.mpdconf/.mpdconf --kill
结束, 是很费事的. 可以在bash用户级配置文件中加上别名就好很多了, 比如:
alias mpd='mpd ~/.mpdconf/.mpdconf'
结语
本文图片少,感觉可能是不需要,如有朋友添加图片后觉得必要的,可找我添加链接,告知入坑者图文教程处。理论指导实践,实践后再总结出适合自己的理论。之后,在不断地尝试和总结过程中才能知道,学会放弃有多重要……由于自身还有很多不足,未能面面俱到,所以不足之处(不算错别字),欢迎温柔地指出。