摘要:作為Java 2平臺的微型版,J2ME已經(jīng)成為一項(xiàng)相當(dāng)成熟的技術(shù),它可與很多技術(shù)融合,如MPEG、RTP、RTCP等。文章重點(diǎn)討論利用現(xiàn)在的J2ME、MPEG及相應(yīng)的流媒體技術(shù),開發(fā)移動設(shè)備終端的媒體播放器。
關(guān)鍵詞:J2ME;MPEG;RTP;RTCP
引言
技術(shù)和計算機(jī)技術(shù)的迅猛發(fā)展,使得人們對手持設(shè)備的應(yīng)用有了更高的要求,人們已不滿足于簡單的通話,收發(fā)短信等基本功能,而更多的是要求有多媒體應(yīng)用,能利用手機(jī)進(jìn)行上網(wǎng)沖浪,3D游戲,播放視頻等。即將來臨的第三代無線網(wǎng)絡(luò)將會提供從每秒幾百K bit到幾兆bit不等的數(shù)據(jù)傳輸率,從而將會有足夠的帶寬來傳輸實(shí)時視頻信號和高質(zhì)量的音頻信號,并允許下載大量的應(yīng)用和服務(wù)軟件。
目前,智能手機(jī)的開發(fā)平臺主要有:J2ME、BREW和NET。
1 J2ME的體系結(jié)構(gòu)
當(dāng)Java的版本演進(jìn)到Java 2時,Sun公司將Java 2技術(shù)重新改組成四個不同的版本:針對開發(fā)企業(yè)服務(wù)應(yīng)用的J2EE(Java 2 Enterprise Edition)、針對普通PC的J2SE(Java 2Standard Edition)、針對嵌入設(shè)備及消費(fèi)類電子產(chǎn)品的J2ME(Java 2 Micro Edition)和智能卡開發(fā)的Smart Card。
J2ME將所有的嵌入式設(shè)備大體分為兩種:一種是運(yùn)算功能有限且電力供應(yīng)也有限的嵌入式設(shè)備,另一種是運(yùn)算能力相對較佳且電力供應(yīng)比較充足的嵌入式設(shè)備。Java引入了“配置”(configuration)概念,把上述第一種定義為有限連接設(shè)備配置CLDC(Connected Limited Device Configuration),第二種定義連接設(shè)備配置CDC(Connected Device Configuration)m。
MIDP是Mobile Information Device Profile的簡稱,它是CLDC之上,由全球主要手機(jī)開發(fā)商(如摩托羅拉等)組成。MIDP專家組制定了移動信息設(shè)備架構(gòu)MIDP,它和CLDC同屬于J2ME,用于支持小型信息設(shè)備(手機(jī)、PDA等)的編程。
所有的MIDP應(yīng)用程序都繼承自Javax.microedition.midlet對MIDlet的擴(kuò)展,這也是應(yīng)用程序稱之為MIDlet的原因。MIDlet在移動設(shè)備上運(yùn)行的完整過程,就是一個M1Dlet狀態(tài)轉(zhuǎn)換的過程。MlDlet的主要狀態(tài)包括:暫停、運(yùn)行、退出。在MIDP的Javax.microedition.midlet包中定義了完整的接口來控制MIDlet狀態(tài)的轉(zhuǎn)換。
2 系統(tǒng)的分析與設(shè)計
本項(xiàng)目是手機(jī)的一個播放器系統(tǒng),能夠在任何時間、地點(diǎn)實(shí)現(xiàn)多媒體音頻與視頻的播放。本系統(tǒng)只能播放MPEG格式的視頻文件與WAV格式的音頻文件,這是底層開發(fā)包所決定的。
本系統(tǒng)具有以下幾個功能模塊:
(1)視頻(MPEG格式)播放模塊。主要采用兩種播放形式:本地播放與網(wǎng)絡(luò)播放。本地播放:直接播放手機(jī)存儲器里的視頻文件;網(wǎng)絡(luò)播放:調(diào)用播放網(wǎng)絡(luò)服務(wù)器里的視頻文件,它在空間上延伸了intemet網(wǎng)絡(luò)服務(wù),在時間上更具有靈活性。
(2)音頻(WAV格式)播放模塊。采用兩種播放形式:本地播放與網(wǎng)絡(luò)播放。本地播放:直接播放手機(jī)存儲器里的音頻文件;網(wǎng)絡(luò)播放:調(diào)用播放網(wǎng)絡(luò)服務(wù)器里的音頻文件,它在空間上延伸了internet網(wǎng)絡(luò)服務(wù),在時間上更具有靈活性。
(3)抓圖模塊。在播放本地與網(wǎng)絡(luò)視頻時,可以隨時抓取感興趣的圖像。
(4)控制模塊。在播放音頻與視頻的同時,有一些基本的控制功能,比如:播放,停止,暫停,增加音量,減小音量等。
圖1所示流程說明如下:系統(tǒng)開始執(zhí)行時,首先出現(xiàn)一個輸入界面,要求用戶輸入:要訪問的文件所在的服務(wù)器IP地址和文件的全稱。當(dāng)輸入完成之后,系統(tǒng)根據(jù)所輸入的服務(wù)器IP地址判斷是本地IP還是網(wǎng)絡(luò)IP,再播放被訪問的對象。
圖2是一個本地播放視頻或音頻文件的流程圖。系統(tǒng)首先生成一個等待WaitCanvas的對象,之后生成一個等待界面,然后生成一個VideoCanvas對象,用VideoCanvas對象打開用戶所輸入的URL。URL里包括IP地址,端口號(8080)以及被訪問的文件名。如果打開成功則系統(tǒng)進(jìn)行播放;如果失敗,結(jié)束程序。最終關(guān)閉MIDlet程序。
圖3所示流程說明:系統(tǒng)首先生成一個WaitCanvas 對象,繼而生成一個等待界面,然后生成一個VideoCanvas對象,用VideoCanvas生成的對象打開用戶輸入的URL。URL里包括IP地址,端口號(8080)以及被訪問的文件名。如果打開成功,系統(tǒng)進(jìn)行播放;如果失敗,結(jié)束程序。最終關(guān)閉MIDlet程序。
3 客戶端的實(shí)現(xiàn)
手機(jī)客戶端MIDlet的設(shè)計是本課題的重點(diǎn),是實(shí)現(xiàn)本地與無線播放器應(yīng)用的關(guān)鍵。客戶端MIDlet需要解決的關(guān)鍵問題有:MIDlet程序流程控制,界面開發(fā),準(zhǔn)確提交用戶請求等。根據(jù)需求分析,本項(xiàng)目終端支持系統(tǒng)的客戶端主要面向多媒體手機(jī)用戶。下面將針對這類客戶的需求介紹手機(jī)客戶端MIDlet的開發(fā)過程和主要解決的問題。
3.1 客戶端流程設(shè)計
流程說明:系統(tǒng)首先啟動MIDlet,用戶輸入所要訪問服務(wù)器的IP和所要播放文件的全稱。如果輸入錯誤,均需重新輸入;如果輸入正確,進(jìn)行下一個操作。系統(tǒng)根據(jù)所輸入的IP地址判斷并進(jìn)行本地播放或網(wǎng)絡(luò)播放。在播放視頻與音頻的過程中,用戶可以進(jìn)行一系列的操作,比如抓圖等。
3.2 MIDLET主程序的設(shè)計與實(shí)現(xiàn)
MIDP應(yīng)用程序的基本執(zhí)行單元是MIDlet,所以ControlVideo繼承了MIDlet,并使用了以下幾個方法:startApp( ),pauseApp( ),destroyApp( ),commandAction( )以及一個線程PlayImage。主程序所實(shí)現(xiàn)的主要功能是,形成—輸入界面,這個界面讓用戶輸入URL。URL里面包含訪問計算機(jī)的IP,端口號及所要訪問的播放文件全稱。此外,在界面上還要設(shè)置幾個按鈕,比如開始、退出。這是由commandAction( )來控制的,它還控制整個程序的運(yùn)行,根據(jù)用戶輸入打開URL,對播放文件進(jìn)行控制等等。
3.3 播放控制的設(shè)計與實(shí)現(xiàn)
播放控制程序VideoCanvas繼承Canvas,使用了以下幾個方法:VideoCanvas( ),initialize( ),paint( ),time2pix( ),open( )等。它主要實(shí)現(xiàn)的功能是:對播放的視頻或音頻文件進(jìn)行一系列的操作比如播放,停止,暫停,增加音量,減小音量。
3.4 播放文件判斷的設(shè)計與實(shí)現(xiàn)
這里主要是設(shè)計一個單獨(dú)的類,名稱為VideoType,它先從用戶輸入的URL分析用戶輸入的信息,從中分離出輸入的IP地址,端口號以及文件的名稱,再判別用戶輸入的文件的類型。程序用到以下幾個方法:guessContentType( ),splitURL( )。
3.5 網(wǎng)絡(luò)連接等待界面的設(shè)計與實(shí)現(xiàn)
等待界面的名稱是WaitCanvas,它繼承了Canvas類。它的主要功能是:當(dāng)用戶輸入IP地址,手機(jī)在連接服務(wù)器的時候,可能會有一個過程,這時出現(xiàn)一個等待界面。程序用到有以下幾個方法:WaitCanvas( ),void setMessage( ),paint( )。
4 結(jié)束語
本文深入研究了J2ME體系結(jié)構(gòu)及其平臺下手機(jī)程序MIDP的開發(fā)技術(shù),詳細(xì)分析了本地終端與無線終端和資源的通信解決方法,并構(gòu)造了一個ZJ手機(jī)多媒體播放器系統(tǒng),通過該系統(tǒng),說明了MIDP應(yīng)用程序開發(fā)的流程控制,界面設(shè)置與流媒體和視頻壓縮技術(shù)。