缘起

题目略微标题党,其实开始就是比较喜欢听一档广播节目,想用树霉派听广播,可以手机控制。

准备

刚开始还在想着要不要自己开发一个Android的客户端来控制树霉派的播放。简单搜索了一下,发现已经有现成的实现:MPD。MPD (music player daemon) 是一个服务器-客户端架构的音频播放器. 它使用很少的系统资源播放音频文件, 管理播放列表和维护一个音乐数据库. 你需要一个独立的客户端与它进行交互。

安装

1.安装MPD:

sudo apt-get install mpd mpc mpc是mpd的一个命令行下的客户端,用来控制和mpd交互控制播放。可以用mpc help查看使用命令。基本命令如下:

# 添加一个网络FM音频流 mpc add http://URL

# 播放 mpc play

# 提高音量: mpc volume +10

# 减少音量: mpc volume -10

# 停止播放: mpc stop

2.安装Android客户端MPDroid

MPDroid名字很直观,通过它控制MPD服务器里的音乐,可以以流媒体的形式在手机上播放MPD服务器上的音乐(这个功能我在N5手机上播放广播直接导致手机死机,谨慎使用)。

Github源码Google Play 安装,无法Play安装的,可自行搜索国内市场。

配置

1.MPD服务器的配置

安装完成以后做简单的配置即可开始使用。编辑配置文件sudo vim /etc/mpd.conf,查找并修改以下内容:

music__directory         "/home/pi/mp3"# 歌曲目录
playlist_directory      "/home/pi/mp3/.mpd/"# 播放列表存放目录
db_file                 "/home/pi/mp3/.mpd/mpd.db"# 歌曲列表
log_file                "/tmp/mpd.log"
pid_file                "/tmp/mpd.pid"
state_file              "/home/pi/mp3/.mpd/mpd.state"# 播放列表
user                    "root" 
group                   "users"
bind_to_address         "0.0.0.0"
audio_output {
 type         "alsa"        
 name         "My ALSA Device"        
 device         "hw:0,0" 
 format         "44100:16:2"
 mixer_control        "PCM"
}
filesystem_charset              "UTF-8"
id3v1_encoding                  "GBK"

保存 mpd.conf 文件后需要重启 MPD:sudo /etc/init.d/mpd restart,至此mpd的配置完成。可以用mpc简单控制mpd的播放了。

2.MPDroid的配置

打开应用进入设置页面,有两个选项,可以根据个人需要选择。这里我选择 “Default connection settings”,另外一个是 “Wlan based connection”,可以针对不同的无线网络设置不同ip。填写“Host”与“Streaming Host”,这里就是树霉派的ip地址。之前已经在路由上绑定树霉派的mac和ip了,所以ip不会变化,我这里是192.168.1.103.“Port”由于服务端我们没有更改,默认端口就是是6600,故不用修改。配置完成可以控制mpd播放了。

3.定时播放

前面提到过,最开始是想听一个广播节目,所以希望可以定时播放。这个使用cron任务来完成,终端下输入crontab -e添加以下任务:

0 22 * * * mpc play 1
0 0  * * * mpc stop

22点开始播放,0点停止播放。这里的mpc play 1的1是指要播放的音乐在播放列表的位置(position),我这里定时播放的广播节目是第一添加的。

接下来还希望可以添加一个起床闹钟,可以像上面一样继续添加:

0 7 * * * mpc play 1
10 7 * * * mpc stop

7点开始播放,7点10分停止播放。

结语

最初的需求通过mpd完美完成,接下来考虑还有几点可能会做。

  1. 把在各个网站上收藏的喜欢的歌搜罗下来,或者做到直接播放,打造真正的私人电台
  2. 解决手机Steaming播放导致N5死机的问题,原因还没找到,可能需要查看源码
  3. 暂时还没有想到

参考

  1. 树莓派(raspberry pi)播放FM收音机(音频流)
  2. 用安卓手机遥控openwrt+usb声卡播放MP3及mms网络电台
  3. Android 手机上 MPDroid 遥控 MPD

关注移动开发和自动化,记录开发中遇到的问题和思考