您好,登錄后才能下訂單哦!
小編給大家分享一下Mobile Media API有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Mobile Media API
(MMAPI)為多媒體開發提供了一個強大,可擴充以及簡單的接口。它有一套規范的播放和錄制audio
或video的接口。這篇文章是MMAPI概念的一個概觀以及其類和接口使用的一個快速教程。
Mobile
Media
API的體系結構
MMAPI基于四個基本概念:
1。一個player知道如何去解釋媒體數據。舉個例子,某種類型的player知道如何根據mp3媒體數據產生聲音。另外一個player
知道如何播放一端QuickTime的movie。javax.microedition.media.Player接口的實現(implement)既是這里說的player。
2。你能用一個或多個controls來調整player的行為。你可以在player從媒體轉換數據的時候從一個player實例
取得并且使用controls。比如,你能用一個VolumeControl來調節一個采樣音頻的聲音大小。
Controls是javax.microedition.media.Control接口的實現。詳細的Control子接口在javax.microedition.media.control包中
3。一個data
source知道如何從它的原始位置讀取到媒體數據給player。媒體數據可以被保存在不同的位置,從遠程服務器到
資源文件或者RMS數據庫。媒體數據可以從原始位置通過HTTP,像RTP一樣的流式傳輸協議,或者其他機制傳輸到player。
javax.microedition.media.protocol.DataSource是MMAPI中所有data
source類的抽象父類。
4。最后,manager把每一個部件捆綁起來,并且為API提供了切入點。javax.microedition.media.Manager
類包含了
得到Player或DataSource的靜態方法。
使用MMAPI
你能使用Manager做到的最簡單的事情是用下面的方法播放一段樂音(tone):
public
static void playTone(int note,
int duration, int volume) throws
MediaException
播放時間按毫秒定義好,音量范圍則從0(無聲)到100(最大聲)。音符用一個數字定義,像MIDI一樣,60代表中音C調,
69則是一個440赫茲的A調。音符的范圍可以從0到127。playTone()方法適合播放一個單一的音調或是很短的模進音。
更長的單聲道模進音,你可以用默認的樂音播放器,它可以播放一全部模進樂音。
MMAPI最迷人的的地方體現在Manager的createPlayer方法上,該方法有如下三個不同的版本:
public
static Player createPlayer(String locator)
throws IOException,
MediaException
public static Player createPlayer(DataSource source)
throws
IOException, MediaException
public static Player createPlayer(InputStream
stream, String type)
throws IOException,
MediaException
得到一個Player最簡單的方法是使用第一個createPlayer方法,僅僅傳遞一個代表媒體數據的字符串就可以了。
舉個例子,你可以指定一個網站上的音頻文件:
Player
p =
Manager.createPlayer("http://webserver/music.mp3");
其他createPlayer方法允許你從一個DataSource或一個InputStream流創建Player。如果你考慮使用Player,
這三個方法是真正的三種不同的方式取得media數據。一個InputStream是個最簡單的對象,僅僅是一個字節流。而DataSource
就更高級了點,是一個選擇協議去訪問媒體數據的對象。傳遞一個位置字符串是個最好的捷徑:MMAPI會搞清楚用何種協議并
為player取得媒體數據。
如何使用Player
一旦你成功建立了一個Player對象,下一步該做些什么呢?最簡單的行動就是開始用start方法重放。然而,只是為了學到比入門
更深層次的東西,這有利于幫助理解一個Player的生命周期。這個周期由四個狀態組成。
當一個Player第一次被建立,它的狀態是UNREALIZED。在為這個Player設置了媒體數據的位置以后,它的狀態是REALIZED。
如果Player正在從一個服務器的HTTP連接下載并解釋數據的時候,比如Player在Http請求已經發送到服務器,收到HTTP
響應后,而且DataSource準備好接收audio數據的時候。下一個狀態是PREFETCHED,獲得該狀態的時機是該player已經讀到
足夠的數據而開始解釋和運算了。最后,當數據在運算完畢后,Player的狀態變成了STARTED.
Player接口提供了狀態轉換的方法,在狀態循環中,無論前進還是后退都有描述。其原因是為了提供給應用程序一個可操作控制。
控制可能會占用一段時間。舉個例子,你可能要將Player的REALIZED狀態推到PREFETCHED狀態,為了一段聲音可以馬上播放,以響應
用戶的操作。
在java
Platform的MMAPI
MMAPI在在java 2
platform中適用于什么樣的情況呢?答案是幾乎任何地方。盡管當初MMAPI的設計僅僅是基于CLDC,但它可以
在
CLDC和CDC軟件上都可以運行得很好。事實上,MMAPI可以作為輕量選擇用j2se實現到java media
Framework。
可以支持那些類型的Media文件?
如果你的裝置支持MMAPI的話,那么這個裝置可以播放什么類型的媒體數據呢?支持什么數據傳輸協議?MMAPI并不要求任何指定
的content
type或協議,但你能在運行時找出程序支持什么類型的數據,通過調用Manager類的getSupportedContentTypes()
方法和getSupportedProtocols()方法。
可能發生的最糟糕的事情是什么呢?如果你通過Manager給Player一種不支持的數據類型或協議,它會拋出個exception。
你的程序應該試圖去從這樣的例外中恢復過來,可以顯示些禮貌的信息提示給用戶。
MIDP
2.0的媒體
MIDP 2.0規范包括了一個MMAPI的子集。它向上兼容所有API。MIDP
2.0子集有如下特性:
1。只支持音頻回放(錄制)。不包含video控制接口。
2。多Player不能被同步
3。DataSource類和javax.microedition.media.protocol包的其他類沒有被包括進來;
應用程序不能實現他們自己的協議。
4。Manager類是被簡化的。
MIDP要求支持樂音產生和采樣,WAV音頻播放。
以上是“Mobile Media API有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。