JMF+API+文档中文版Word文档下载推荐.docx
- 文档编号:21707541
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:17
- 大小:62.17KB
JMF+API+文档中文版Word文档下载推荐.docx
《JMF+API+文档中文版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JMF+API+文档中文版Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
GoTop
TimeModel
關於TIME,可實作二個相關的interface:
ClockInterface:
定義了basictiming和同步時所需的資料,clock是使用TimeBase作為track行進的時間(而time-base提供的資訊只有目前的時間,以systemclock為主)
DurationInterface:
影片的開始到結束的時間(片長時間)
為了維持track目前時間,Clock使用:
以time來記錄
以position來記錄
以playbackrate:
rate=張數/秒數*時間
公式:
MediaTime=MediaStartTime+Rate(TimeBaseTime-TimeBaseStartTime)
位置
絕對時間
JMFtimemodel
對於媒體的擷取、處理和播放時間性的媒體,JMF都有提供相關的API。
JMF所使用的4個managers:
1.
Manager--包含Players,Processors,DataSources和DataSink四種classes,object都是用此四種去建構成的。
2.
PackageManager--可自定classes,如:
自定的Players、Processors、DataSources、DataSinks
3.
CaptureDeviceManager--當我們要從inputdevice去capturing媒體資料的話,就需使用CaptureDeviceManager去尋找可以使用、存取的devices。
4.
PlugInManager--當我們要處理資料的performance時(如:
編碼),可以使用plug-in的處理元件,如Multiplexers,Demultiplexers,Codecs,Effects、Renderers.
在JMF的程式中,我們將使用到這些Manager去createmethods去建構Players、Processors、DataSources、DataSinks。
EventModel
MediaEvent是定義許多JMF事件的子集合。
如:
我們要implement一個listener的interface,我們就需呼叫事件:
addListener;
我們要去controllerobjects(像Players和Processors)和creatainControlobjects就需呼叫事件:
GainControl。
JMFmediaplayers通常使〞DataSources〞管理媒體的傳輸、連結。
DataSource包含了媒體位置、protocol、和使用何種軟體來傳送媒體。
DataSource不是透過MediaLocator就是透過URL來定義,MediaLocator很類似URL而且可以從URL中去建構,即使系統上沒有安裝符合的protocolhandler仍可被create。
(但在Java中,只有在系統上安裝符合的protocolhandler時才可被create)
DataSource管理一或多個SourceStreamobjects。
一個標準的datasource是使用byte為傳送單位;
一個bufferdatasource是使用buffer為傳送單位。
JMF定義了幾種DataSourceobjects的型態:
根據資料傳送方式分類:
PullDataSource:
client端開始傳送資料,並控制pulldata-sources的資料流,使用的protocols型態為HTTP、FILE。
JMF定義二種pulldatasources型態:
PullDataSource、PullBufferDataSouce。
PushDataSource:
server端開始傳送資料,並控制pushdata-sources的資料流。
使用的protocols型態包括RTP、multicastmedia、VOD。
JMF定義二種pushdatasources型態:
PushDataSource、PushBufferDataSouce
client端程式可依使用者自訂,並將其以dataSource型態播出。
例如:
MPEG:
使用者可自行改變播放位置、重播。
相對的,廣播則是由server端控制,則無法改變播放位置,有些VOD支援使用者控制─例如:
client端程式允許使用者能尋找到新的位置,但無法快轉或倒帶。
SpecialtyDataSources
JMF定義了二個特殊的DataSources型態:
CloneabledataSources、MergingdataSource
必須注意的是合併時DataSource須都皆為同一型態,例如:
PullDataSource與PushDataSource不可合併。
而合併後的ContentType為application/mixed-media。
Data
Formats
描述媒體編碼格式名稱,資料格式型態的需求。
JMF繼承Format去定義audio和video的格式:
AudioFormat:
記載audio格式的屬性,例如:
頻率、bits數、和channel數量
VideoFormat:
包含video相關的資料訊息。
VideoFormate包含以下數個共同的格式:
IndexedColorFormat、RGBFormat、YUVFormat、JPEGFormat、H261Format、H263Format
Controls
提供設定、查詢物件屬性,通常提供存取符合的使用者介面元件,可讓使用者控制物件的屬性。
許多JMFobjects有接觸到Controls,包括:
Controllerobjects、DataSourceobjects、DataSinkobjects、JMFplut-ins。
上圖為JMFcontrols
JMF定義的StandardControls:
CachingControl:
監控下載進度和播放,假如,Player或Processor可以記載downloadprogress,CachingControl就可以implementsinterface,讓progressbar可以display出來。
GainControl:
能夠調整audio音量,例如:
對於player或processor輸出的聲音做調整或消音,它同時支援音量改變的mechanism。
上圖為Gaincontrol
l
StreamWriterControl:
可使用DataSink或Multiplexer等objects從DataSource讀入媒體,並寫至目的地(如:
file),可實作StreamWriterControl介面,且這個Control可限制stream產生的大小。
FramePositioningControl:
可在Player或Processor物件的mediastream中正確地取得Frame的位置。
FrameGrabbingControl:
可以從videostream中攫取videoframe,且此Control也支援Render。
FromatControl:
提供查詢與設定格式的method。
TrackControl:
是屬於FormatControl的一種型態,用在個別的tracks處理processorobjectperforms上(如:
Effect、Codec、Renderplug-ins)
PortControl、MonitorControl:
可以用來控制captureprocess。
PortControl定義了用來控制屬於capture輸出設備的method。
MonitorControl可以預覽capture完、encode完後的mediadata。
BufferControl:
在特別的objects上控制buffer的處理。
Codeccontrol:
可以控制軟、硬體的編、解碼器
Ø
BitRateControl
FrameProcessingControl
FrameRateControl
H261Control
H263Control
KeyFrameControl
MpegAudioControl
QualityControl
SilenceSuppressionControl
UeserInterfaceComponents
Control提供可以存取userinterfaceComponent(讓使用者可以看得到媒體撥放的狀態)
getControlComponent:
這個method是繼承AWTComponent下來的,可以讓我們增加applet’spresentationspace或applicationwindow。
getVisualComponent、getControlPanelComponent:
這二個方法可以得到player執行的畫面和控制狀態畫面。
當然,如果你不使用這些內定的controlcomponent時,也可以自定自己的component
可透過二種方式繼承JMF的功能
1、經由實作自訂的處理元件(plug-ins)
2、透過實作theController,Player,Processor,DataSource,或DataSink
介面
這部分屬於plug-in部分,講到p.85時會重新提到
Presentation
在JMF中,播放的處理都是由Controllerinterface來完成。
Controller定義了物件的控制、播放或擷取時間性媒體的控制機制。
〞Controller〞:
為一介面,繼承自Clock,提供來源配置的狀態訊息,事件的產生,並且於獲得物件的機制提供控制。
JMFAPI定義二種型態的Controllers:
PlayersandProcessors。
PlayerorProcessor產生於特定資料來源時,且不再被重複使用去播放其他的媒體
上圖為JMFcontrollers
Players
Player:
繼承自Controllerinterface,用於傳送和控制時間性的媒體資料,對於AWT元件的取得、媒體的處理控制,Player都有提供methods處理傳入的媒體流,並精確地傳送出去。
DataSource:
通常傳入的media-stream傳送給Player,至輸出裝置再依其型態將之播出
上圖為JMFplayermodel
Player在處理上不提供任何的控制機制,但支援標準化的使用者控制,透過Clock和Controller的操作達成。
Player可分成六個狀態,Clock介面定義二種基本的的狀態:
Stopped和Started。
為了易於資料來源的管理,Controller再將其中的Stopped階段細分成五個狀態:
Unrealized、Realizing、Realized、Prefetching和Prefetched.
上圖為playerstates
一般情況下,Player,必須經過每一階段直到Started的狀態下:
Unrealized:
當mediaPlayer被產生,但仍未知媒體資料時,稱之。
Realizing:
player決定資料來源需求時,稱之。
Realizing通常用於從網路上下載媒體資料。
Realized:
當player完成Realizing後,即進入Realized狀態。
至此階段已知媒體的需求及媒體播放型態的資訊。
它也提供視覺化的元件和控制,可以連接到系統的相關物件,但仍沒擁有任何資源,以預防其它的Player啟動。
Prefetching:
準備開始播放媒體,player若播放位置被改變,則重新配置
Prefetched:
進入播放狀態
Started:
呼叫start,將Player放至Startedstate。
當Player物件的time-basetime和媒體時間mapping後,開始播出。
Player提供TransitionEvents,可以從這個狀態移至另一個狀態中。
ControllerListener介面也提供可決定player位在哪個狀態下和適時地提出respond,例如:
在Player或Process中呼叫asynchronous的method,就需ControllerListener提供event來決定operation何時被完成。
MethodsAvailableinEachPlayerState
為了防止race(猛轉,急速)的狀態產生,在Player的每個狀態中並非所有method都可以呼叫,下表為在Player的每個階段中,JMF定義的method使用限制說明,如果是不合法的method,player就會丟出exception。
Method
UnrealizedPlayer
RealizedPlayer
PrefetchedPlayer
StartedPlayer
addController
NotRealizedError
legal
ClockStartedError
deallocate
getControlPanelComponent
getGainControl
getStartLatency
getTimeBase
getVisualComponent
mapToTimeBase
ClockStoppedException
removeController
setMediaTime
setRate
setStopTime
StopTimeSetError
ifpreviouslyset
setTimeBase
syncStart
NotPrefetchedError
Table2-1:
Methodrestrictionsforplayers.
Processors
Processors也可以用來撥放mediadata。
除了提供媒體撥放的設備外,Processor也可以透過DataSource輸出mediadata,以便讓其他的Player和Processor來呈現,更進一步地透過其他Processor來操作或傳送到其他的目的地,如檔案中。
PresentationControls
參見Controls
ControllerEvents提供三種類的events:
changenotifications---像RateChangeEvent、DurationUpdateEvent、FormatChangeEvent表示可以改變Controller的一些屬性,例如:
Player提供RateChangeEvent,當rate被改變時就呼叫setRate。
transitionevents---TransitionEvents允許我們的程式在Controllerobjects’sstate下改變時得到respond,不論是從那個狀態到哪個狀態,player都提供transitionevents。
closedevents---ControllerClosedEvents由ControllerEvent繼承下來,提供shutsdown功能;
ControllerErrorEvent由ControllerClosedEvents繼承下來,當程式發生錯誤時,可以respondController發生的錯誤及將錯誤造成的影響減到最低。
上圖為JMFevents
Processing
Processor:
是一個從DataSource輸入,執行一些使用者自定的媒體資料處理,再將其媒體資料輸出的Player。
可傳送輸出資料至播放設備或DataSource(DataSource可如同再輸入至另一個Player或Processor,或輸入至DataSink)
上圖為JMFprocessors
媒體資料的處理可分割成幾個階段:
上圖為Processorstages.
Demultiplexing:
剖析inputstream,若stream包含了多個tracks,則將之分離,例如:
QuickTime檔案分成audioandvideotracks。
無論是否有包含多樣的資料,皆會自動執行Demultiplexing。
Pre-Processing:
對inputstream中的tracks做特效(effect)的演算處理。
Transcoding:
轉碼;
壓縮=﹥解壓縮。
Post-Processing:
對decodedtracks做特效(effect)的演算處理
5.
Multiplexing:
將由多個tracks的合併成單一datastream。
例:
將分離的audioandvideotracks合併成單一個MPEG-1datastream,可藉由setOutputContentDescriptor的method定義輸出流的資料型態。
6.
Rendering:
將播放媒體出來。
Processing執行的每個階段,由不同的processingcomponent所構成,而這些processingcomponent就是JMFplug-ins。
假如Processor支援TrackControls的話,你可以選擇用何種plug-ins來處理track。
JMFplug-ins分為五種types:
Demultiplexer—剖析媒體資料,例如:
WAV,MPEGorQuickTime。
若媒體流為多樣複合時,則分開個別處理。
Effect—對媒體資料進行特效
Codec—進行編/解碼
Multiplexer—合併多個tracks為單一個輸出流並傳送結果至輸出的DataSource
Renderer—處理track的媒體資料,並傳送至螢幕或喇叭
ProcessorStates
介於Realizingstate和Realizedstate之間,Processor提供二個額外備用的階段:
Configuring和Configured。
當Configure被呼叫時,Processor進入Configuring階段,已連結DataSource、可對inputstream做demultiplexes、讀取有關inputdata的格式資訊。
當Processor進入Configured階段時,已連結DataSource和決定出dataformat。
此時ConfigureCompleteEvent將可使用。
當Realize被呼叫時,Processor將轉換到Realized狀態下,而Processor已被完全建構出來。
當Processor在Con
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JMF API 文档 中文版