二、相關背景
1.SIP簡介
2. Smartphone簡介
3. JMF (Java Media Framework)簡介
4. J2ME (Java 2 Platform, Micro Edition)簡介
5. RTP (Real-Time Transport Protocol)簡介
1.
SIP簡介 back
SIP是Session Initiation Protocol
的縮寫;是一種�釔野弮h�衁熙q訊協定,用於“建立”、“變更”、“結束”即時的多媒體通訊,但並不負責實際上的資料傳輸。由於SIP使用text-
base的溝通方式,所以架構比較簡單,並且可以在同一個連線中傳遞多樣化的資訊。另外因為SIP建立於應用層中,因此許多現有的應用軟體,可以經簡單的
修改便和SIP結合,而達到多方多媒體通訊。
SIP傳輸的建立,主要是client端的User
Agent上線後,會向server註册並登錄SIP號碼及IP等資訊。當某一端的UA要和其它線上UA建立連線時,邀請方會向server發出
INVITE,Server便會查詢被邀請方的IP,並將此要求傳送給被邀請方。當被邀請方回應OK後,server便將被邀請方的回應傳回給邀請方,之
後兩個UA間便會直接建立起P2P的連線。
2.
Smartphone簡介 back
Smartphone是指具有功能強大的作業系統,並且結合了電話通訊及個人數位助理(PDA)功能的無線電話。不但包含語音及即時訊息功能,更有e-
mail、行事曆和連絡人等個人資訊管理功用,還可藉由和電腦連線,安裝新的應用程式。
較常見的Smartphone作業系統有sybian以及Microsoft的Windows
CE。但自從Microsoft將PDA上的WinCE稱為Poket
PC;將Smartphone上的WinCE稱為Smartphone後,Smartphone便成為專指使用Microsoft的Smartphone
作業系統的手機。
在本專題中,將採用上述後者的定義。報告中Smartphone皆是指使用Microsoft的Smartphone作業系統的手機。
3.
JMF (Java Media Framework)簡介 back
Java Media
Framework是Sun所發展的一套架構,目的是為了將Time-Based
Media與我們所熟知的Java應用程式或Applet結合在一起,簡單來說便是利用Java程式語言開發多媒體程式時所要遵守的一套架構。
所謂Time-Based
Media是說,當時間改變時此檔案的內容也會跟著改變,也就是這一秒的檔案內容可能跟下一秒有所不同。舉凡影片檔、聲音檔等等皆會隨著時間進行而改變。

Media processing model
JMF的架構方面,為了讓開發者能夠容易上手,JMF的大架構採用了非常生活化的方式,例如用錄影機來看影片一般,錄影帶是此影片檔案的資料來源,而此影
片檔經過錄放影機的處理後將影像檔呈現在電視螢幕上、將聲音播放在喇叭上。錄放影機就相當於一個Player或是Processor,將檔案經過處理後輸
出;螢幕及喇叭就等於是輸出裝置。

Recording, processing, and presenting time-based media
用比較專業化的術語來講,檔案來源叫做Data Source,Data
Source可能是從Web Cam上擷取下來的即時影像(如同本專題研究)或是來自於伺服端的檔案等等,而Web Cam等「製作」Data
Source的工具就叫做Capture Device;處理Data
Source的工具有兩種─Player以及Processor,處理的內容例如將影片檔淡化或加強色彩對比、將聲音檔淬取出想要的部分等等;
Player的處理能力較低,Processor則可以用來做較複雜的處理;Player或Processor處理過後的輸出檔可用Output
Device去呈現。
Data
Source以及Player等的API是屬於比較高階的工具,JMF也提供比較低階的API─JMF Plug-In
API,讓開發者可以依著自己的需要去做高階API能力所不及、更為複雜的處理,不過這方面並不在本專題的研究範圍中。

High-level JMF achitecture
4.
J2ME (Java 2 Platform, Micro Edition)簡介
back
Java 2 Platform, Micro
Edition是Sun為了因應記憶體及功能都受限制的行動設備而開發出來的環境,簡單來說,就為了開發手機、PDA等行動裝置的軟體而設計的環境。此類
行動設備體積小,內部的記憶體較一般桌上型個人電腦小,CPU的運算速度也較慢,固然在功能上也會受限,比之個人電腦其可行的功能當然就少很多。因此
J2ME的API雖然是以J2SE為基礎而發展,但卻比J2SE要小的多,因為行動設備的記憶體相當小,所以必須撰寫較小的程式以配合小記憶體的裝置運
作。
J2ME和J2SE第一個不同的地方在於J2SE的應用程式叫做Application,而J2ME則叫做MIDlet。MIDlet是所有J2ME應用
程式的基礎,在實做一個J2ME的應用程式時最基本的寫法就是extends MIDlet。例如:
public class FrameTest extends MIDlet {}
基本上一個MIDlet就代表手機上的一個頁面,切換到別的頁面就等於切換到別的MIDlet。
每一個MIDlet都有它自己的Life-Cycle:
paused:此MIDlet被中斷原本在執行的工作並釋出資源,呈現暫停的狀態。例如看即時影片時突然有人打電話來,此時即時影片程式便暫停,釋出手機
上的資源如記憶體,執行電話方面的程式。
active:此MIDlet在執行當中
destroyed:此MIDlet被銷毀,也就是其Life結束。

MIDlet’s Life Cycle
每一個J2ME的應用程式,只要是要呈現出畫面的就一定要有Display物件,利用Display物件的setCurrent()方法來表示要呈現的畫
面,例如:
Display.getDisplay(this). setCurrent(textBox)
<註三>
5.
RTP (Real-Time Transport Protocol)簡介
back
Real-Time Transport
Protocol提供兩端點即時檔案傳輸的功能,可以用在unicast以及multicast上。

RTP architecture
RTP服務能讓使用者分辨傳送檔案的格式、傳來的檔案要用什麼樣的順序來呈現以及將不同檔案格式的資料整合在一起。
不過RTP並不保證傳送的資料到Client端後會很完整或有按照順序,由於RTP是建構在UDP上,所以封包的遺漏可以說是相當頻繁。因此這部分就需要
Client端在接收檔案後,透過每一個封包上的packet header資訊來重建檔案以及對漏掉的封包提出再傳輸的要求。

RTP data-packet header format