• 沒有找到結果。

根據第三章對程式移植頇替換的資料庫的分析,及剖析講解呈現檔案資料的 組成,第四章對播放器架構與播放流程的了解後,本章會說明三大模組,分別為 權限管理模組、資料剖析模組、呈現模組程式移植的部份及實作的方式。

5.1 權限管理模組

此模組負責認證使用者的帳號密碼來確認使用者是否有權限觀看內容。權限 管理模組有二個子模組,分別為 DRM Client 及 Decoder。

5.1.1 DRM Client

此模組是利用講解檔中的 pubilsh.xml 中所記錄的 DRM Server 資訊,分別 為 Server IP 與課程 ID,對使用者所輸入的帳號密碼,透過網路連線回 DRM Server 作權限的認證與解密的金鑰。

有以下運作步驟:

1. 如講解檔有 DRM 加密保護機制,請使用者輸入帳號密碼。

2. 傳送使用者帳號密碼資訊至 DRM Server。

3. DRM Server 認證使用者帳號密碼與課程 ID。

4. 認證失敗,回傳錯誤訊息至播放器 client 端。

5. 若認證正確,取得解密金鑰。

6. 回傳解密金鑰至播放器 client 端。

如下圖 18 的 DRM Client 的運作:

圖 18 : DRM Client 運作圖

5.1.2 Decoder

Decoder 模組負責解密解壓縮的動作。解密部分是利用 DRM client 所取得 的解密金鑰作 DES 解密,而解壓縮則利用 UnZip 解壓縮,最後將 bst 檔還原。

有以下步驟: 組 Parser 及 Media Extractor,達成資料剖析模組的功能。

5.2.1 Parser

Parser 模組是負責將 Decoder 模組所解密解壓縮後的原始資料做分析的動 作,bst 檔主要由場景圖(Scene Graph)、腳本系統(Script System)與多媒體檔案 所構成。接著說明場景圖與腳本系統內部資料[21]:

1. 場景圖(Scene Graph)為紀錄每個場景畫面中的演員資訊包括相對座 標、大小、相對的多媒體檔案等,實作時以下列程式類別(class)虛擬 碼表示:

class SceneGraph{

vector<CActor*> m_ActorList;

int m_ActorIndex;

vector<CActor *> m_pMouseActors;

CActor * m_pMouseActor;

wstring m_SceneName;

int m_Width,m_Height;

wsting m_Outline;

...}

2. 腳本系統(Script System)為記錄錄製時,講解者在畫面上利用畫筆的 塗鴉動作,有畫彩色筆、畫線、畫矩形等等。實作時以下列程式類別 (class) 虛擬碼表示:

5.2.2Media Extractor

Media Extractor 模組負責將多媒體檔案擷取存入 device 中,在 Device 中 主要分三個資料夾來存放檔案,分別為 Content、Material、track 三個資料夾,

其詳細存放內容為下:

1. Content:存放由 Content Server 下載的檔案。

2. Material:存放場景圖中演員資料檔案。

3. Track: 存放錄製的聲音或影像檔案

5.3 呈現模組

此模組根據 bst 檔的內部資料結構,將解析擷取出來的多媒體演員依據 Scene Graph 與 Script System 呈現畫面出來。包括圖片、聲音及塗鴉動作。

此模組又細分為 Script Player、Image Module 及 Audio/Video Module,已 Class CScriptAction{

DWORD Time;

wstring Action;

vector<wstring> Parameters;

...}

Class CScriptSystem{

DWORD m_TotalScriptTime;

vector<CScriptAction> Actions;

vector<CScriptAction>::iterator NowAction;

...}

class CActor{

wstring ActorName;

wstring m_ImageFileName;

int m_X,m_Y;

int m_Width,m_Height;

int m_ZOrderPosition;

...}

達成呈現模組的功能。

由於 PC 端的講解手錄製工具製作時,其場景定義的解析度為 720x540,大 於 Windows Embedded CE6.0 端的顯示畫面解析度 640x480,本研究於是利用第 二章所探討的座標協調,將多媒體講解呈現的座標系統協調至 Windows

Embedded CE6.0 端,以下說明之。

5.3.1 座標系統協調

在 PC 端的場景畫面解析度為 720x540 其比例為 4:3 屬於寬式的畫面,而在 Windows Embedded CE6.0 端的場景畫面解析度為 640x480 其比例為 4:3 屬於寬 式的畫面,為了維持多媒體講解呈現播放時的一致性,於是本研究採用等比例縮 小來符合,呈現較可觀看之畫面。

假設 Windows Embedded CE6.0 端場景解析度為

Scene_Width(640)xScene_Height(480),其座標系統為:

(New_X,New_Y):0≦New_X≦Scene_Width,0≦New_Y≦Scene_Width

(New_Width,New_Height):0≦New_Width≦Scene_Width,0≦New_Height≦

Scene_Width

PC 端的座標系統為:

(Old_X,Old_Y):0≦Old_X≦720,0≦Old_Y≦540

(Old_Width,Old_Height):0≦Old_Width≦720,0≦Old_Height≦540 於 Windows Embedded CE6.0 端上的座標系統協調後:

New_X = Old_X*(480/540) , New_Y = Old_Y*(640/720)

New_Width = Old_Width *(480/540), New_Height = Old_Height* (640/720) 上式協調後的座標系統,可利用於呈現時播放腳本系統及呈現演員,維持 PC 與 Windows Embedded CE6.0 端播放多媒體講解呈現的一致性。

5.3.2 Script Player

此模組將腳本系統(Script System)中描繪的動作利用計時器,播放錄製者

此模組有以下運作方式:

1. 啟動計時器。

2. 每次計時器觸發時,根據時間去判斷腳本系統,並選取腳本動作,選取 規則為腳本系統動作中描述的時間點大於上次計時器觸發的時間點,小 於目前計時器觸發的時間點。

3. 檢查是否有腳本動作可播放。

4. 若否,結束腳本系統播放。

5. 若有腳本動作,取得腳本動作的資訊,其中有座標、動作類型、畫筆顏 色等等。

6. 利用上一節 5.3.1 所敘述之座標協調公式,做座標協調動作。

7. 將腳本動作呈現於畫面上。

8. 周而復始的計時器觸發。

如下圖 20 所示:

圖 20 : Script Player 運作圖

5.3.3Image Module

此模組的功能為將場景圖(SceneGraph)中所描述的圖片演員呈現於畫面,由 於 Windows Embedded CE6.0 端作業系統支援的圖片格式有限如同第三章程式移 植分析中說明。藉由第三章表格 8 程式移植分析的對應,本研究利用 CxImage 這個程式庫將圖片演員呈現。

Image Module 有以下運作方式:

1. CxImage 根據場景圖(Scene Graph)所描述的圖片演員載入 2. 取得圖片演員的相對座標資訊

3. 根據上一節 5.3.1 所敘述之座標協調公式,對座標做轉換。

4. 利用 CxImage 調整圖片解析度。

5. 利用 CxImage 將圖片呈現於畫面。

如下圖 21 所示:

圖 21 : Image Module 運作圖

在程式移植的部分,由於 PC 端呈現圖片演員是利用 GDI+程式庫中的 Bitmap 及 Image 兩個程式類別,但 Windows Embedded CE6.0 端 GDI 程式庫中不支援,

且 Windows Embedded CE6.0 端 MFC 程式庫中的 CBitmap 及 ATL 程式庫中的 CImage 支援的圖檔格式有限,加上不支援具有透明色圖片的混合,經由第三章程式移植 分析表格 8 中可得知對應,將 GDI+中使用的 Bitmap 及 Image,全替換為 CxImage 此程式庫來運作。

5.3.4 Audio/Video Module

由於在 Windows Embedded CE6.0 端尚未有直接可呼叫的函式或程式類別 (class)可播放聲音或影像,經由第三章表格 8 程式移植的分析,本研究利用 DirectShow 播放聲音或影像。

聲音或影像檔案,皆被分割為十秒鐘一份檔案,於是此模組在播放時,每隔 十秒切換一次檔案,有以下運行方式:

1. 根據軌道資訊中所描述的聲音或影像檔案列表中,載入並播放第一個聲 音檔。

2. 檢查是否還有下一個聲音檔 ? 3. 如果否,結束播放。

4. 如果是,預先載入 下一個聲音檔 。 5. 檢查前一個聲音檔是否播完?

6. 如果否,則等待。

7. 如果是,播放此聲音檔 如下圖 22 所示:

圖 22 : Audio/Video Module 運作圖

在程式移植部分,因為 PDA 端播放器使用 Windows Media Control for Pocket IE 此控制項來播放聲音及影像,但是要移植至 Windows Embedded CE6.0 端時,

Windows Embedded CE6.0 不支援 Windows Media Control for Pocket IE,經由 第三章表格 8 程式移植的分析,使用 DirectShow API 來播放聲音及影像。

相關文件