亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2375 | 回復(fù): 0
打印 上一主題 下一主題

Java媒體架構(gòu)基礎(chǔ):Framework Basics [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-01-18 16:11 |只看該作者 |倒序?yàn)g覽
第一節(jié). 關(guān)于此指南
  
  此指南包含的內(nèi)容?
  
  Java媒體架構(gòu)(JMF)是一個(gè)令人激動(dòng)的通用的API,它允許Java開(kāi)發(fā)者用許多不同的方法處理媒體。本指南主要通過(guò)使用工作的例子提供一個(gè)
JMF的一些主要的特征的概述。閱讀完本指南后,你將會(huì)明白JMF體系結(jié)構(gòu)中的主要播放功能。你同樣能正確的使用JMF,使用現(xiàn)存的例子和可為更多特殊功
能擴(kuò)展的源代碼。
  
  本指南包含著以下主題:
  
  · 下載和安裝JMF
  · 主要的JMF類以及它們?cè)贘MF體系結(jié)構(gòu)中的應(yīng)用
  · 播放本地的媒體文件
  · 為媒體的存取和操作制作以和圖形用戶界面(GUI)
  · 通過(guò)網(wǎng)絡(luò)傳播媒體
  · 通過(guò)網(wǎng)絡(luò)接收媒體
  
  幾乎所有的媒體類型的操作和處理都可以通過(guò)JMF來(lái)實(shí)現(xiàn)。全面的討論JMF所提供的所有特征已經(jīng)超過(guò)了本指南的范圍,我們將使用三個(gè)簡(jiǎn)單的媒體應(yīng)用程序來(lái)學(xué)習(xí)此框架的構(gòu)建模塊。通過(guò)這個(gè)方法,本指南將為你未來(lái)學(xué)習(xí)和實(shí)施更多特殊的應(yīng)用提供準(zhǔn)備。
  
  我應(yīng)該使用此指南嗎?
  
  本指南會(huì)帶你學(xué)習(xí)使用JMF工作的基礎(chǔ)。為完成這些,我們會(huì)創(chuàng)建三個(gè)的獨(dú)立工作的例程序。每個(gè)例子都會(huì)建立前一個(gè)例子的基礎(chǔ)上,顯示JMF功能性的不同方面。
  
  在本指南中的例子假定你曾經(jīng)使用過(guò)并且已經(jīng)熟悉了Java程序語(yǔ)言。除了Java核心和JMF的類之外,我們會(huì)使用一些Java
AWT和Swing類(用于創(chuàng)建GUI),也會(huì)有一些Java網(wǎng)絡(luò)類(用于在網(wǎng)絡(luò)中傳輸媒體)。對(duì)GUI和網(wǎng)絡(luò)類一些熟悉有助于你更快的明白觀點(diǎn)和這里的
例子,但并非是閱讀本指南必須的。
  
  我們將學(xué)習(xí)的例程序如下
  
  · 一個(gè)簡(jiǎn)單的音頻播放器(JMF的HelloWorld應(yīng)用):這個(gè)字符界面的播放器通過(guò)在命令行中簡(jiǎn)單的輸入媒體文件的名字就可以播放大多數(shù)的音頻類型。此音頻播放器的演示大體上顯示了JMF的特有的類。
  · 一個(gè)圖形界面的媒體播放器:我們將使用JMF內(nèi)置的接口組件來(lái)建立圖形界面,所以在此練習(xí)中必須有一些圖形界面的編程經(jīng)驗(yàn)。這個(gè)媒體閱覽器演示使用了一些Java AWT和Swing類來(lái)為用戶顯示圖形組件。
  · 一個(gè)媒體廣播應(yīng)用:此應(yīng)用程序允許一個(gè)本地媒體文件通過(guò)網(wǎng)絡(luò)傳播。此程序能靈活的使媒體只傳輸?shù)街付ǖ木W(wǎng)絡(luò)節(jié)點(diǎn),或者傳輸?shù)揭粋(gè)子網(wǎng)絡(luò)中的所有節(jié)點(diǎn)。此演示使用了一些Java的網(wǎng)絡(luò)APIs來(lái)在網(wǎng)絡(luò)中傳輸媒體。
  
  作為第三個(gè)練習(xí)的一部分,我們將修改圖形界面的播放器,讓其能接收并且播放媒體。
  
  跳至23頁(yè)觀看Resources,文章,指南,和其他參考書(shū)目的列表,這會(huì)幫助你學(xué)習(xí)到更到關(guān)于此指南包括的主題。
  
  安裝需求
  
  要運(yùn)行此指南中的例程序,你需要如下的工具和組件:
  
  · Java 2 平臺(tái),標(biāo)準(zhǔn)版,編譯和運(yùn)行演示程序
  · Java媒體框架,版本2.1.1a或者更高
  · 一塊已經(jīng)安裝并且配置號(hào)的適當(dāng)?shù)穆暱?
  · 一臺(tái)或者多臺(tái)測(cè)試機(jī)器
  · 演示的源代碼文件在mediaplayer.jar中
  
  最后的一個(gè)演示應(yīng)用顯示了JMF在網(wǎng)絡(luò)中的應(yīng)用。如果需要,此演示能運(yùn)行在一個(gè)獨(dú)立的機(jī)器上,使用此機(jī)器即是傳輸方也是接收方?墒且^察到在網(wǎng)絡(luò)中使用JMF的所有功能,你仍然需要至少兩臺(tái)聯(lián)網(wǎng)的機(jī)器。
  
  在23頁(yè)中的Resources可下載Java 2平臺(tái),完整的源代碼文件,以及其他一些完成本指南所需要的工具。
  
  下載安裝文件
  
  將JMF安裝到你的計(jì)算機(jī)中的第一步是在JMF的主頁(yè)中下載安裝文件,它同樣包括了JMF源代碼和API文檔的鏈接。23頁(yè)的Resources中有下載JMF的鏈接。
  
  目前,JMF有Windows, Solaris,
Linux等版本,以及可運(yùn)行在任何裝有虛擬機(jī)的計(jì)算機(jī)上一個(gè)純Java版本。為了增加性能,你需要下載一個(gè)與你操作系統(tǒng)所適應(yīng)的版本。任何在一個(gè)操作系
統(tǒng)JMF版本下書(shū)寫(xiě)和編譯的代碼都可以方便的移植到另外的操作系統(tǒng)上。例如,如果你下載了一個(gè)Solaris版本的JMF并且編譯了一個(gè)類,這些類就可以
在Linux上使用,不會(huì)有任何問(wèn)題。
  
  作為選擇,你可以選擇下載純Java版本,或者跨平臺(tái)版本的JMF。這些版本沒(méi)有使用操作系統(tǒng)特有的庫(kù)文件。如果沒(méi)有合適的JMF版本適合的操作系統(tǒng),那么跨平臺(tái)版本就是一個(gè)不錯(cuò)的選擇。
  
  安裝JMF
  
  下載完JMF安裝程序后,雙擊安裝程序的圖標(biāo)。
  
  大部分安裝程序都會(huì)有個(gè)選項(xiàng),安裝本地庫(kù)到系統(tǒng)目錄中;例如,Windows版本安裝程序會(huì)有一個(gè)選項(xiàng)“Move DLLs to Windows/System directory.”。最好將此選項(xiàng)選中,因?yàn)樗艽_保這些操作系統(tǒng)的庫(kù)文件能正確的安裝
  
  在安裝的過(guò)程中,你還需要選擇項(xiàng)目來(lái)更新系統(tǒng)的CLASSPATH和PATH變量。如果這些選項(xiàng)被關(guān)閉,那么在你編譯和運(yùn)行本指南的例程序的時(shí)候就需要在classpath中引入JMF的jar文件。
  
  第二節(jié). 一個(gè)簡(jiǎn)單的音頻播放器
  
  瀏覽
  
  在本節(jié)中,我們將進(jìn)行創(chuàng)建一個(gè)簡(jiǎn)單的音頻播放器的第一個(gè)練習(xí)。本例將介紹Manager類和Player接口,中兩個(gè)都是建立大多數(shù)基于JMF應(yīng)用的重要部分。
  
  本例的功能目標(biāo)是在字符界面下播放本地的音頻文件。我們將學(xué)習(xí)此源代碼,并了解每一行所做的任務(wù)。完成本節(jié)后,你將會(huì)有一個(gè)基于JMF的可播放包括MP3, WAV, AU等多種音頻文件的演示程序。
  
  在本練習(xí)后的源代碼分類種可查詢文件SimpleAudioPlayer.java。
  
  引入必要的類
  
  SimpleAudioPlayer類中包括了一些調(diào)用,在其前幾行中需要引入所有必要的類:
  
  import javax.media.*;
  import java.io.File;
  import java.io.IOException;
  import java.net.URL;
  import java.net.MalformedURLException;
  
  The javax.media包是由JMF定義的多個(gè)包之一。javax.media是一個(gè)核心包,包括了定義Manager類和Player接口等。本節(jié)中,我們主要學(xué)習(xí)Manager類和Player接口,其余的javax.media類放在后面的章節(jié)中。
  
  除了引入javax.media聲明外,以上的代碼片斷引入了一些創(chuàng)建媒體播放器的輸入的聲明。
  
  Player接口
  
  在下面的代碼片斷中,創(chuàng)建一個(gè)公共類SimpleAudioPlayer并舉例定義一個(gè)Player變量:
  
  public class SimpleAudioPlayer {private Player audioPlayer = null;
  
  術(shù)語(yǔ)Player聽(tīng)起來(lái)由點(diǎn)熟悉,因?yàn)樗墙⒃谖覀児玫囊纛l或者視頻播放器的基礎(chǔ)上的。事實(shí)上,這個(gè)接口的例子就像是當(dāng)作它們的真實(shí)的副本。
Players揭示了一個(gè)實(shí)體上的媒體播放器(如立體音箱系統(tǒng)或者VCR)涉及到功能上的方法。例如,一個(gè)JMF媒體播放器可以開(kāi)始和結(jié)束一個(gè)媒體流。在
本節(jié)種,我們將使用Player的開(kāi)始和結(jié)束功能。
  
  在一個(gè)文件上創(chuàng)建一個(gè)Player
  
  使用JMF獲得一個(gè)特定媒體文件的Player實(shí)例非常簡(jiǎn)單。Manager類在JMF中如同一個(gè)工廠制作許多的特殊接口類型,包括Player接口。因此,Manager類的責(zé)任就是創(chuàng)建Player實(shí)例,如下例:
  
  public SimpleAudioPlayer(URL url) throws
IOException,NoPlayerException,CannotRealizeException {audioPlayer =
Manager.createRealizedPlayer(url);}public SimpleAudioPlayer(File file)
throws IOException,NoPlayerException,CannotRealizeException
{this(file.toURL());}
  
  如果你看完本節(jié)的代碼,你可以注意到Manager類包含了創(chuàng)建一個(gè)Player實(shí)例的其他方法。我們會(huì)研究其中的一些,如在后面的章節(jié)中的DataSource或者M(jìn)ediaLocator的實(shí)例化。
  
  Player的狀態(tài)
  
  JMF定義了大量的一個(gè)Player實(shí)例可能存在的不同狀態(tài)。如下:
  
  · Prefetched
  · Prefetching
  · Realized
  · Realizing
  · Started
  · Unrealized
  
  使用這些狀態(tài)
  
  因?yàn)槭褂妹襟w常常是資源非常密集的,由JMF對(duì)象揭示的許多方法都是不閉塞的,允許一系列事件監(jiān)聽(tīng)的狀態(tài)改變的異步通知。例如,一個(gè)Player在它
可以啟動(dòng)之前,必須經(jīng)過(guò)Prefetched和Realized狀態(tài)。由于這些狀態(tài)的改變都需要一些時(shí)間來(lái)完成,JMF媒體應(yīng)用可以分配一個(gè)線程來(lái)初始化
創(chuàng)建Player實(shí)例,然后再繼續(xù)其他的操作。當(dāng)Player準(zhǔn)備就緒的時(shí)候,它會(huì)通知應(yīng)用程序其狀態(tài)已經(jīng)改變。
  
  在一個(gè)如同我們的這樣簡(jiǎn)單的程序中,多功能性的類型并不是很重要。處于這個(gè)原因,Manager類也提供了一些創(chuàng)建Realized
player的有用方法。調(diào)用一個(gè)createRealizedPlayer()方法來(lái)阻塞調(diào)用線程,直到player達(dá)到Realized狀態(tài)。為了調(diào)
用一個(gè)無(wú)阻塞的創(chuàng)建player的方法,我們?cè)贛anager類中使用了一個(gè)createPlayer()方法。下面的一行代碼中創(chuàng)建了一個(gè)我們需要在例
程序中使用的
  
  Realized player:audioPlayer = Manager.createRealizedPlayer(url);
  
  啟動(dòng)和停止Player
  
  設(shè)定一個(gè)Player實(shí)例的啟動(dòng)或是停止就如同調(diào)用Player的一個(gè)簡(jiǎn)單的認(rèn)證方法,如下所示:
  
  public void play() {audioPlayer.start();}public void stop() {audioPlayer.stop();audioPlayer.close();}
  
  調(diào)用SimpleAudioPlayer類中的play()方法來(lái)實(shí)現(xiàn)調(diào)用Player實(shí)例的start()方法。調(diào)用此方法后,你能聽(tīng)到本地的喇叭的聲音文件。同樣的,stop()方法使player停止并且關(guān)閉掉Player對(duì)象。
  
  對(duì)于讀取和或者播放本地媒體文件來(lái)說(shuō),關(guān)閉Player實(shí)例釋放所有資源是一個(gè)有用的方法。因?yàn)檫@是一個(gè)簡(jiǎn)單的例子,關(guān)閉Player是終止一個(gè)會(huì)話
可接受的方法。但是在實(shí)際的應(yīng)用中,你需要小心的確認(rèn)在除掉Player之前必須要關(guān)閉掉。一但你已經(jīng)關(guān)閉掉player,在再次播放一個(gè)媒體之前你必須
要?jiǎng)?chuàng)建一個(gè)新的Player實(shí)例
               
               
               

本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u3/110548/showart_2152215.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP