天天看點

【硬創邦】跟hoowa學做智能路由(十三):網絡音箱之Android篇

  我們繼續網絡音箱的專題,這章将介紹安卓系統下的mp标準軟體控制路由器播放音樂。

mp全稱為音樂播放程序(music player daemon)。它是一個可定制化功能強大的服務端播放音樂軟體,通過其自身的插件和庫系統即可完成通過網絡控制播放音樂。mp具備一個自己的控制管理協定,這些協定是基于tcp協定進行傳輸的。用戶端連接配接到伺服器上控制服務端進行處理。mpd表示服務端,mpc表示用戶端。

mp是一個完全開放源代碼的整體系統,是以有很多作業系統下的用戶端,在安卓手機中即可使用mpdroid這個軟體控制服務端播放,而如果您需要開發自己的産品,完全可以參考官方的資料自己開發一個控制程式,甚至給服務端增加新的功能。

使用mp的好處是,隻要你的手機連接配接到家裡的路由器上既可以控制播放音樂,而手機還随身攜帶,這樣不影響你掃地啊、煮飯啊等等工作是不是。

mp的官方網站為http://www.musicpd.org/

首先確定你12章的測試和操作ok聲霸卡已經正常工作了。

然後開始安裝軟體包,我們教程中使用的是mpd-mini該軟體包是mpd的openwrt精簡版完成了主要的功能,而且也比較節省cpu和記憶體。

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

第一步: 建立必須的檔案夾,在這一步,我們選擇使用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目前沒有基于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"

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軟體後會顯示要求配置:

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期望有識之士能做一個更完美的用戶端項目。是以如果有願意做這方面的朋友,請不要吝啬,加入我們吧。

繼續閱讀