基于Symbian 平臺的流媒體播放器設計與實(shí)現
歌曲的下載分兩步來(lái)實(shí)現。首先把要搜索的歌曲名字用HTTP 引擎發(fā)送到服務(wù)器,服務(wù)器返回XML 格式的文件給客戶(hù)端。該XML 文件包含了搜索到的歌曲名字、下載地址、音頻文件格式和大小等信息??蛻?hù)端用Symbian 自帶的XML 解析器對文件進(jìn)行解析,把解析后的歌曲信息存放在數組里。
每個(gè)數組的元素為自定義的結構體,包含歌曲名,下載地址等內容。
解析完畢后,切換到列表界面。列表界面顯示剛下載的XML 文件的解析結果。用戶(hù)可以根據自己的喜好選擇要下載的歌曲。此時(shí),客戶(hù)端提取出歌曲下載的地址,用封裝好的HTTP 引擎向服務(wù)器發(fā)送下載請求??蛻?hù)端首先判斷待下載的文件是否已存在,如果不存在,則使用HTTP 引擎普通下載模式下載音頻文件。如果待下載的文件已存在,則獲得現有文件大小,并把它作為參數傳給HTTP 引擎,發(fā)送到服務(wù)器端,實(shí)現斷點(diǎn)續傳。具體代碼如下:
3. 3 歌詞同步
首先在用戶(hù)終端進(jìn)行本地搜索與正在播放的音樂(lè )文件名字相同的歌詞文件。若搜索到符合條件的文件,則對其進(jìn)行解析。把文件的每一行內容作為一個(gè)數組單元存放在數組里,數據的單元包括有播放時(shí)間和歌詞內容。由CMdaAudioPlayerUtility 類(lèi)的GetPosition( ) 函數獲得當前音頻文件的播放位置,與數組中記錄的歌詞文件的時(shí)間做對比,來(lái)實(shí)現歌詞同步。若沒(méi)有搜索到歌詞文件,則用歌詞下載引擎從服務(wù)器下載并解析。
4 軟件實(shí)現及效果
根據播放器的整體架構設計,在Symbian 平臺上實(shí)現音樂(lè )媒體播放器,并在實(shí)際的移動(dòng)通信網(wǎng)絡(luò )中進(jìn)行了測試。測試環(huán)境是中國移動(dòng)GPRS /EDGE網(wǎng)絡(luò )。測試手機為Nokia N95,操作系統為V9. 2,用戶(hù)界面為S60 第三版。其ARM 主頻11 332MHz,內存160MB。在真機上進(jìn)行測試時(shí),本地音頻文件播放流暢。而播放在線(xiàn)電臺的內容時(shí)( 即流式播放) ,其效果會(huì )受到網(wǎng)絡(luò )狀況的制約,但整體比較流暢。
播放器在真機上的效果如圖4 所示。其中( a) 顯示的是播放器的功能菜單,( b) 為本地播放和歌詞同步的效果,( c) 顯示流式播放時(shí)連接服務(wù)器的狀態(tài),( d) 為連接服務(wù)器成功后流式播放的效果,界面上可以顯示當前的連接速度、音頻文件的格式、流量等。
( a) 播放器功能菜單( b) 本地播放和歌詞同步的效果( c) 流式播放時(shí)連接服務(wù)器的狀態(tài)( d) 連接服務(wù)器成功后流式播放的效果
圖4 軟件效果圖
5 結束語(yǔ)
MMusic 音樂(lè )播放器很好的實(shí)現了音頻播放、音樂(lè )下載、歌詞同步等功能。在此基礎上,還可以增加一些音頻的效果,使用戶(hù)有更好的視聽(tīng)感受。同時(shí)在歌詞同步方面,程序還可以增加調整歌詞的功能,當出現歌詞不同步時(shí),用戶(hù)可以根據實(shí)際情況進(jìn)行調整。
評論