Android系統WMA文件播放功能的設計與實現
WMA音頻解碼主要是在WMADecoder的read函數中完成的:首先,先會判斷是否是音樂定點播放,如果不是,WMADecoder會調用WMAExtrac-tor的read函數讀取一個未解碼的數據包;然后,對該數據進行解碼,將解碼后的音頻數據存放在MediaBuffer的Data()中,再設置MediaBu-ffer的mRangeOffset和mRangeLength,在讀取數據包時會從包中獲取該數據包中的時間戳,把該時間戳存放在MediaBuffer的Meta_ data()中的kKeyTime里;最后,WMAdecoder把該MediaBuffer傳回給AudioPlayer。如果是音樂定點播放,首先,WMADecoder會從AudioPtayer傳過來的ReadOption中獲取播放時間(option->getSeekTo(seekTimeUs,mode)),在調用WMASource的read函數來讀取未解碼音頻數據時會把該時間(seekTimeUs)傳給WMASource。WMASource的read函數獲取到該時間后,通過計算得出該時間要播放的音頻數據包的起始位置,然后讀取該數據包并傳給WMADecoder對其進行解碼,最后將該解碼后的音頻數據傳給AudioPlayer。
3 實驗結果
基于Android平臺的多媒體系統進行設計的WMA音頻播放,在Android多媒體框架的本地實現核心Stagefright框架里,添加WMA音頻格式。實現Android對WMA音頻格式的支持,使Android手機可以播放WMA音頻格式的文件。經過實際測試,播放效果達到了預期的要求,聲音清晰、音質好。圖4為增加WMA音頻播放模塊后Android源碼編譯結果的截圖。圖5為播放WMA格式文件時對播放界面的截圖。圖6為拉動滾動條后正常運行的截圖。本文引用地址:http://www.104case.com/article/194616.htm
4 結束語
基于Android多媒體模塊中的Stagefright框架,在智能手機上實現了對WMA音頻格式的支持,使Android智能手機可以播放WMA音頻格式的媒體文件或流媒體。該設計在現有基礎上實現了對Android操作系統中多媒體系統功能的增強。目前Android平臺手機仍然不支持RMVB、WAV等視頻格式,所以Android多媒體系統的功能還需繼續增強和擴展。
c++相關文章:c++教程
評論