小度路由madplay和mpd本地音乐播放器

——Author:qinfan 2014.9.3


1). usb声卡驱动

 Kernel modules  ---> Sound Support  ---> <*> kmod-usb-audio

Utilities  ---> <*> alsa-utils

2). 添加输入设备

  Kernel modules  ---> Input modules  ---> <*>kmod-input-evdev...................................... Input event device

3). 添加USB相关支持

Kernel modules > USB Support > <*> kmod-usb-core.  ##默认已经选了

Kernel modules > USB Support > <*> kmod-usb-ohci.  ##默认已选 old usb1.0

Kernel modules > USB Support > <*> kmod-usb-uhci.  ## usb1.1

Kernel modules > USB Support > <*> kmod-usb-storage.

Kernel modules > USB Support > <*> kmod-usb-storage-extras.

Kernel modules > USB Support > <*> kmod-usb2.  ##默认已经选了 usb2.0

4). 添加SCSI支持

Kernel modules > Block Devices > <*>kmod-scsi-core  ##默认已经选了 usb3.0 

5). 添加USB挂载

Base system > <*>block-mount

6). 添加自动挂载工具

Utilities > Filesystem > <*> badblocks

7). 添加文件系统支持

Kernel modules > Filesystems > <*> kmod-fs-ext4 (移动硬盘EXT4格式选择)

Kernel modules > Filesystems > <*> kmod-fs-vfat(FAT16 / FAT32 格式 选择)

Kernel modules > Filesystems > <*> kmod-fs-ntfs (NTFS 格式 选择)

8). 添加UTF8编码,CP437编码,ISO8859-1编码,CP936编码

Kernel modules > Native Language Support > <*> kmod-nls-cp437

Kernel modules > Native Language Support > <*> kmod-nls-iso8859-1

Kernel modules > Native Language Support > <*> kmod-nls-utf8

make kernel_menuconfig

File systems  --->  Native language support  ---> 

     Codepage 437 (United States, Canada) 

     Simplified Chinese charset (CP936, GB2312)

保存退出

package\kernel\linux\modules\nls.mk中参考 nls.mk 的 nls-437添加如下的内容(使用find ./ -name nls.mk或者grep找文件)

define KernelPackage/nls-cp936 SUBMENU:=Native Language Support TITLE:=Simplified Chinese charset (CP936, GB2312) KCONFIG:=CONFIG_NLS_CODEPAGE_936 FILES:=$(LINUX_DIR)/fs/nls/nls_cp936.ko AUTOLOAD:=$(call AutoLoad,25,nls_cp936) $(call AddDepends/nls) endef define KernelPackage/nls-cp936/description Kernel module for NLS Codepage 936 (CP936, GB2312) endef $(eval $(call KernelPackage,nls-cp936))

在这之后就会在同样的模块下有cp936的选项,选择编译进内核(据说能这是支持中文的字库,但是我这里没有什么反应)

Kernel modules > Native Language Support > <*> kmod-nls-cp936

9).其他

Utilities  ---> disc ---> <*> fdisk.................................... manipulate disk partition table##fdisk分区工具

Utilities  ---> <*> usbutils................................... USB devices listing utilities

Utilities  ---> Filesystem > <*> ntfs-3g.................................... Stable Read/Write NTFS Driver

退出保存

说明:板子升级固件之后,用一个HUB插上USB声卡和U盘,在/dev/目录下看到 dspaudiomixer 文件,则说明已经驱动添加成功,有sda、sda1说明U盘已经加载成功

10). 添加播放器(播放器有两个可选)

madplay

Sound ---><*> madplay................................. MPEG audio player in fixed point

Libraries  ---> <*> libiconv

Libraries  --->  -*- libmad............. An high-quality MPEG audio decoding library ##默认已选

Madplay简单使用方法如下:

madplay 1.mp3 2.mp3  //1.mp3 2.mp3加入列表,保证下一曲可用

-v  获取播放时间     //实时显示播放时间 eg: madpaly -v ***.mp3

-q  不存在任何打印,但现实警告  //快捷键会失效。

-Q  不存在任何打印

--downsample  只采用一半数据

-i  忽略CRC校验错误

-o PATH/xx.wav 可以用来转码,将mp3转为wav //转化之后是乱的。

  也可以是其他格式,见说明;.raw  表示是元素pcm.hex

-a 开启衰减音量,增加音量,衰减系统为-175~+18 (可以通过键盘—调整音量,有延时)

-A -a //在实际板上发现,效果出来的很慢。

-1 -2 -m -S 分别指左声道,右声道,双声道,立体声

-s  用于seek播放 如:0:1:20:11 seek1小时,2分钟,11秒时开始播放 //也可以直接写上秒数,比如 mad play -s 40 ***.mp3

-t  用于播放时间现在  0:1:20:11 ,播放到1小时,2分钟,11秒时就停止

-z  用于随机播放列表

-r, --repeat[=MAX]   循环播放无限次或Max次 

    --tty-control            enable keyboard controls  默认是使能热键

    --no-tty-control         disable keyboard controls

 -T, 只显示文件ID3

 -V, madplay 版本

热键使用

下一首歌曲 f 

上一首歌曲  b

退出:q, Q

获取播放状态信息: i  

调节音量: - + _ =

暂停恢复:p

停止:s

mpd

添加mpd-full播放器

 Libraries  ---><*> libffmpeg-full................................... FFmpeg libraries (full)

 Libraries  ---><*> libffmpeg-mini................................... FFmpeg libraries (mini)#可用

Multimedia  ---> < *> ffmpeg.................................................... FFmpeg program#添加之后固件过大

##在以上三项中,必须选中至少一项才有mpd-full选项

Sound --->< *> mpd-full...................................... Music Player Daemon (full)

添加mpd-mini,不依赖FFmpeg

Sound ---><*> mpd-mini...................................... Music Player Daemon (mini)#播放器

Sound ---> <*> mpc................................... Music Player Daemon Console Client#控制器可不选

注:mpd-full支持mp3,mms网络电台,http流媒体播放,但是需要ffmpeg的支持

mpd-mini只支持MP3(我是选择的mpd-mini)

在板子上的配置/etc/mpd.conf(可以先参考原配置说明,备份,echo > /etc/mpd.conf,用vi添加如下内容)

说明:/mnt/sda1/U盘自动挂载的目录,后面的目录都是在U盘中自己手动创建的

audio_output{ }为输出配置,根据自己板子在/dev/下面的设备不同而定

music_directory "/mnt/sda1/music" playlist_directory "/mnt/sda1/.mpd/playlists" db_file "/mnt/sda1/.mpd/database" log_file "/mnt/sda1/.mpd/log" pid_file "/var/run/pid" #state_file "/mnt/sda1/.mpd/state" sticker_file "/mnt/sda1/.mpd/sticker.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 "software" mixer_device "/dev/mixer" mixer_control "PCM" } audio_buffer_size "2048" buffer_before_play "100%" 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"

在添加mpd后在板子上启动该服务 /etc/init.d/mpd start,启动该服务之后会自动调用mpd进程,有些教程里面还要手动启动mpd是错误的,如果执行mpd报错

socket: Failed to bind to '0.0.0.0:6600': Address already in use

如果是这样的错就换一个端口就可以了,如换成6602什么的,但是这样操作的话本身就是错误的,我只是对自己犯的错做一下记录(使用netstat -nl查看端口信息)。

设置为开机启动服务/etc/init.d/mpd enable

有了该服务才能保证手机终端能够连接板子进行控制,在这个服务成功执行后,会有一个后台服务进程

 

11).安装和使用MPDroid

Android应用市场区下载MPDroidapp,可惜没找到,这是我从别人那里拿过来的

http://pan.baidu.com/s/1qWlZlec(百度网盘下载app)(下面为参考教程)

http://www.leiphone.com/news/201406/diy-a-smart-router-topic-androidbox.html

小度路由madplay和mpd本地音乐播放器_第1张图片    小度路由madplay和mpd本地音乐播放器_第2张图片   小度路由madplay和mpd本地音乐播放器_第3张图片      小度路由madplay和mpd本地音乐播放器_第4张图片   小度路由madplay和mpd本地音乐播放器_第5张图片   小度路由madplay和mpd本地音乐播放器_第6张图片

打开MPDroid会自动连接板子,连接不上会有提示弹出,点击【setting

  1. 选择【Default connection settings(不要用【WLAN based connection】设置之后还是连不上)
  2. 填写【Host】板子的IP地址,【portmpd.conf里的port端口值,其他项默认
  3. 返回到主页,进到【file】项,看有没有获取到文件列表,如果没有列表就再多等等,这个app不怎么好用,如果获取到了文件列表,长按一个文件名,会有下面的选项弹出来
  • add 增加到当前播放列表add and replace 增加到当前播放列表并且替换掉列表中其他的
  • add, replace and play 增加到当前播放列表,并且替换掉其他的,并且立即播放
  • add and play 增加播放
  • add to playlist 增加到一个列表文件(列表文件,跟当前播放列表不是一个意思,列表文件表示存在路由器上的

        4.  操作完成之后,退回到当前播放的界面上,如上图。

移植之后存在的问题说明及解决办法:

1.在播放的音乐文件中出现过乱码,开始以为是不支持中文,换了歌曲就没问题了

2.最开始播放每一首歌曲的开始5秒内会出现频繁的卡顿,这是因为在设置【buffer_before_play "100%"】这个选项的时候没有调成100%的加载;

3.手机上不能控制音量大小,修改【mixer_type "software"】把这个控制器由hardware改为software;

4.调节音量之后,大约7秒后才能在音响中有效果,没办法;

5.添加了新的歌曲不能自动刷新播放列表,需要手动删除/etc/sda1/.mpd/log datebase这些文件,重启之后才能加载新增的歌曲,就算添加了【auto_update "yes"】也没解决;

6.在设置【max_connections "4"】选项时,数值要大于1,不能填写1,否则手机连不上的,可能还有mpc要用一个连接;

7.使用MPDroid的时候,需要在【File】项中一首歌一首歌的添加到播放列表,过一会儿在【Playlist】下才有你新建的播放列表,在播放列表中点击某一首歌不会马上播放,会添加到播放队列中,回到正在播放页面,右滑会有播放队列,在播放队列中点击某一首歌才能直接播放;


你可能感兴趣的:(openwrt)