摘要: 本文的重點是討論利用現在的J2ME、MPEG及相應的流媒體技術,開發出移動設備終端的媒體播放器,主要論述了手機多媒體播放器的播放與控制的設計與研究。
關鍵詞: J2ME 設計與分析 播放與控制
1.引言
隨著通信技術和計算機技術的迅猛發展,3G時代的到來,人們對手持設備的應用有了更高的要求,人們已不滿足于簡單的通話、收發短信等基本功能,而更多的是要求有多媒體應用,能利用手機進行上網沖浪、3D游戲、播放視頻等。
2.J2ME技術介紹
J2ME平臺存在的基礎是設備使用操作系統的多樣性。雖然JAVA的運行速度經常受到指責,但手機平臺的發展已經使得這種缺陷可以忽略,而J2ME適用平臺的多樣性使得J2ME技術成為手機應用開發的首選。它的主要技術優勢在于:有良好的跨平臺能力,實現了write once,run anywhere,有著與J2EE后端的無縫結合能力。因為J2ME是基于Java語言的,所以它天生就具有以下優點:
·動態內容傳輸。新的應用、服務和內容可以通過不同類型的網絡動態下載。
·安全。類文件校驗、明確定義的應用程序編程接口和安全組件確保了第三方應用程序的行為是可靠的。不會對設備或者網絡造成損害。
·交叉平臺的兼容性。標準化語言組件和庫意味著由于支持J2ME配置和簡表所帶來的約束使應用和內容可以在不同設備之間靈活地傳輸。
·離線獲取。不用激活網絡連接,應用就可以被使用。這種特點降低了傳輸費用,減輕了可能的網絡故障帶來的影響。
3.系統的設計與分析
3.1目前存在的問題
隨著通信技術和計算機技術的迅猛發展,人們對手持設備的應用有了更高的要求,人們已不滿足于簡單的通話、收發短信等基本功能,而更多的是要求有多媒體應用,能利用手機進行上網沖浪、3D游戲、播放視頻等。移動設備通過網絡觀看視頻將是必備的功能。目前的城市的網絡覆蓋率比較好。
在這種情況下,多媒體播放器在設計與實現中存在一些問題:
3.1.1由于多媒體手機在硬件性能上與PC機有著顯著的差異,在多媒體手機上播放的視頻短片的比特率要遠遠低于PC機上的,所以在設計多媒體手機時要受到多媒體手機硬件與操作系統的影響。
3.1.2現在多媒體手機外接的存儲卡容量不是很高,當你在旅行的過程中或者在移動的過程中,因為你的存儲卡的容量有限,所以你只能看少量的影音文件。
3.1.3現在多媒體手機在播放視音頻文件的過程中,如果看到自己喜歡的圖片,無法保存下來,作為永久的珍藏。
3.1.4如何設計一款全新的多媒體播放器,為將來的多媒體移動服務打下堅實的基礎。
3.2對目前系統的改進
本項目是一個關于手機播放器的系統,通過移動終端手機能夠實現在任何時間、地點進行多媒體音頻與視頻的播放,本項目在空間上延伸了基于Internet的網絡服務,在時間上更具有靈活性。本系統只能播放格式為MPEG的視頻文件與格式為WAV的音頻文件,這是由底層的開發包所決定的。
本項目具有以下幾個功能模塊:
3.2.1視頻(主要是MPEG格式)的播放模塊。播放形式主要采用兩種形式:本地播放與網絡播放。本地播放也就是所謂的視頻文件在本地手機存儲器里,直接進行播放,網絡播放主要是視頻文件放在網絡服務器,手機進行調用播放。它在空間上延伸了Internet的網絡服務,在時間上更具有靈活性。
3.2.2音頻(主要是WAV格式)的播放模塊。播放形式主要采用兩種形式:本地播放與網絡播放。運行方式與視頻播放模塊相似。
3.2.3抓圖模塊。在進行播放本地與網絡視頻時,當你認為一個視頻的瞬間你很喜歡,你就可以進行抓圖,把它截取下來。
3.2.4控制模塊。在進行播放音頻與視頻的同時,有一些基本的控制功能,比如播放、停止、暫停、增加音量、減小音量等。
4.播放與控制的設計與實現
它主要是由VideoCanvas繼承Canvas,并有以下幾個方法:VideoCanvas(),initialize(),paint(),time2pix(),open()等。它主要實現的功能是:對播放的視頻或音頻文件進行一系列的操作,比如播放、停止、暫停、增加音量、減小音量等。

以下是主要的代碼:
public class VideoCanvas extends Canvas implements Runnable,PlayerListener,{//在框架中添加videocanvas類的構造函數,初始構造函數,初始化屏幕}
private void initialize(){//添加返回按鈕}
public void paint(Graphics g){//只有播放視頻的時候可以使用全屏}
private int time2pix(long time){//計算時間的字符串格式}
public void open(String url){//分析打開資源的URL}
public void start(){//獲得視頻時間長度}
public void close(){//關閉程序}
public void pause(){//首先判斷player對象是否已經創建了,如果存在player點}
public synchronized void pauseApp(){//player正在播放,所以停止它并且釋放資源}
public void run(){//獲得播放視頻所需要的時間}
public void playerUpdate(Player plyr,String evt,Object evtData){//是否播放結束}
private void doSnapshot(){//進行抓圖功能}
protected void pointerPressed(){//更改滑桿上面的小方塊的位置,然后請求重畫屏幕}
public void commandAction(Command c,Displayable s){//控制播放}
public synchronized void startApp(){//開啟程序}
public void keyPressed(int keyCode){//利用手機里的按鍵進行一些操作}
switch(keyCode){
case Canvas.KEY_NUM4://減小播放速度
case Canvas.KEY_NUM6://增加播放速度
case Canvas.KEY_STAR://減小音量
case Canvas.KEY_NUM0://靜音
case Canvas.KEY_NUM7://向后跳躍,即快退
case Canvas.KEY_NUM5://停止播放
case Canvas.KEY_NUM9://向前跳躍
case Canvas.KEY_NUM2://暫停,播放
case Canvas.KEY_NUM8://全屏,目前不支持
case Canvas.KEY_NUM1://沒有發揮作用
case Canvas.KEY_NUM3://跳過}
5.結語
本文研究的重心在于探討利用流媒體技術使手機播放器中本地與網絡(無線)終端MIDP應用開發技術的解決方法及資源的網絡通信、信息整合問題。本文中深入研究了J2ME體系結構及其平臺下手機程序MIDP的開發技術,詳細分析了本地終端與無線終端和資源的通信解決方法,并構造了一個手機多媒體播放器系統。本文設計與開發了播放與控制,通過該系統,完整說明了MIDP應用程序開發的流程控制、界面設置與流媒體和視頻壓縮技術。本系統還會不斷地改進,實現更廣、更新、更實用的功能,以適應時代的需求。
參考文獻:
[1]吳一丁.J2ME技術在移動設備上的應用.java研究組織,2005.
[2]黃寶雄.流媒體技術.中國多媒體視訊,2005.
[3]劉雄武.移動流媒體技術及其應用發展方向.CSDN,2005.06.
[4]王千祥.應用服務器原理與實現.電子工業出版社,2003.
基金項目:浙江商業職業技術學院基金資助學院重點項目(SZYZD08005)