JMF_API_中文指導(dǎo)_第1頁(yè)
JMF_API_中文指導(dǎo)_第2頁(yè)
JMF_API_中文指導(dǎo)_第3頁(yè)
JMF_API_中文指導(dǎo)_第4頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、JMF API中文指導(dǎo)Time ModelManagersEvent ModelData ModelControlsUser Interface ComponentsExtensibilityPresentationPlayersProcessorsPresentation ControlsController EventsProcessingProcessing ControlsData OutputCaptureMedia Data Storage and TransmissionStorage ControlsExtensibilityImplementing Plug-InsImple

2、menting MediaHandlers and DataSourcesGo Top-Time Model關(guān)於 TIME ,可實(shí)作二個(gè)相關(guān)的interface:Clock Interface :定義了 basic timing 和同步時(shí)所需的資料,clock 是使用 TimeBase 作為 track行進(jìn)的時(shí)間 (而 time-base 提供的資訊只有目前的時(shí)間,以system clock 為主 )Duration Interface :影片的開(kāi)始到結(jié)束的時(shí)間(片長(zhǎng)時(shí)間 )為了維持track 目前時(shí)間, Clock 使用:以 time 來(lái)記錄以 position 來(lái)記錄以 play back

3、 rate :rate=張數(shù) / 秒數(shù) * 時(shí)間公式: MediaTime=MediaStartTime+Rate(TimeBaseTime-TimeBaseStartTime)位置絕對(duì)時(shí)間JMF time model-Managers對(duì)於媒體的擷取、處理和播放時(shí)間性的媒體,JMF 都有提供相關(guān)的API 。JMF 所使用的4 個(gè) managers:1. Manager- 包含 Players, Processors, DataSources 和 DataSink 四種 classes, object 都是用此四種去建構(gòu)成的。2. PackageManager-可自定 classes,如:自定的

4、 Players、 Processors、 DataSources、DataSinks3. CaptureDeviceManager- 當(dāng)我們要從 input device 去 capturing 媒體資料的話,就需使用 CaptureDeviceManager 去尋找可以使用、存取的 devices。4.PlugInManager- 當(dāng)我們要處理資料的performance 時(shí) (如:編碼 ),可以使用plug-in的處理元件,如Multiplexers,Demultiplexers, Codecs, Effects、Renderers.在 JMF 的程式中,我們將使用到這些 Manager

5、 去 create methods 去建構(gòu) Players、 Processors、DataSources、 DataSinks 。-Event ModelMediaEvent 是定義許多 JMF 事件的子集合。 如:我們要 implement 一個(gè) listener 的 interface,我們就需呼叫事件: addListener;我們要去 controller objects( 像 Players和 Processors)和 creatain Control objects 就需呼叫事件: GainControl 。-Data ModelJMFmedia players 通常使 Data

6、Sources管理媒體的傳輸、連結(jié)。DataSource 包含了媒體位置、protocol 、和使用何種軟體來(lái)傳送媒體。DataSource 不是透過(guò)MediaLocator 就是透過(guò) URL 來(lái)定義,MediaLocator 很類似 URL 而且可以從 URL 中去建構(gòu),即使系統(tǒng)上沒(méi)有安裝符合的protocol handler中,只有在系統(tǒng)上安裝符合的protocol handler 時(shí)才可被create)仍可被create。(但在JavaDataSource 管理一或多個(gè)SourceStream objects。一個(gè)標(biāo)準(zhǔn)的data source 是使用 byte 為傳送單位;一個(gè) buff

7、er data source 是使用 buffer 為傳送單位。 JMF 定義了幾種 DataSource objects 的型態(tài):根據(jù)資料傳送方式分類:PullDataSource :client 端開(kāi)始傳送資料,並控制 pull data-sources 的資料流, 使用的 protocols型 態(tài) 為HTTP 、 FILE 。 JMF定 義 二 種pulldatasources 型 態(tài) : PullDataSource 、PullBufferDataSouce 。PushDataSource:server 端開(kāi)始傳送資料, 並控制 push data-sources的資料流。使用的 pr

8、otocols型態(tài)包括 RTP、multicast media 、VOD 。JMF 定義二種push data sources型態(tài):PushDataSource、PushBufferDataSouceclient 端程式可依使用者自訂,並將其以行改變播放位置、重播。相對(duì)的,廣播則是由dataSource 型態(tài)播出。例如:MPEG :使用者可自server 端控制,則無(wú)法改變播放位置,有些VOD 支援使用者控制 例如: client 端程式允許使用者能尋找到新的位置,但無(wú)法快轉(zhuǎn)或倒帶。Specialty DataSourcesJMF 定義了二個(gè)特殊的Data Sources 型態(tài): Clonea

9、ble data Sources、 Merging data Source必須注意的是合併時(shí) DataSource 須都皆為同一型態(tài), 例如:PullDataSource 與 PushDataSource 不可合併。而合併後的 Content Type 為 application/mixed-media 。DataFormats描述媒體編碼格式名稱,資料格式型態(tài)的需求。JMF 繼承 Format 去定義 audio 和 video 的格式:AudioFormat :記載 audio 格式的屬性,例如:頻率、bits 數(shù)、和channel 數(shù)量VideoFormat :包含video相關(guān)的資料訊

10、息。VideoFormateIndexedColorFormat、RGBFormat、YUVFormat、JPEGFormat包含以下數(shù)個(gè)共同的格式:、H261Format、H263Format-Controls提供設(shè)定、 查詢物件屬性, 通常提供存取符合的使用者介面元件,可讓使用者控制物件的屬性。許多 JMFobjects 有接觸到 Controls ,包括:Controller objects 、DataSource objects、DataSinkobjects、 JMF plut-ins 。上圖為 JMF controlsJMF 定義的 Standard Controls:Cachin

11、gControl :監(jiān)控下載進(jìn)度和播放, 假如,Player 或 Processor 可以記載 download progress, CachingControl 就可以 implements interface ,讓 progress bar 可以 display 出來(lái)。GainControl :能夠調(diào)整 audio 音量,例如:對(duì)於 player 或 processor 輸出的聲音做調(diào)整或消音,它同時(shí)支援音量改變的 mechanism。上圖為Gain controll StreamWriterControl 媒體,並寫(xiě)至目的地(如:可使用DataSink 或 Multiplexerfile

12、 ),可實(shí)作StreamWriterControl等 objects 從 Data Source 讀入介面,且這個(gè) Control 可限制stream 產(chǎn)生的大小。lFramePositioningControl:可在 Player 或Processor 物件的 media stream 中正確地取得Frame 的位置。lFrameGrabbingControl :可以從video stream 中攫取 video frame ,且此 Control 也支援 Render。lFromatControl :提供查詢與設(shè)定格式的method。lTrackControl :是屬於 FormatCon

13、trol的一種型態(tài),用在個(gè)別的tracks 處理 processorobject performs 上 (如: Effect 、 Codec、Render plug-ins)lPortControl 、MonitorControl :可以用來(lái)控制 capture process。PortControl 定義了用來(lái)控制屬於 capture 輸出設(shè)備的 method。 MonitorControl可以預(yù)覽 capture 完、 encode 完後的media data。lBufferControl :在特別的 objects 上控制 buffer的處理。l Codec control :可以控制軟

14、、硬體的編、解碼器? BitRateControl? FrameProcessingControl? FrameRateControl? H261Control? H263Control? KeyFrameControl? MpegAudioControl? QualityControl? SilenceSuppressionControl-Ueser Interface ComponentsControl 提供可以存取user interface Component( 讓使用者可以看得到媒體撥放的狀態(tài))? getControlComponent :這個(gè) method 是繼承 AWT Comp

15、onent 下來(lái)的, 可以讓我們?cè)黾?applet s presentation space或 application window 。?getVisualComponent 、 getControlPanelComponent :這二個(gè)方法可以得到player 執(zhí)行的畫(huà)面和控制狀態(tài)畫(huà)面。當(dāng)然,如果你不使用這些內(nèi)定的control component 時(shí),也可以自定自己的component-Extensibility可透過(guò)二種方式繼承JMF 的功能、經(jīng)由實(shí)作自訂的處理元件(plug-ins )、透過(guò)實(shí)作the Controller, Player, Processor, DataSource,

16、 或 DataSink介面這部分屬於plug-in 部分,講到p.85 時(shí)會(huì)重新提到-Presentation在 JMF 中,播放的處理都是由Controller interface 來(lái)完成。Controller 定義了物件的控制、播放或擷取時(shí)間性媒體的控制機(jī)制。 Controller :為一介面,繼承自 Clock ,提供來(lái)源配置的狀態(tài)訊息,事件的產(chǎn)生,並且於獲得物件的機(jī)制提供控制。JMF API 定義二種型態(tài)的 Controllers: Players and Processors 。 Player or Processor 產(chǎn)生於特定資料來(lái)源時(shí),且不再被重複使用去播放其他的媒體上圖為 J

17、MF controllers-PlayersPlayer:繼承自Controller interface ,用於傳送和控制時(shí)間性的媒體資料,對(duì)於AWT 元件的取得、媒體的處理控制,Player 都有提供methods 處理傳入的媒體流,並精確地傳送出去。DataSource: 通常傳入的media-stream 傳送給 Player,至輸出裝置再依其型態(tài)將之播出上圖為 JMF player modelPlayer 在處理上不提供任何的控制機(jī)制,但支援標(biāo)準(zhǔn)化的使用者控制,透過(guò)Clock和Controller 的操作達(dá)成。Player 可分成六個(gè)狀態(tài),Clock 介面定義二種基本的的狀態(tài):Stop

18、ped 和 Started。為了易於資料來(lái)源的管理,Controller再將其中的Stopped 階段細(xì)分成五個(gè)狀態(tài):Unrealized 、Realizing 、 Realized、 Prefetching 和 Prefetched.上圖為 player states一般情況下, Player,必須經(jīng)過(guò)每一階段直到Started 的狀態(tài)下:? Unrealized :當(dāng) media Player 被產(chǎn)生,但仍未知媒體資料時(shí),稱之。?Realizing : player 決定資料來(lái)源需求時(shí),稱之。Realizing 通常用於從網(wǎng)路上下載媒體資料。? Realized :當(dāng) player 完成

19、Realizing 後,即進(jìn)入 Realized 狀態(tài)。至此階段已知媒體的需求及媒體播放型態(tài)的資訊。 它也提供視覺(jué)化的元件但仍沒(méi)擁有任何資源,以預(yù)防其它的 Player 啟動(dòng)。和控制, 可以連接到系統(tǒng)的相關(guān)物件,? Prefetching :準(zhǔn)備開(kāi)始播放媒體, player 若播放位置被改變,則重新配置? Prefetched:進(jìn)入播放狀態(tài)? Started:呼叫 start,將 Player 放 至 Started state。當(dāng) Player 物件的 time-base time 和媒體時(shí)間 mapping 後,開(kāi)始播出。Player 提供提供可決定TransitionEvents ,可以

20、從這個(gè)狀態(tài)移至另一個(gè)狀態(tài)中。ControllerListener介面也player 位在哪個(gè)狀態(tài)下和適時(shí)地提出respond,例如:在 Player 或 Process 中呼叫asynchronous 的 method,就需 ControllerListener 提供 event 來(lái)決定 operation 何時(shí)被完成。Methods Available in Each Player State為了防止race(猛轉(zhuǎn),急速 )的狀態(tài)產(chǎn)生,在Player的每個(gè)狀態(tài)中並非所有method 都可以呼叫,下表為在 Player 的每個(gè)階段中, JMF 定義的 method 使用限制說(shuō)明,如果是不合法的

21、method, player 就會(huì)丟出 exception。MethodUnrealized PlayerRealized PlayerPrefetched PlayerStarted PlayeraddControllerNotRealizedErrorlegallegalClockStartedErrordeallocatelegallegallegalClockStartedErrorgetControlPanelComponentNotRealizedErrorlegallegallegalgetGainControlNotRealizedErrorlegallegallegalget

22、StartLatencyNotRealizedErrorlegallegallegalgetTimeBaseNotRealizedErrorlegallegallegalgetVisualComponentNotRealizedErrorlegallegallegalmapToTimeBaseClockStoppedExceptionClockStoppedExceptionClockStoppedExceptionlegalremoveControllerNotRealizedErrorlegallegalClockStartedErrorsetMediaTimeNotRealizedErr

23、orlegallegallegalsetRateNotRealizedErrorlegallegallegalsetStopTimeNotRealizedErrorlegallegalStopTimeSetErrorif previously setsetTimeBaseNotRealizedErrorlegallegalClockStartedErrorsyncStartNotPrefetchedErrorNotPrefetchedErrorlegalClockStartedErrorTable 2-1: Method restrictions for players.-Processors

24、Processors也可以用來(lái)?yè)芊?media data。除了提供媒體撥放的設(shè)備外, Processor 也可以透過(guò) DataSource 輸出 media data,以便讓其他的 Player 和 Processor 來(lái)呈現(xiàn), 更進(jìn)一步地透過(guò)其他Processor 來(lái)操作或傳送到其他的目的地,如檔案中。Presentation Controls參見(jiàn) ControlsController EventsControllerEvents 提供三種類的events:?changenotifications-像RateChangeEvent、DurationUpdateEvent、FormatChan

25、geEvent 表示可以改變Controller 的一些屬性,例如:Player 提供 RateChangeEvent,當(dāng) rate 被改變時(shí)就呼叫 setRate。?transition events - TransitionEvents允許我們的程式在Controller objects下s改state變時(shí)得到respond,不論是從那個(gè)狀態(tài)到哪個(gè)狀態(tài),player 都提供 transition events 。?closed events - ControllerClosedEvents 由 ControllerEvent 繼承下來(lái), 提供 shutsdown功能; Controller

26、ErrorEvent 由 ControllerClosedEvents 繼承下來(lái),當(dāng)程式發(fā)生錯(cuò)誤時(shí),可以 respond Controller 發(fā)生的錯(cuò)誤及將錯(cuò)誤造成的影響減到最低。上圖為 JMF events-ProcessingProcessor:是一個(gè)從DataSource 輸入,執(zhí)行一些使用者自定的媒體資料處理,再將其媒體資料輸出的Player。 可傳送輸出資料至播放設(shè)備或至另一個(gè) Player 或 Processor,或輸入至DataSink )DataSource( DataSource可如同再輸入上圖為 JMF processors媒體資料的處理可分割成幾個(gè)階段:上圖為Proce

27、ssor stages.1. Demultiplexing :剖析 input stream,若 stream 包含了多個(gè) tracks,則將之分離,例如:QuickTime 檔案分成 audio and video tracks。無(wú)論是否有包含多樣的資料,皆會(huì)自動(dòng)執(zhí)行 Demultiplexing 。2. Pre-Processing: 對(duì) input stream 中的 tracks 做特效 (effect) 的演算處理。3. Transcoding :轉(zhuǎn)碼;壓縮 解壓縮。4. Post-Processing:對(duì) decoded tracks 做特效 (effect) 的演算處理5.Mul

28、tiplexingtracks 合併成單一個(gè):將由多個(gè)tracks 的合併成單一data stream。例:將分離的MPEG-1 data stream,可藉由 setOutputContentDescriptoraudio and video的 method 定義輸出流的資料型態(tài)。6. Rendering :將播放媒體出來(lái)。Processing 執(zhí)行的每個(gè)階段,由不同的processing component 所構(gòu)成,而這些processingcomponent 就是 JMF plug-ins 。假如 Processor 支援 TrackControls 的話,你可以選擇用何種 plug-i

29、ns 來(lái)處理 track。 JMF plug-ins 分為五種 types:1. Demultiplexer 剖析媒體資料,例如: WAV, MPEG or QuickTime 。若媒體流為多樣複合時(shí),則分開(kāi)個(gè)別處理。2. Effect 對(duì)媒體資料進(jìn)行特效3. Codec 進(jìn)行編解碼4.Multiplexer 合併多個(gè)tracks 為單一個(gè)輸出流並傳送結(jié)果至輸出的DataSource5. Renderer 處理 track 的媒體資料,並傳送至螢?zāi)换蚶萈rocessor States介於 Realizing state 和 Realized state 之間, Processor 提供二個(gè)額

30、外備用的階段:Configuring和 Configured 。?當(dāng) Configure 被呼叫時(shí), Processor 進(jìn)入 Configuring階段,已連結(jié)DataSource、可對(duì) input stream 做 demultiplexes 、讀取有關(guān) input data 的格式資訊。? 當(dāng) Processor進(jìn)入 Configured 階段時(shí), 已連結(jié) DataSource 和決定出 data format。此時(shí)ConfigureCompleteEvent將可使用。? 當(dāng) Realize 被呼叫時(shí), Processor 將轉(zhuǎn)換到 Realized 狀態(tài)下,而 Processor 已被

31、完全建構(gòu)出來(lái)。當(dāng) Processor在 Configured 狀態(tài)下, getTrackControl 將被呼叫進(jìn)而從 media stream 中的 track 得到 TrackControl objects 。這些 TrackControl objects 可以使我們對(duì) media 做一些特別的處理。當(dāng)立刻呼叫Realize 時(shí),會(huì)從Unrealized Processor 透過(guò) Configuring 和 Configured 階段自動(dòng)地轉(zhuǎn)換到Realized階段,當(dāng)我們使用時(shí),我們不可以透過(guò)TrackControls去configuring這個(gè)processing options,因?yàn)?/p>

32、Processor 設(shè)定是被使用的。Methods Available in Each Processor State下表為下表為在Processor的每個(gè)階段中,JMF 定義的 method 使用限制說(shuō)明MethodUnrealized ProcessorConfiguring ProcessorConfigured ProcessorRealized ProcessorAddControllerNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalDeallocatelegallegallegallegalGetControlPanelC

33、omponentNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalGetControlslegallegallegallegalGetDataOutputNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalGetGainControlNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalGetOutputContentDescriptorNotConfiguredErrorNotConfiguredErrorlegallegalGet

34、StartLatencyNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalgetSupportedContent-DescriptorslegallegallegallegalGetTimeBaseNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalGetTrackControlsNotConfiguredErrorNotConfiguredErrorlegalFormatChange-ExceptionGetVisualComponentNotRealizedErrorNotReal

35、izedErrorNotRealizedErrorlegalMapToTimeBaseClockStoppedExceptionClockStoppedExceptionClockStoppedExceptionClockStopped-ExceptionRealizelegallegallegallegalRemoveControllerNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalSetOutputContentDescriptorNotConfiguredErrorNotConfiguredErrorlegalFormatCha

36、nge-ExceptionSetMediaTimeNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalSetRateNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalSetStopTimeNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalSetTimeBaseNotRealizedErrorNotRealizedErrorNotRealizedErrorlegalSyncStartNotPrefetchedErrorNotPrefetchedErrorNotPrefetchedErrorNotPrefetchedErrorProcessing Controls透過(guò) TrackControl 我們可以很明確地選擇 Effect 、Codec、Renderer pling-ins 在我們所使用的 track 中,我們可以查詢 PlugInManager 找尋有哪些 plug-ins 可以使用。Data OutputGetDataOutput 可以傳回 Processor object 輸出的 DataSource-Capture於 p.77 會(huì)詳細(xì)提到-Media Data Storage and T

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論