mpd 是目前我最喜欢的linux环境下的播放器,它跟常见的大多数播放器都很不同,比如它是c/s架构,mpd会作为一个守护进程运行在后台,通过各种各样的 client软件来控制播放动作、播放列表等,从一开始使用我便喜欢上了这种方式。下面介绍一下它的使用方法和一些常见问题的解决方法。
一、安装
我推荐使用最新的0.12.1版,因为我曾使用过0.11.5版,它对某些歌曲的长度识别有问题,而在最新的0.12.1中很正常,以下文字都是基于0.12.1版的。
如果你跟我一样使用gentoo linux,那么你把portage更新到最新后emerge mpd就可以了:
emerge --sync
emerge mpd
使用其他的发行版的用户可以检查一下软件仓库中是否已有mpd,比如debian/ubuntu用户可以:
apt-get install mpd
arch用户可以:
pacman -S mpd
如果你使用的发行版还没有提供0.12.1版的二进制包,你可以从mpd官方网站(http://www.musicpd.org/files.shtml)下载源代码进行编译安装。
使用tar命令解开源代码包后进入源码目录:
tar xf mpd-0.12.1.tar.gz
cd mpd-0.12.1
编译安装:
./configure --prefix=/usr
make
make install
二、mpd的配置
mpd的系统级配置文件是/etc/mpd.conf,配置方法参见该文件,常用的配置选项有如下几个:
user 指定用来运行mpd的用户,建议使用默认的mpd用户
music_directory 指定存放mp3文件的目录,确保user指定的用户对该目录及其子目录、文件有读写权限。
filesystem_charset 要和你系统使用的locale一致,比如我的:
aiyi@devr ~ $ locale
LANG=en_US.utf8
LC_CTYPE=zh_CN.utf8
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
因此我就设置该选项为"UTF-8"
id3v1_encoding 指定mp3文件id3v1的编码,通常指定为"GBK"
后两项的设置很重要,它关系到你的歌曲信息是否能够正确显示。
对mpd配置完毕后要创建歌曲数据库,使用命令:
mpd --create-db
三、mpd的使用
启动mpd:
一般安装mpd时会安装一个启动脚本,比如mpd在gentoo下安装的启动脚本为/etc/init.d/mpd。
/etc/init.d/mpd start就启动了mpd
mpd没有安装该脚本也无妨,直接运行mpd就可以了。
四、客户端软件的使用:
我比较常用的客户端软件是mpc和gmpc,这些软件的安装都很简单,自行解决吧:)
mpc的常用方式:
mpc listall 可以列出所有的歌曲
mpc search filename 可以按文件名查找
mpc search artist 可以按歌手查找
mpc search title 可以按歌曲名查找
mpc add 添加歌曲到播放列表
mpc listall|mpc add 可以把所有歌曲都添加到当前的播放列表
mpc playlist 查看当前播放列表
mpc play 播放
mpc play 18 播放列表中第18首
mpc pause 暂停
mpc stop 停止
mpc 查看当前播放歌曲的信息
mpc的更多选项可以看mpc的帮助。
gmpc是图形化的客户端,使用更加简单,就不废话了。
五、常见问题
1、我的播放列表怎么有很多乱码?
这个……要检查一下上面mpd的配置一节说过的两个选项:
filesystem_charset
id3v1_encoding
看是否设置正确
2、我确认配置没问题,还是乱码。
这个可能是0.12.1新引入的问题,如果你的mp3文件有id3v2信息,那mpd会优先读取它而不管id3v1。
解决方法:删除id3v2信息,再确认id3v1是否正确
3、怎么删除id3v2信息?
我推荐使用id3v2这个命令行软件:id3v2 -d mp3file
4、能不能显示歌词?
偶目前在写一个小程序,用与mpd环境下的歌词显示,基本上完成了,稍候放出。
5、其他的问题