我们继续网络音箱的专题,这章将介绍安卓系统下的MP标准软件控制路由器播放音乐。

什么是MP

MP全称为音乐播放进程(Music Player Daemon)。它是一个可定制化功能强大的服务端播放音乐软件,通过其自身的插件和库系统即可完成通过网络控制播放音乐。MP具备一个自己的控制管理协议,这些协议是基于TCP协议进行传输的。客户端连接到服务器上控制服务端进行处理。MPD表示服务端,MPC表示客户端。

MP是一个完全开放源代码的整体系统,因此有很多操作系统下的客户端,在安卓手机中即可使用MPDroid这个软件控制服务端播放,而如果您需要开发自己的产品,完全可以参考官方的资料自己开发一个控制程序,甚至给服务端增加新的功能。

使用MP的好处是,只要你的手机连接到家里的路由器上既可以控制播放音乐,而手机还随身携带,这样不影响你扫地啊、煮饭啊等等工作是不是。

MP的官方网站为http://www.musicpd.org/

安装MPD服务

首先确保你12章的测试和操作OK声卡已经正常工作了。

然后开始安装软件包,我们教程中使用的是mpd-mini该软件包是mpd的OpenWRT精简版完成了主要的功能,而且也比较节省CPU和内存。

root@SmartRouter:/# opkg update
root@SmartRouter:/# opkg install mpd-mini

为MPD准备文件夹和文件

第一步: 创建必须的文件夹,在这一步,我们选择使用extdisk作为存储位置,这样的好处是上传到系统的文件可以通过Windows文件共享等方式实现。当然你也可以开发一个新的客户端软件实现将手机的音乐同步到服务端上。

创建音乐文件存放位置

root@SmartRouter:/# mkdir -p /mnt/extdisk/music
root@SmartRouter:/# chmod -R 777 /mnt/extdisk/music

创建播放列表存放位置

root@SmartRouter:/# mkdir -p /mnt/extdisk/music_playlist
root@SmartRouter:/# chmod -R 777 /mnt/extdisk/music_playlist

创建播放器数据位置

root@SmartRouter:/# mkdir -p /mnt/extdisk/music_bin
root@SmartRouter:/# chmod -R 755 /mnt/extdisk/music_bin

第二步: 创建初始化的文件,这些文件都是mpd所需要使用的

root@SmartRouter:/# touch /mnt/extdisk/music_bin/mpd.db
root@SmartRouter:/# touch /mnt/extdisk/music_bin/mpd.log
root@SmartRouter:/# touch /mnt/extdisk/music_bin/mpd.error
root@SmartRouter:/# #touch /mnt/extdisk/music_bin/mpd.pid
root@SmartRouter:/# touch /mnt/extdisk/music_bin/mpdstate
root@SmartRouter:/# touch /mnt/extdisk/music_bin/mpd.sql

编写MPD的配置文件

编写配置文件,MPD目前没有基于UCI格式的配置文件,需要手工创建一个/etc/mpd.conf文件。

mpd.conf的配置文件涉及到的参数有很多,这里我们一一说明下:

MPD的基本运行参数:

参数 值 说明
music_directory 路径 音乐文件的存放文件夹位置
playlist_directory 路径 音乐播放列表的存放位置,播放列表可以是在设备上创建也可以是通过MPDroid客户端软件创建
db_file 文件路径 MPD的数据库文件路径
log_file 文件路径 MPD的日志文件路径
pid_file 文件路径 MPD的进程号文件路径
state_file 文件路径 MPD的状态文件路径
sticker_file 文件路径 MPD管理音乐动态信息的文件路径
user 帐号 MPD运行时的Linux身份帐号,默认openwrt下只有root
group 分组 MPD运行时的Linux身份帐号,默认openwrt下只有root
bind_to_address IP地址 MPD监听的IP地址,0.0.0.0表示全部设备的IP
port 端口 MPD的监听端口
log_level 字符串 日志信息输出的级别,可以填写default,secure,verbose其中verbose表示显示全部日志,信息很多
auto_update 字符串 当music_directory中的音乐文件有变化时候自动更新MPD的数据库。可以填写yes或no
auto_update_depth 数字 自动更新的时候对文件夹深度的检测,随便写一个值吧只要是数字就可以。
audio_buffer_size 数字 音频播放时的缓存大小,默认值为2048
buffer_before_play 百分比 音频播放之前的缓存比例。默认值为10%
connection_timeout 数字 客户端连接超时,单位秒,默认值为60
max_connections 数字 客户端最大连接数量,默认值为10
max_playlist_length 数字 播放列表文件允许的最大长度,这个不要弄的太大搞死系统了哦。
max_command_list_size 数字 最大list指令尺寸,默认值为2048
max_output_buffer_size 数字 最大输出缓存,默认值为8192
filesystem_charset 字符串 文件系统的编码,如果你的文件是通过windows网络共享上载的这里填写UTF-8即可。
id3v1_encoding 字符串 歌曲的ID3标签名称编码,默认为"ISO-8859-1"

MPD的输出设备output,该设备配置用来实现对声卡的支持,格式如下:

audio_output {
参数内容
}

其中的参数内容在我们的开发板上用的上的是对声卡配置部分:

参数 值 说明
type 字符串 输出类型,可选值为: oss,alsa,pulse,pipe,在我们的开发板上为oss
name 字符串 设备显示名称,在MPDroid客户端软件上可以显示出来。
device 设备路径 oss的设备路径,默认填/dev/sdp
format 字符串 播放格式,默认填写为44100:16:2即可,表示44Khz,16位,双声道
mixer_type 字符串 混音器类型,我们的开发板默认填写"hardware"
mixer_device 设备路径 混音器设备路径,我们的开发板默认填写"/dev/mixer"
mixer_control 字符串 混音器的控制,我们的开发板默认填写"PCM"

在这里,我们举例下配置。

使用VI编辑器创建/etc/mpd.conf配置文件内容如下:

music_directory "/mnt/extdisk/music"
playlist_directory "/mnt/extdisk/music_playlist"
db_file "/mnt/extdisk/music_bin/mpd.db"
log_file "/mnt/extdisk/music_bin/mpd.log"
pid_file "/var/run/mpd.pid"
state_file "/mnt/extdisk/music_bin/mpdstate"
sticker_file "/mnt/extdisk/music_bin/mpd.sql"
user "root"
group "root"
bind_to_address "0.0.0.0"
port "6600"
log_level "default"
auto_update "yes"
auto_update_depth "8"
audio_output {
type "oss"
name "mycard"
device "/dev/dsp"
format "44100:16:2"
mixer_type "hardware"
mixer_device "/dev/mixer"
mixer_control "PCM"
}
#audio_buffer_size "2048"
buffer_before_play "10%"
connection_timeout "60"
max_connections "4"
max_playlist_length "1024"
max_command_list_size "2048"
max_output_buffer_size "4096"
filesystem_charset "UTF-8"
id3v1_encoding "ISO-8859-1"

启动进程准备音乐文件

第一步: 复制音乐

你可以把你喜欢的音乐以文件夹方式存放在/mnt/extdisk/music中,你可以选择使用windows文件共享方式复制音乐文件到系统上来。

第二步: 修正MPD服务的默认音量

因为MPD服务的默认音量参数写的有问题会导致音量被放大到100%吓你一跳,所以需要手工方式修正下。
用VI编辑器编辑/etc/init.d/mpd文件:
找到: [ -x /usr/bin/amixer ] && /usr/bin/amixer set PCM 40%
修改为: [ -x /usr/bin/amixer ] && /usr/bin/amixer set PCM 35%

第三步: 设置启动服务,如果你需要经常听音乐,就要将服务设置为自动开启,或手工开启。

设置每次设备自动开启(如果不是总听,就不用自动拉):
root@SmartRouter:/# /etc/init.d/mpd enable

手工开启一下:

root@SmartRouter:/# /etc/init.d/mpd start

安装安卓MPDroid客户端

MPDroid是一个免费的安卓系统下客户端,该客户端可以实现大部分播放功能。

第一步: 安装

进入你的安卓市场,搜索MPDroid并且下载安装,如果你的市场中没有可以上网上搜索MPDroid下载到手机中安装。

第二步: 配置

首次配置首先要你的无线连接到板子上。打开MPDroid软件后会显示要求配置:
a. 选择WLAN based connection
b. 选择你当前连接上来的开发板
c. 在Host填写开发板的IP地址
d. 在Port填写MPD的监听端口
e. 退出配置返回主界面

第三步: 选择要播放的音乐

a. 选择主界面左下角的音乐符号,再在屏幕左上角选择Files显示可播放音乐。
b. 屏幕中会显示出可播放的音乐或文件夹,这些都是你上传到/mnt/extdisk/music下的音乐文件。
c. 在音乐文件或文件夹上长按后会显示选项:
add 增加到当前播放列表
add and replace 增加到当前播放列表并且替换掉列表中其他的
add, replace and play 增加到当前播放列表,并且替换掉其他的,并且立即播放
add and play 增加播放
add to playlist 增加到一个列表文件(列表文件,跟当前播放列表不是一个意思,列表文件表示存在路由器上的)
d. 选择好以后返回主界面,就有音乐文件了,点击就可以播放了。还可以调整音量。

章节结尾

MPDroid是一个安卓下可用的播放器软件,MPD的协议也可以完成很多工作,但是毕竟有不完善的地方,首先MPDroid不具备音乐同步通能,不能将音乐同步到服务器上,其次界面是英文的操作比较复杂,hoowa期望有识之士能做一个更完美的客户端项目。因此如果有愿意做这方面的朋友,请不要吝啬,加入我们吧。

本文作者:孙冰
本文转自雷锋网禁止二次转载,原文链接

【硬创邦】跟hoowa学做智能路由(十三):网络音箱之Android篇相关推荐

  1. 跟hoowa学做智能路由

    hoowa的新浪博客:http://blog.sina.com.cn/hoowasun 跟hoowa学做智能路由(一):我们来动手吧! http://www.leiphone.com/news/201 ...

  2. 【硬创邦】跟hoowa学做智能路由(七):路由联网

    2014-05-16  17:32  原创  孙冰 1条评论 这一章hoowa将向各位介绍Openwrt下基本路由功能的配置方法,通过本章学习大家将了解如何设置OpenWRT来使路由连接网络,讲解将通 ...

  3. 【硬创邦】跟hoowa学做智能路由(十二):网络音箱之声卡驱动

    题记:忽闻水上琵琶声,主人忘归客不发.转轴拨弦三两声,未成曲调先有情. 对于大多数年轻的女性来说,她们最关心的是生活和自己的男人.男人应该更多的关系自己身边的女人,人生是苦比乐多的,因此要乐观的面对自 ...

  4. 跟hoowa学做智能路由(五):熟悉OpenWRT

    题记:呦呦鹿鸣,食野之苹.我有嘉宾,鼓瑟吹笙. 从本章开始,我们要更多的了解系统的特性,以及不论是智能路由还是智能家居,我们用路由器的处理器到底能做多少事情. 系统结构 在上一章我们已经完成了刷机工作 ...

  5. 【硬创邦】跟hoowa学做智能路由(十):扩充RAM和FLASH

    前几篇好多人都说路由器的内存太小了,FLASH太小了怎么办.那我们这章就介绍下怎么给路由器扩充内存和存储器. 站在玩家兴趣身份上来说,这章的内容会让以后更精彩,操作技术上也存在一些难度,请大家认真操作 ...

  6. 《学做智能车——卓晴》学习笔记(1)——智能汽车智能控制器方案设计

    差速器: 汽车差速器能够使左.右(或前.后)驱动轮实现以不同转速转动的机构.主要由左右半轴齿轮.两个行星齿轮及齿轮架组成.功用是当汽车转弯行驶或在不平路面上行驶时,使左右车轮以不同转速滚动,即保证两侧 ...

  7. 学做 方玲玉 网络营销_网络营销实务(方玲玉)课件及习题参考答案

    内容简介: 网络营销实务(方玲玉)课件及参考答案 教学内容 第01讲 网络正在改写传统商业规则 第02讲 网络营销:传统营销的继承与超越(1) 实训1 传统企业经营现状及网络平台建设情况调研 第03讲 ...

  8. 软硬兼备 学做CIO

    软硬兼备 学做CIO 江苏省张家港市万红小学  黄利锋 在普通规模的中小学校里,网络管理员一般由信息技术老师兼职担任,负责保障学校网络的正常运行,由于信息技术老师还要上课.计算机维护.摄像等,常常顾此 ...

  9. SpringCloud极简入门|zuul智能路由回退、认证、转发功能demo 第五讲

    开篇点题 在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统. 本章将讲解zuu ...

最新文章

  1. iota和左移右移的用法
  2. 最小哈希 minhash
  3. oracle远程连接配置
  4. VC++使用MCI播放音频文件
  5. [转]如何处理机器学习中的不平衡类别
  6. java 一个线程运行_Java并发(基础知识)—— 创建、运行以及停止一个线程
  7. 英伟达赚钱能力创历史新高,老黄:GPU供不应求我也很急
  8. vs2015 安装破解版Visual Assist X
  9. android 手机设备刷新dns
  10. 开关电源电路图及原理12v分析-详细版
  11. 建站之星检测不到mysql_建站之星安装,建站之星安装教程 | 帮助信息-动天数据...
  12. seo和网站服务器有什么区别,网站为什么要做seo,seo与sem有什么区别
  13. 视频播放插件ckplayer简介
  14. Poi和easyExcel
  15. 机器认知、人机交互、边缘计算……在这里,他们谈论了关于AI的关键议题...
  16. Weston中HDMI热拔插检测
  17. EFR32BG22 Thunderboard Kit 学习笔记总结
  18. 寻路 pathfinder 狂乱画
  19. 北宋三衙的地位、待遇及其政治作用
  20. 三星GPSDO STP2878LF 10MHZ驯服钟使用说明备忘录

热门文章

  1. 解决office2010安装过程出错的问题
  2. 五尺天涯 经典台词:岁月易流逝,珍惜眼前人。
  3. Java实现excel大数据量导入
  4. Microsoft 解决方案框架版本 3.0 概述
  5. 梦幻新开服务器维护,《梦幻西游2》6月新开服务器公告
  6. SQL解决Error converting data type nvarchar to numeric.
  7. echarts移除百度地图logo方法
  8. 运维工程师都在做什么?
  9. Linux 内核文件系统模块结构体关系图
  10. 2017年11月8日最新仿互站导航t5友价商城-9套模板首页都增加微信登陆