Mpd について

Introduction

windows 平台的 foobar2000,linux 平台 amarok 与源自于 mac osx 的 itunes 演绎的都是同一出“大肚能容”,无论是播放,管理,刻录音乐,各色功能都是无所 不包,尤其要点名指出 itunes 的臃肿,太让自己各种不堪不忍。

mpd 相比于这些音乐播放器,太精准贯彻了 unix 'Do one thing and do it best' 哲学思想。mpd 全名为 'Music Player Damon',从其隐藏大名中也可管 中窥豹知其仅仅只是一个简单到极致的音乐播放守护进程,他只完成播放音乐这一 项纯粹的任务。

而相比于 moc/mpg123/mpg321 这一票同为 cli 音乐播放器而言,mpd 最大的特色 即为带来 c/s 架构的 Daemon,通过作为默默的守护进程运行在后台,这也提供了 非常多的想象空间,例如可以在千里之外的 iPad 上收听,在 Firefox 中无缝切 换控制,或是在 emacs 中与 emms 相互协作。

每次与 FreeBSD 相遇时,初识与结束之时总是在美妙的音乐中度过,太过完美。

Configuration

官方配置指导一读

Windows

这里要特别介绍下 mpd 在 window 下的配置。由于 mpd 默认的配置文件位于 '~/.mpdconf', 而由于 cygwin, msys/mingw, cmd 彼此之间对于路径的处理存在 着差异性,因此不建议使用相对路径。自己在使用中,必须显式地指定 mpd 启动 读取的配置文件,'mpd /.mpdconf &' 才可以顺利启动之。

而对于 .mpdconf 文件,建议在设置诸如音乐文件,播放列表时使用其路径全名, 诸如 '~/music/' 总是无法被 mpd 解析,猜测或许是其是由于使用 mingw 编译所 致。

Basic

MPD 基础配置很简单,只需要设置如下变量即可:

  • 音乐文件夹变量 music_directory,如将音乐统一存放于 '~/music/'。 在 Unix 平台上可以使用软链接,windows 上可以使用 [junction][],这样音 乐管理也可以更加弹性灵活。

  • 保存 MPD 播放状态的一系列文件,建议将这些文件统一存放于 '~/.mpd' 目录。

    • 播放列表目录 playlist_directory,相应于 '~/.mpd/playlists/'
    • 日志文件 log_file,相应于 '~/.mpd/mpd.log'
    • pid 文件 pid_file,相应于 '~/.mpd/pid'
    • 音乐数据库文件 db_file, 相应于 '~/.mpd/tag_cache'

Audio Outputs

mpd 负责音乐的播放,因此就需要驱动相应的音频设备工作,这在 mpd 中称为 audio outputs,而这是操作系统相关的,因此对于不同平台是相异的。或者也可 以选择不配置 audioo outputs,而让 mpd 去猜测可使用的音频输出,可以使用 'mpc outpus' 查看其结果。

Alsa

对于 Linux 平台当然推荐 Alsa,由于 mpd 起源于 linux,因此在不配置 audio outpus 时,mpd 在大多数情况下也可以正确找到 alsa 驱动之。

简单的 alsa audio outpus 配置如下:

audio_output {
        type            "alsa"
        name            "Debian ALSA Device"
}

Oss

由于工作平台迁移到了 freebsd,而 freebsd 没有 linux 专属的 alsa,因此需 要业已“廉颇老矣”的 oss,而这也是 freebsd 上最好的选择。小小吐槽下,由于 刚刚开始使用 freebsd,也为 mpd 无法播放音乐文件折腾了好久。对于广大 linuxer 而言,alsa/oss 任君挑选。

audio_output {
        type            "oss"
        name            "FreeBSD OSS Device"
}

Windows

audio_output {
        type            "winmm"
        name            "My Windows Device"
}

Httpd Stream

Mpd c/s 架构发挥想象力的地方正在于其可以输出音频流为 https stream,而这 可以为服务端的通用播放器所播放,诸如 windows 上无所不能的 foobar2000, linux 上的 mplayer/vlc。

Mpd 对于如何输出 httpd stream 有两种可选方案,inline/icecast。

audio_output {
        type            "httpd"
        name            "HTTP Stream"
        encoder         "lame"
        port            "8080"
        bitrate         "192"
        format          "44100:16:1"
}

Misc

当然 mpd 的功能及其可配置性不仅仅只是如此单薄,你也可以设置客户端连接的 端口/密码/数量,播放音乐时自动调节增益。

更详细的可定制选项,可以翻阅下 '~/.mpdconf' 文件或是 man 文档,或许其中也 会找到所需要的定制功能。

Clients

官方一众各平台客户端一览

Linux

Linux 平台上的 mpd 客户端很是丰富,mpd 就是孕育于此平台。gtk/QT/cli 一应 俱全,就看看官如何偏爱选择之。

对于 Gnomer 而言,应也最偏爱 sonata,简洁,完整。Gmpc 也是不错的选择,但 也许是先入为主,总还是一如既往偏爱之,sonata 抢占自己的桌面。

对于 Kder 而言,qmpdclient 算是中规中矩的客户端,自己没有感觉到太多的亮 点,也是使用频率很低。

cli 而言,强烈推荐 ncmpcpp(ncmpc),强大的可配置性,丰富的特性,任意定制 的快捷键,很适合键盘流。

Windows

由于 mpd 不是为 windows 而生,因此 windows 上的客户端相当的匮乏。或许基 于 gtk 的 gmpc 是个不错的选择,功能还算很是完备,应该可以敷衍之。

而对于 cli tools 而言,mpc/ncmpc/mpdscribble 都需要“自力更生”编译。于 cygwin 平台上顺利编译了,msys 未尝试过。编译软件还是颇费周折的,或许如 上的 gmpc 是 windows 上最好的选择了。

  • libmpdclient(ncmpc, mpdscribble 依赖于此)
  tar zxvf libmpdclient-2.4.tar.gz && cd libmpdclient-2.4
  ./configure --prefix=/usr
  make && make install
  
  • ncmpc
  tar jxvf ncmpc-0.18.tar.bz2 && cd ncmpc-0.18
  ./configure --prefix=/usr
  make && make install
  
  • mpdscribble
  tar jxvf mpdscribble-0.21.tar.bz2 && cd mpdscribble-0.21
  ./configure --prefix=/usr
  make && make install
  

iOs

iphone/ipad 下很建议使用 mPod/mPad,太方便与强大,也是很好的贯彻了 c/s 精髓,可以实现随心所欲的远程播放/控制,现在自己已经更加习惯于用 mPod 做 为自己主力了,而且也可以在 last.fm 上浏览歌曲信息,实在是个太好的玩具。

Last.fm

部分客户端自身提供了 scribble 到 last.fm 的功能,诸如 sonata/gmpc。 而对于通用 scribble 而言,推荐朴素的 mpdscribble。

偏好の windows 软件推荐

系统应用

  • Windows7 网银,office(word),各种 windows 专用的软件,还是趁着 windows7 发布不久,于大四的下学期购置了一套 windows7 home basic。windows7 相比 xp 确实是要有优秀的多,界面的美观实 用性,字体也丰富了很多,¥399 还是物有所值的。对 windows7 home basic 版本唯一的遗憾是不能组建家庭网络,为此折腾 windows7 蓝屏了好几次,但这也是 windows7 家庭高级班的卖 点,还是不能太“贪心”。

继续阅读