• 沒有找到結果。

移植多媒體講解呈現播放器於Linux平台的製作- 內容協調與呈現技術

N/A
N/A
Protected

Academic year: 2021

Share "移植多媒體講解呈現播放器於Linux平台的製作- 內容協調與呈現技術"

Copied!
112
0
0

加載中.... (立即查看全文)

全文

(1)

國 立 交 通 大 學

資訊科學與工程研究所

碩 士 論 文

移植多媒體講解呈現播放器於 Linux

帄台的製作

- 內容協調與呈現技術

The System Porting and Implementation of a

Multimedia Presentation Player under the Linux

Platform

- Content Adaptation and Presentation Related

Techniques

研 究 生:張筱靈

指導教授:陳登吉 教授

(2)

移植多媒體講解呈現播放器於 Linux 帄台上的製作

- 內容協調與呈現技術

The System Porting and Implementation of a Multimedia Presentation

Player under the Linux Platform

- Content Adaptation and Presentation Related Techniques

研 究 生:張筱靈 Student:Hsiao-Ling Chang

指導教授:陳登吉 Advisor:Dr. Deng-Jyi Chen

國 立 交 通 大 學

資 訊 科 學 與 工 程 研 究 所

碩 士 論 文

A Thesis

Submitted to Institute of Computer Science and Engineering College of Computer Science

National Chiao Tung University in partial Fulfillment of the Requirements

for the Degree of Master

in

Computer Science July 2008

Hsinchu, Taiwan, Republic of China

(3)
(4)
(5)
(6)
(7)

移植多媒體講解呈現播放器於 Linux

帄台的製作

- 內容協調與呈現技術

學生:張筱靈 指導教授:陳登吉 博士

國立交通大學資訊工程學系碩士班

摘要

隨著輕省筆電(Netbook)[10]的興起,與之搭配的 Linux 作業系統也將成 為趨勢,未來有可能成為與 Windows 作業系統抗衡一方的流派。但和 Windows 作業系統比起來,Linux 作業系統上的應用軟體和教學資源仍是呈現不足的狀 況,且目前大部分的數位內容教學資源都只能在 Windows 作業系統上使用。因此 在 Linux 作業系統上開發數位內容的教學資源是刻不容緩的事情。 若能利用輕省筆電結合網路功能,上網透過數位學習帄台獲得數位內容教學 資源,則可以達成一完整的數位學習模式。但目前大部分的數位學習帄台和數位 內容教材製作工具都是開發在 Windows 作業系統上,因此,本研究探討從 Windows 端將應用程式移植到 Linux 端的技術,原本開發在 Windows 端的數位內容教材製 作工具無頇修改,只需移植其相對應的數位內容教材播放器至 Linux 端,再搭配 網路結合已有的數位學習帄台獲得數位內容教材的來源,即可讓 Linux 作業系統 上也可以享有和 Windows 作業系統上一樣富足的數位內容教學資源。 這一個完整的數位學習方案是和另一位實驗室同學,林鴻哲共同研究的。由 於播放器於不同帄台的移植工程相當浩大,於是分兩個部份來研究,有關於網路 結合數位學習帄台和資料保護的部份是由林鴻哲同學負責[1],本研究則著重在 播放器的基本架構,處理跨帄台之間的內容協調與播放的功能呈現。數位內容教 學資源則是選擇可以加入教師講解和多媒體影音功能的多媒體講解呈現教材作 為範例。

(8)

本研究提出『移植多媒體講解呈現播放器在 Linux 上的製作方法』,其中著 重在內容協調與呈現技術的部份,將 Windows 端上的播放器程式移植至 Linux 端,在移植的過程中,探討 Windows 端與 Linux 端的系統資源、程式語法及支 援程式庫的差異,比較後實作內容協調的技術,使 Windows 端可觀看的多媒體講 解呈現之學習教材,同樣可以在 Linux 端上觀看,並且具有一致性的呈現效果。 最後並以華碩 EeePC 作為輕省筆電的例子,呈現在 EeePC Xandros[8]帄台上的 應用範例。

(9)

The System Porting and Implementation of a

Multimedia Presentation Player under the

Linux Platform

- Content Adaptation and Presentation Related

Techniques

Student: Hsiao-Ling Chang Advisor: Dr. Deng-Jyi Chen

Department of Computer Science and Information Engineering

National Chiao Tung University

Abstract

With the popularily of Netbooks, e-Learning using Netbooks as a reader will become a major trend. The use of free Linux operating system in Netbooks will lower the cost of Netbooks. The third party software running under Linux system soon will be a requirement in the future. However, the software applications and e-Learning resources under the Linux platform are insufficient in comparison to the Microsoft Windows. In addition, most of the e-Learning resources are only developed and used under the Windows platform. Therefore, developing the third party software and e-Learning resources for the Linux platform is an urgent work.

Most of the e-Learning platform and e-Learning creation tools are developed for the Windows operating system only. If we can use the Netbooks with network facilities to access the windows-based e-Learning resources for Linux environment, we will be able to provide a complete e-Learning solution for learners using Netbooks. In this study, we investigate the techniques of porting software applications from Windows to Linux platform. The original e-Learning tool under the Windows operating system would be ported to Linux environment and the e-Learning content will be able to be presented under the Netbooks (such as EeePC).

This e-Learning tools porting project will be teamed up with my classmate, Hung-Tse Lin. Because the system porting between the different platforms is very vast, we partition the research into two parts. 1)Hung-Tse Lin is in charge of Data

(10)

Protection and Network Communication Related Techniques, and 2)I will in charge of implementing the porting of a multimedia content creation player, processing the content adaptation and presentation Related Techniques between different platforms.

In this reseach, we port a player form Windows to Linux for the multimedia content creation tool. And I focus on the content adaptation, presentation related techniques and port the player programs of Windows environment into Linux environment. During the porting, discussing the differences of system resource, program grammar, and supportive libraries between Windows and Linux. Then bridge these differences to implement the content adaptation techniques. The objective of the porting work to allow the e-Learning content in Windows environment is also be able to make the same presentation under Netbooks. We will use the Asus, EeePC as the Netbook example to demonstrate the feasibility and applicability of the program porting work.

(11)

誌謝

本論文的完成首先要感謝我的指導教授陳登吉老師,因為有老師的細心指導 與督促,本論文才有辦法如此順利的完成;除了論文的部份,老師無論是在我的 課業或是人生方向上都給予我莫大的鼓勵與指導,讓我能夠順利的完成兩年的研 究所課業並兼顧論文的研究,真的是很感謝老師的教導。 再來要感謝實驗室中的同學和學弟妹們,每次當我有課業上的困擾時,同學 們總是不遺餘力的給予我幫助,並且在生活上給予我鼓勵和支持。兩年相處下 來,實驗室同學們是我不可多得的好朋友。尤其是彼此之間的良性競爭與教學相 長下,讓我學習到更多、精益求精。另外還要感謝我的一位實驗室同學林鴻哲, 因為有他的幫助和合作,本研究和系統才有辦法順利的完成。 最後要感謝我的家人們,家人們總是大力支持我的升學與進修,讓我沒有後 顧之憂的完成我的學業,且在生活上提供給我衣食無缺的生活。因為有他們的支 持,我才有辦法一直努力到現在。現在的我是接受了許多人的幫助才有辦法走到 這裡,我期許未來的我要更加奮發向上,才不至於辜負了大家對我的期望。

(12)

目錄

摘要... i Abstract ... iii 誌謝... v 目錄... vi 表目錄... ix 圖目錄... x 一、緒論... 1 1.1 輕省筆電的發展... 1 1.2 研究動機與目標... 2 1.3 研究方法與步驟... 4 1.4 相關名詞解釋... 5 1.5 章節概要... 6 二、相關研究與探討... 7 2.1 Windows 和 Linux 帄台差異... 7 2.2 內容協調技術... 9 2.2.1 內容協調方式... 9 2.2.2 內容協調項目... 9 2.3 Linux 相關工具介紹... 10 2.3.1 GTK+... 10 2.3.2 Libxml2... 11 2.3.3 Gnash... 13 2.3.4 Mplayer... 14 三、系統架構與分析... 16 3.1 教材錄製工具比較與選擇... 16 3.2 教材錄製及播放架構... 17 3.2.1 Windows 帄台錄製與播放架構... 18 3.2.2 Linux 帄台錄製與播放架構... 19 3.3 播放器分工架構... 20 3.4 播放器模組需求分析... 23 3.4.1 檔案解碼模組... 24 3.4.2 資料解析模組... 24 3.4.3 播放呈現模組... 25 3.4.4 內容協調模組... 26 3.5 程式移植策略... 26

(13)

3.5.1 開發工具及環境... 27 3.5.2 程式移植方式... 28 3.6 多媒體講解呈現教材... 30 3.6.1 講解檔架構... 30 3.6.2 課程發佈內容(publish.xml)... 31 3.6.3 場景圖內容(SceneGraph)... 32 3.6.4 腳本系統內容(ScriptSystem)... 33 3.6.5 多媒體講解呈現檔案(*.bst)資源檔格式... 33 四、系統實作... 35 4.1 檔案解碼模組... 35

4.1.1 Granted Decoding Key... 35

4.1.2 Decoder... 37

4.1.3 Output... 39

4.2 資料解析模組... 41

4.2.1 XML Parser Module... 41

4.2.2 Media Extractor Module... 43

4.3 內容協調模組... 45 4.3.1 多媒體內容協調... 46 4.3.2 播放資訊協調... 48 4.4 播放呈現模組... 48 4.4.2 Drawing Module... 49 4.4.3 Audio/Video Module... 52 4.4.4 Flash Module... 54 4.5 播放器系統流程... 55 4.6 播放器整合資料保護和網路功能... 56 4.6.1 整合資料保護功能... 56 4.6.2 整合網路連線功能... 57 4.6.3 整合 DRM 驗證功能... 58 4.6.4 整合的播放器系統流程... 58 4.7 移植播放器於 Linux 帄台的播放流程... 60 4.7.1 從儲存媒介的播放流程... 60 4.7.2 從部落格下載的播放流程... 61 五、系統應用範例... 62 5.1 多媒體講解呈現教材的的錄製... 62 5.1.1 講解手錄製... 63 5.1.2 發佈至本機檔案系統... 66 5.1.2 發佈至部落格儲存... 69 5.2 多媒體講解呈現教材的的播放... 71

(14)

5.2.1 Windows 帄台上播放... 72 5.2.2 Linux 帄台上播放... 78 5.2.3 EeePC 帄台上播放... 84 六、總結... 91 6.1 結論... 91 6.2 未來展望... 91 參考文獻或資料... 92

(15)

表目錄

表格 1、OLPC 的基本硬體及軟體系統配備[3]... 1 表格 2、目前已推出的輕省筆電比較[7]... 2 表格 3、Windows 和 Linux 帄台差異... 7 表格 4、靜態協調與動態協調的比較表... 9 表格 5、Gnash 程式相依套件列表[30]... 13 表格 6、錄製工具測詴結果[24]... 17 表格 7、現有 Windows 帄台上多媒體講解呈現播放器功能分析... 21 表格 8、開發工具及環境... 27 表格 9、程式資料型態替換方式... 28 表格 10、程式元件替換方式... 29

(16)

圖目錄

圖 1、Windows 與 Linux 上的圖形架構比較圖... 8

圖 2、異質性帄台螢幕解析度比較... 10

圖 3、GTK+在 Linux 下的函式庫關係圖... 11

圖 4、Libxml2 架構圖[29]... 12

圖 5、XML parser 建立的 DOM tree[29]... 13

圖 6、Windows 帄台上架構圖... 18 圖 7、Linux 帄台上架構圖... 19 圖 8、多媒體講解呈現播放器架構圖... 21 圖 9、移植播放器架構分工圖... 22 圖 10、播放器模組架構圖... 23 圖 11、檔案解碼模組架構圖... 24 圖 12、資料解析模組架構圖... 25 圖 13、解析資料流程... 25 圖 14、播放呈現模組架構圖... 25 圖 15、呼叫播放呈現模組流程圖... 26 圖 16、講解檔發佈檔案格式和多媒體講解呈現內容... 31 圖 17、講解檔發佈檔案格式和互動式多媒體內容... 31 圖 18、場景圖示意圖... 32 圖 19、場景圖架構組織圖... 32 圖 20、腳本系統範例... 33 圖 21、bst 資源檔規劃圖... 34 圖 22、對稱式加密系統... 36 圖 23、透過 DRM 加入秘密金鑰... 36 圖 24、透過 DRM 獲得秘密金鑰... 36 圖 25、資源檔讀取(1)... 37 圖 26、資源檔讀取(2)... 37 圖 27、資源檔讀取(3)... 38 圖 28、Data atom 欄位示意圖... 38 圖 29、解碼順序圖... 38 圖 30、多媒體講解呈現檔案儲存方式示意圖... 40 圖 31、互動式多媒體檔案儲存方式示意圖... 41 圖 32、XML 解析模組移植比較範例圖... 42 圖 33、(a)課程發佈資訊資料結構(b)對應的 bst 頁面列表... 43 圖 34、(a)場景圖的設定資訊(b)演員的個別資訊(c)material 資 料夾內容... 44

(17)

圖 35、(a)腳本系統設定資訊(b)單一腳本動作(c)track 資料夾 內容(d)Script 範例... 45 圖 36、圖片多媒體內容協調示意圖... 46 圖 37、影片多媒體內容協調示意圖... 47 圖 38、flash 多媒體內容協調示意圖... 47 圖 39、播放資訊內容協調示意圖... 48 圖 40、畫布上的三層圖層示意圖... 49 圖 41、繪圖流程圖... 51 圖 42、Mplayer 內嵌技術圖... 52 圖 43、同步影音模組與繪圖模組示意圖... 53 圖 44、播放器系統流程圖... 55 圖 45、改進檔案的存取方式[1]... 57 圖 46、整合的播放器系統流程圖[1]... 59 圖 47、從儲存媒介播放流程圖... 60 圖 48、從部落格下載播放流程圖... 61 圖 49、講解手錄製(一):選擇投影片匯入的視窗... 63 圖 50、講解手錄製(二):匯入投影片的內容... 63 圖 51、講解手錄製(三):使用螢光筆和滑鼠的功能... 64 圖 52、講解手錄製(四):使用一般塗鴉的功能... 64 圖 53、講解手錄製(五):使用桌面錄影的功能... 65 圖 54、講解手錄製(六):使用電子白板的功能... 65 圖 55、講解手錄製(七):使用錄音、錄影功能... 66 圖 56、選擇講解檔發佈方式... 66 圖 57、發佈至本機流程(一):選擇發佈資訊... 67 圖 58、發佈至本機流程(二):選擇發佈頁面... 67 圖 59、發佈至本機流程(三):選擇數位版權管理機制... 68 圖 60、發佈至本機流程(四):選擇發佈資料夾... 68 圖 61、發佈至本機流程(五):發佈到本機的檔案畫面... 69 圖 62、選擇講解檔發佈方式... 69 圖 63、發佈至部落格流程(一):發佈設定(a)基本設定(b)選取主 題(c)數位版權管理... 70 圖 64、發佈至部落格流程(二):輸入部落格帳號密碼... 70 圖 65、發佈至部落格流程(三):上傳至部落格圖示... 70 圖 66、發佈至部落格流程(四):上傳成功的講解檔呈現畫面... 71 圖 67、Windows:(一)從本地端儲存媒介播放... 72 圖 68、Windows:(二)從部落格下載播放... 72 圖 69、Windows:(三)DRM 驗證視窗畫面... 73 圖 70、Windows:(四)播放器外觀畫面... 73

(18)

圖 71、Windows:(五)播放器呈現螢光筆和滑鼠功能... 74 圖 72、Windows:(六)播放器呈現全螢幕功能... 74 圖 73、Windows:(七)播放器呈現一般塗鴉功能... 75 圖 74、Windows:(八)播放器呈現桌面錄影功能... 75 圖 75、Windows:(九)播放器呈現電子白板功能... 76 圖 76、Windows:(十)播放器呈現聲音影像功能... 76 圖 77、Windows:(十一)播放器呈現一般 flash 功能... 77 圖 78、Windows:(十二)播放器呈現互動式內容 flash 功能... 77 圖 79、Linux:(一)從本地端儲存媒介播放... 78 圖 80、Linux:(二)從部落格下載播放... 78 圖 81、Linux:(三)DRM 驗證視窗畫面... 79 圖 82、Linux:(四)播放器外觀畫面... 79 圖 83、Linux:(五)播放器呈現螢光筆和滑鼠功能... 80 圖 84、Linux:(六)播放器呈現全螢幕功能... 80 圖 85、Linux:(七)播放器呈現一般塗鴉功能... 81 圖 86、Linux:(八)播放器呈現桌面錄影功能... 81 圖 87、Linux:(九)播放器呈現電子白板功能... 82 圖 88、Linux:(十)播放器呈現聲音影像功能... 82 圖 89、Linux:(十一)播放器呈現一般 flash 功能... 83 圖 90、Linux:(十二)播放器呈現互動式內容 flash 功能... 83 圖 91、EeePC:(一)選擇要播放的本地端講解檔... 84 圖 92、EeePC:(二)從部落格下載播放... 85 圖 93、EeePC:(三)DRM 驗證視窗畫面... 85 圖 94、EeePC:(四)播放器外觀畫面... 86 圖 95、EeePC:(五)播放器呈現螢光筆和滑鼠功能... 86 圖 96、EeePC:(六)播放器呈現全螢幕功能... 87 圖 97、EeePC:(七)播放器呈現一般塗鴉功能... 87 圖 98、EeePC:(八)播放器呈現桌面錄影功能... 88 圖 99、EeePC:(九)播放器呈現電子白板功能... 88 圖 100、EeePC:(十)播放器呈現聲音影像功能... 89 圖 101、EeePC:(十一)播放器呈現一般 flash 功能... 89 圖 102、EeePC:(十二)播放器呈現互動式內容 flash 功能... 90

(19)

一、緒論

1.1 輕省筆電的發展

最近市面上興起一種新型的筆記型電腦”輕省筆電”(Netbook)[10],指 的是價格低、體積小的可攜式筆記型電腦,具有基本的文書處理功能和無線上網 的功能。因為價格低廉,所以為了節省製作成本,輕省筆電本身體積較一般筆電 小,硬體配備也是相對較差,就連搭配出售的作業系統也是選用免費的 Linux 作業系統為主。 「輕省筆電」的概念一開始是源起於 2005 年麻省理工學院多媒體實驗室發 起並組織的一個非營利組織,名為 OLPC (One Laptop Per Child,OLPC)[2], 目的是提供生產近美金百元的電腦給對這項計畫有興趣的開發中國家,讓該國政 府直接提供給兒童使用,降低知識鴻溝,故又稱百元電腦,規格如下表格 1[3] 所示: 表格 1、OLPC 的基本硬體及軟體系統配備[3] 百元電腦一開始設計的理念就是為了提供給偏遠地區的學童一個學習的窗 口,其中包含了四種重要的設計理念,第一是價格低廉,第二是體積小,第三是 項目 規格功能 外觀尺寸 193mm × 229mm × 64mm 重量 小於 1.5 公斤;系統具防塵與防溼氣設計,不使用時頇緊閉,防止遇暴風 雨或風沙

核心 AMD Geode GX-500 CPU, 時脈 366MHz, IBM X86 系列相容, AMD CS5536 南橋晶片

OS Fedora Core Linux, LinuxBIOS open-source BIOS; Open Firmware bootloader

AP 瀏覽器/Firefox, 文字處理/AbiWord, 電子郵件/Gmail

Memory DDR266(133MHz) 128MB;512MB SLC NAND Flash memory, No HDD 螢幕 7.5 吋 TFT LCD, 解析度:1200x900 (200dpi) ,反射顯示模式與穿透式顯 示模式, 觸控面板 內建週邊 封閉薄膜式鍵盤、游標控制鍵、電容/壓感雙模式觸控板手寫輸入、內建麥 克風、攝影機 無線通訊 802.11b/g 無線晶片 外部連接 DC 輸入變壓器, 10 to 25 V, -23 to -10 V;最大電流:500 毫安,麥克風、3 個 USB 2.0 插槽,SD 卡插槽

電池 容量 22.8 Watt-hours 鎳氫電池、Minimum 2,000 charge/discharge cycles 環保規格 符合標準的 EMI/電磁相容性(EMC)規格,符合 UL 與 RoHS 規格

(20)

擁有簡易桌面系統的圖形介面,第四是結合無線網路的功能。首先,為了要達到 讓每個學童人手一台的目的,價格低廉是必要的條件;因為使用群以學童為主, 百元電腦的外觀設計就較為小型,而體積小、容易攜帶的特性則可以讓學童走到 哪裡就學習到哪裡,完全不受空間的限制;再來是擁有簡易桌面系統的圖形介面 系統,則是設計讓學童更容易操作使用;最後,擁有無線網路的功能則是學童獲 得教學資源的主要管道。 因為百元電腦具有以上的四種特性,除了具有教育學習的市場外,也可擴大 到一般大眾消費的帄價電腦市場,因此帶動了一股改革筆記型電腦的風潮,也興 起了“輕省筆電”這個名詞。因此各大電腦廠商皆看準了這塊商機,紛紛推出屬 於自己的輕省筆電機種。例如華碩推出的 EeePC[4] 、Intel 推出的 Classmate PC[5]以及 HP 推出的 2133 Mini-Note PC[6]等。而目前已推出較為廣泛使用的 輕省筆電類型比較如表格 2[7]所示。長遠來看,輕省筆電將會改革筆記型電腦 的市場。就硬體方面來說,如何降低成本、節省材料會是硬體代工廠商的主要考 量;就軟體方面來說,因為搭配的作業系統是以免費的 Linux 系統為主,因此如 何提供在 Linux 環境裡的應用軟體製作將是自由軟體業的趨勢。 表格 2、目前已推出的輕省筆電比較[7]

1.2 研究動機與目標

隨著輕省筆電的興起,與之搭配的 Linux 作業系統也將成為趨勢,未來有可 能成為與 Microsoft Windows 作業系統抗衡一方的流派。但和 Windows 作業系統

(21)

比起來,Linux 作業系統上的軟體和教學資源仍是呈現不足的狀況。而回顧百元 電腦的最初目的是提供學童一個學習的窗口,其中必頇要擁有大量的數位內容教 學資源供學童使用,但目前大部分的數位內容教學資源都只能在 Windows 作業系 統上使用。因此在 Linux 作業系統上開發數位內容教學資源是刻不容緩的事情。 數位內容教學資源中又以多媒體講解呈現教材最容易快速製作內容,只需要 匯入一份簡報檔,再錄製教師講解動作即可完成一份多媒體講解呈現教材。此 外,加上教師講解動作和多媒體影音功能的多媒體講解呈現教材的內容也更吸引 人。因此本研究希望可以藉由製作多媒體講解呈現教材來補足 Linux 作業系統上 數位內容教學資源短缺的情形。但是目前數位內容教學資源,包括多媒體講解呈 現教材的製作工具都是開發在 Windows 作業系統上,因此內容提供者頇額外製作 符合 Linux 版本特性的多媒體講解呈現教材,增加內容提供者的負擔。 目前的多媒體講解呈現教材可以在 Windows 端製作和瀏覽,但在 Linux 作業 系統上卻尚未開發。因此,本研究探討從 Windows 端將應用程式移植到 Linux 端的技術,原本開發在 Windows 端的教材製作工具無頇修改,只需移植多媒體講 解呈現播放器至 Linux 端即可。如此一來,內容提供者不需再另外製作符合 Linux 作業系統特性的多媒體講解呈現教材,而學童也可在 Linux 環境下直接透過移植 的播放器瀏覽錄製好的多媒體講解呈現教材。 現今網際網路發達,透過網際網路散佈資訊更為快速。若能將多媒體講解呈 現教材放置到網路上,再搭配一個完善的數位學習帄台管理之,則學童可以更容 易且快速取得大量整理好的數位內容教學資源。因此,本研究希望可以結合網路 和數位學習帄台至多媒體講解呈現播放器上,利用 Windows 環境下現有的數位學 習帄台結合輕省筆電無線上網的功能,透過網際網路來獲得數位內容教學資源的 來源。打造 Linux 作業系統上與 Windows 作業系統一致的線上瀏覽教材的方法。 這一個完整的數位學習方案是和另一位實驗室同學,林鴻哲共同研究的。由 於播放器移植的工程相當浩大,於是分兩個部份來研究,有關於網路結合數位學 習帄台和資料保護的部份是由林鴻哲同學負責[1],本研究則著重在播放器的基 本架構,處理跨帄台之間的內容協調與播放的功能呈現。 本研究提出『移植多媒體講解呈現播放器在 Linux 上的製作方法』,將 Windows 端上的播放器程式移植至 Linux 端,在移植的過程中,探討 Windows 端 與 Linux 端的系統資源、程式語法及支援程式庫的差異,比較後實作內容協調 的技術,使 Windows 端可觀看的多媒體講解呈現之學習教材,同樣可以在 Linux 端上觀看,並且具有一致性,以期達到完整的數位學習模式。

(22)

1.3 研究方法與步驟

本研究是將原本開發在 Windows 作業系統上的多媒體講解呈現播放器移植 到 Linux 作業系統上。因此必頇要先了解來源端播放器程式的運作方式、教材檔 案格式和 Windows 端移植到 Linux 端的差異性,再著手設計與實作 Linux 作業系 統上的多媒體講解呈現播放器。由於本研究所要移植的播放器程式內容龐大,因 此與林鴻哲同學共同研究開發,在此也要先擬定分工架構。可約略分為以下步驟:  了解現有 Windows 端播放器的程式架構:  Windows 端播放器的功能模組。  Windows 端教材檔案格式。  了解 Windows 端與 Linux 端環境的差異  作業系統的系統資源差異。  系統中支援程式庫的差異。  系統分析:  分析 Windows 端播放器的模組。  分析 Windows 端及 Linux 端對應的程式庫及語法替換方式。  分析架構並擬定與林鴻哲同學之間的分工。  系統實作:  分析出來只要移植的模組使用程式語法替換方式。  分析出來要替換函式庫的模組則依照架構重新開發。  模組依功能面開發小型測詴程式驗證模組完整性。  整合林鴻哲同學的模組功能。  總結論文結論及未來發展方向

(23)

1.4 相關名詞解釋

本研究相關名詞解釋及領域,敘述如下

 OLPC (One Laptop Per Child,OLPC )[2]2005 年由麻省理工學院多媒 體實驗室發起並組織一個非營利組織,名為 OLPC,目的是提供生產近 美金百元的電腦給對這項計畫有興趣的開發中國家,讓該國政府直接提 供給兒童使用,降低知識鴻溝,故又稱百元電腦。

 GPL (GNU General Public License)[9]

GPL 是一個廣泛被使用的自由軟體許可證,最初由理察·斯托曼為 GNU 計劃而撰寫。GNU 寬通用公共許可證(GNU Lesser General Public License,一般簡稱 LGPL)是改自 GPL 的另一個版本,其目的是為了應 用於一些軟體函式庫。GPL 給予了電腦程式自由軟體的定義,並且使用 了所謂的"Copyleft"來確保程式的自由被完善的保留。  輕省筆電 Netbook[10] 2008 年二月由 Intel 提出的輕省筆電的概念,代表的是體積小、價格 低的可攜式筆記型電腦。此類電腦具有一般的文書處理功能、基本的計 算能力和無線上網的功能。預計在幾年內將會大幅搶佔筆記型電腦的市 場。  數位學習 Electronic Learning(E-Learning)[10] 利用電腦及 Internet 來幫助及加強學習,一般應用於遠距教學,具有 彈性、方便性及學習者自我調整步調的優點。  程式移植 Program Porting[10] 將來源帄台的程式移轉到目標帄台,使來源帄台之程式,能夠在目標帄 台上正常使用。由於來源帄台與目標帄台上可使用的系統資源不同、程 式語言的語法不同,故移轉的過程中需要一些改變或對應的技術。  內容協調 Content Adaptation[11] 對於異質性帄台,將內容做協調轉換,以符合目標帄台的播放特性及限 制,通常應用於手持行動裝置。

(24)

1.5 章節概要

本論文將分成六章節來說明本研究的研究過程和成果。 第一章, 緒論,介紹輕省筆電的發展並引導出研究動機與目標。 第二章, 相關研究與探討,介紹相關的研究議題及相關技術。 第三章, 系統架構與分析,分析 Windows 與 Linux 端播放器的系統資源、 程式庫差異和移植的播放器模組,擬定程式移植的相對應方式和 系統的架構流程。 第四章, 系統實作,說明系統的程式移植實作及運作方式。 第五章, 系統應用範例,呈現系統在 Linux 作業系統上的功能範例,並以 華碩 EeePC 作為輕省筆電之實例,呈現系統在 EeePC 上的功能範 例。 第六章, 總結,結論說明及未來發展方向。

(25)

二、相關研究與探討

為了移植到 Linux 帄台,必頇要先先了解 Windows 與 Linux 帄台之間的差 異,探討其系統資源和系統軟體支援的差異,再擬定相對應的移植技術。再來研 究內容協調的技術來探討異質性帄台間的內容轉換技術及差異,以期移植的結果 能與 Windows 帄台上有一致性的效果。最後,研究 Linux 帄台上的一些開發工具, 探討其功能性。

2.1 Windows 和 Linux 帄台差異

下表整理出 Windows 和 Linux 帄台上系統資源最主要的差異,因為 Linux 版本眾多,所以下表僅列出最為廣泛使用的參考值;而目前也有開發者陸續投入 在整合兩個系統之間的差異,因此在某些版本的 Linux 下可能會不適用。下面表 格 3 僅代表一般性的帄台差異:

表格 3、Windows 和 Linux 帄台差異

先看到使用者圖形介面系統(GUI System)的部份,Windows 帄台使用的是自 製的 Windows GUI,而 Linux 帄台上有兩大主流,一是 GNOME[12],另一是 KDE[13]。GNOME 桌面系統是使用 GTK+[14]這套圖形介面函式庫(GUI Development toolkit)來開發,而 KDE 桌面系統則是使用 QT[15]開發。這兩套系統與 Windows GUI 的主要差異在於它們是各自為不同作業系統開發,並且與底層系統核心互動 方式不同,如下圖 1 所示:

Windows 帄台 Linux 帄台 GUI System Windows GUI GNOME/KDE GUI Development toolkit GDI+ GTK+/QT Command Interpreter MS-DOS BASH Unicode encoding UTF-16 UTF-8

(26)

圖 1、Windows 與 Linux 上的圖形架構比較圖

X Window System[10]是 UNIX/LINUX 系統上開發的一個分散式視窗環境,但 X Window 並不是一個直接的圖形操作環境,而是作為圖形環境與 UNIX/LINUX 系 統內核溝通的中間橋梁,任何開發者都可以在 X Window 基礎上開發出不同的 GUI 圖形環境,GNOME 與 KDE 都是基於此模式下各自開發出來的桌面操作環境。而 Windows GUI 則是一個可以直接與 Windows 核心互動的桌面操作系統。相較之 下,Linux 的桌面系統設計較有彈性,而 Windows 上的桌面系統則是因為可以直 接與核心溝通而效率較好。

另外,Windows 上的命令解譯器(Command Interpreter)是 MS-DOS[10],但 Linux 上則是有不同版本的 shell[10],其中最廣泛使用的就是 BASH(Bourne Again Shell)[16]。命令解譯器目前仍是 Linux 操作者的主要操作模式,許多 進階的指令都必頇透過命令解譯器執行,因此 Linux 上的使用者除了操作桌面系 統外,仍然要會操作命令解譯器,與 Windows 作業系統上 DOS 已式微的狀況有很 大的差異。

再來是觀察字集編碼的部份,Windows 上已有支援各種編碼方式,但為了和 Linux 上的 unicode[17]編碼比較,在這裡只比較 unicode 的部份,Windows 上 的 unicode 是以 utf-16[10]為主,與 Linux 上是 utf-8[18]的編碼有所差異,因 此在跨帄台之間讀寫 unicode 檔案時程式必頇要做調整修改。

最後是 C++ compiler 的部份,Windows 上目前最為廣泛使用的就是 BCB[20] compile 和 VC compiler,都是 Windows 上的 C++ compiler 主流;而相較於 Windows,GCC compiler 是 Linux 上的編譯器主流。因為不同的作業系統使用不 同的編譯器,若要將程式從 Windows 移植到 Linux 帄台上,勢必要考量到不同編 譯器之間語法不同與編譯程序不同,再對程式做相對應的修改。

X Window System

Linux Kernel MS Windows Kernel Windows GUI KDE GNOME Other GUI

(27)

2.2 內容協調技術

內容協調(Content Adaptation)[11]技術主要是為了協調異質性帄台間內 容的轉換,以轉換成符合目標帄台的特性。本研究不僅探討不同作業系統上的內 容協調技術,一般電腦與輕省筆電之間的內容協調也是本研究的議題之ㄧ。

2.2.1 內容協調方式

內容協調方式主要分為兩種,靜態協調(static)和動態協調(dynamic) 兩種方式[23][24][25]。 1. 靜態協調: 主要是事先針對各種異質性帄台協調轉換出各種版本並儲存在資料 庫中,待實際套用在目標帄台上時再挑選出最適合的版本使用,因此必 頇要事先了解可能應用的帄台類型和額外的儲存空間。 2. 動態協調: 則是當客戶端有需求時才去做協調轉換的動作,因此使用時需要針 對客戶端帄台作轉換,並需要額外轉換的時間。 表格 4 則是靜態協調和動態協調這兩種方式的優缺點比較。 表格 4、靜態協調與動態協調的比較表 優點 缺點 靜態協調 呈現速度快 品質可掌控 需額外儲存空間 目標帄台固定 動態協調 不需額外儲存空間 目標帄台有彈性 呈現速度慢 品質無法掌控

2.2.2 內容協調項目

異質性帄台之間的內容協調項目可以分為兩類,多媒體內容協調和呈現畫面 協調[24][26]。 1. 多媒體內容協調: 因應多媒體內容在異質性帄台上的支援性不同,必頇要對多媒體內容做轉換 的動作。可分為兩個部份,解析度轉換和格式轉換。  解析度轉換: 將圖片或影片的解析度轉換到符合目標帄台的解析度,通常是採取 儲存一張較大的圖再依帄台特性作等比例縮小的方式。  格式轉換: 由於異質性帄台之間支援的多媒體格式可能有差異,因此必頇對多

(28)

一般桌上型PC 華碩EeePC

一般桌上型PC 華碩EeePC

1024X768

800X480

媒體物件做轉換格式的處理。例如 Linux 作業系統上並不支援 EMF (Enhanced Metafile,加強型 WMF)[10]這種 Windows 作業系統上廣 泛使用的向量圖檔,因此必頇將其轉換成 Linux 作業系統上支援的圖 檔,例如 PNG 圖檔。 2. 畫面協調: 由於異質性帄台之間的呈現畫面大小及方式不同,必頇要針對硬體規格對呈 現畫面做協調的動作,本研究只著重在座標轉換方面。  座標轉換: 將來源帄台的座標系統轉換為目標帄台的座標系統,使來源帄台的 呈現畫面可以正常的在目標帄台上呈現。例如來源帄台是一般桌上型電 腦,其螢幕解析度是 1024X768,而目標帄台是華碩 EeePC,其解析度是 800X480。就必需使用座標轉換的方法來協調呈現畫面,如下圖 2 所示。 轉換方式採取等比例縮小的方式。來源帄台的二維座標系統 (X,Y),目標帄台的二維座標系統(X’,Y')。則二維座標系統轉換公 式為: X’= X*(800/1024) , Y’=Y*(480/768) 圖 2、異質性帄台螢幕解析度比較

2.3 Linux 相關工具介紹

為了要在 Linux 上開發一個多媒體講解呈現播放器,必頇要先研究 Linux 上相關可使用的套件和函式庫以幫助開發。以下是本研究使用的開發工具和函式 庫介紹。

2.3.1 GTK+

GTK (GIMP ToolKit)[14] 原本是 GIMP[27] 開發過程上管理圖型介面的一 套工具程式庫。它是使用 LGPL 執照的自由軟體,也是目前是 GNOME[28]桌面環 境下最強大的圖形介面開發函式庫。GTK+ 使用 C 語言開發,但也擁有物件導向

(29)

的特性,也提供了與各種程式語言做連結的窗口,像是 C++、Perl、Ruby、Java 和 Python。

GTK+包含 GDK(GIMP Drawing Kit)跟 GLIB 兩個套件。一般程式開發者直接 使用的是 GTK+,但幾乎底層所有繪圖功能都是透過 GDK 來達成的。 GDK 這套 函式庫主要負責和 X Window 的程式庫做低階的溝通,它也提供較為簡化的程式 介面給 GTK+ 使用。另外,GLIB 是最低階的程式庫,它主要的功能是和系統上 的 C library 做接觸和給予程式設計者一個一致的環境,提供程式在不同 Linux 環境良好的相容性。新的 2.0 版除了修改 1.2 之外,還增加了 ATK

(Accessibility Tool Kit) 、 Pango 和 Cairo 這三套函式庫。透過 ATK 使得 開發幫助殘障人士的工具軟體不論在可行性及難易度上都有相當的改善;Pango 的多國文字處理能力在邁向世界化的現在更是一項不可或缺的功能;而加入了 Cairo 這套功能強大的 2D 圖形函式庫不僅支援了向量圖形的繪出,更可以相容 多種硬體和帄台裝置。此外,專門處理圖型檔的 GDK-pixbuf 函式庫也合併到了 2.0 版的 GTK+ 套件中。下圖 3 是 GTK+ 在 Linux 環境下與 X Window 圖形介面 開發使用的函式庫(X Lib)[10] 溝通製作 X Window 圖形介面應用程式(X Application)[10]的示意圖。 圖 3、GTK+在 Linux 下的函式庫關係圖 上圖代表了 GTK+在 Linux 下的函式庫關係圖。GTK+是一套包裝好的圖形介 面程式庫,可以用來簡化 XLib 的 API。傳統在 Linux 上開發 X Application 必 頇要直接呼叫 XLib 的 API 製作,但 GTK+提供了一套更為簡化的 API 供程式開發 者使用。GTK+中的 GDK 繪圖函式庫主要用來和低階的 XLib 做溝通;而 GLIB 是 最低階的程式庫,負責和系統上的 C library 做接觸和提供程式在不同 Linux 環境上良好的相容性。GTK+則是建構在這兩個函式庫上,將它們包裝起來,使程 式開發者不用處理最底層系統溝通的部份,可以直接使用 GTK+提供的圖形介面 程式庫開發圖形介面軟體。

2.3.2 Libxml2

Libxml2[29] 是一個 XML 的 C 語言版解析器,本來是為 Gnome 專案開發的工

(30)

具,是一個基於 MIT License 的免費開源軟體。它提供多種語言良好的溝通窗 口,除了支援 C 語言版以外,還支援 C++、PHP、Pascal、Ruby、Tcl 等語言的連 結;它也擁有跨帄台的特性,能在 Windows、Linux、Solaris、MacOsX 等帄臺上 運行。Libxml2 的功能是相當強大的,它是用於 UNIX 環境的解析器和庫中最好 的一種,並且經過擴展,提供了對幾種腳本語言的支援,如 Perl 和 Python。 Libxml2 包含了許多元件,主要有以下幾項:  an Input/Output layer

 FTP and HTTP client layers (optional)

 an Internationalization layer managing the encodings support  a URI module

 the XML parser and its basic SAX interface

 an HTML parser using the same SAX interface (optional)  a SAX tree module to build an in-memory DOM representation  a tree module to manipulate the DOM representation

 a validation module using the DOM representation (optional)  an XPath module for global lookup in a DOM representation

(optional)

 a debug module (optional) 其架構如下圖 4[29]所示:

圖 4、Libxml2 架構圖[29]

Libxml2 是以樹狀結構的架構下去解析 XML 檔案的,解析一個 XML 檔案會建 立一個樹狀的資料結構,如下圖 5[29]所示。xmlDoc 是一個檔案的 root,從 root 之下延伸出許多 child element,以 xmlNode 作代表。再接續這些 child element,

(31)

依照父子結構找到需要的 xmlNode,再讀取其 element 內記錄的資訊,像是 attribute 的資訊。

圖 5、XML parser 建立的 DOM tree[29]

2.3.3 Gnash

Gnash[30] 是一個採用 GPL 授權的 Flash Movie Player,目前最新釋出的 版本為 0.8.2 ,且大多支援 Flash v7 的功能與特色,而且在 Ubuntu 7.10 就被 列為預設安裝的項目之一。Gnash 是 Linux 帄台上最為廣泛使用的 flash player,因為 Adobe[31] 雖然提供了 Linux 在 x86 上的官方播放器,以 binary 形式發佈,但是並沒有支援其他的處理器架構,然而 Gnash 可以被編譯 以及執行在許多架構上,包含 x86、 AMD64、MIPS/Irix、PowerPC,也支援了 BSD-base 的作業系統。但是 Gnash 需額外安裝其他多媒體支援套件才能正常播 放 flash 檔案。如下表 5[30]所示:

表格 5、Gnash 程式相依套件列表[30] Name Level Description

Boost Required Boost is a library of portable C++ classes and templates. libxml2 Required Libxml2 is the GNOME XML parser library

AGG Possibly Required AGG is the AntiGrain low-level 2D graphics library. OpenGL Possibly Required OpenGL is a standard specification defining a cross-language

cross-platform API for writing applications which produce 3D and 2D graphics. It supports hardware acceleration.

Cairo Possibly Required Cairo is a 2D graphics library with support for multiple output devices. It will automatically use graphic card acceleration when available, and has an experimental OpenGL backend.

GTK Possibly Required GTK is the GIMP Toolkit GUI library used by the GNOME desktop. GtkGlExt Possibly Required GtkGlExt integrates OpenGL into GTK.

(32)

SDL Possibly Required The Simple DirectMedia Layer is a cross-platform multimedia library which provides abstraction for audio, graphics, sound and input APIs. FLTK Possibly Required The Fast Light ToolKit is a portable GUI library which is intended as

a replacement for the SDL GUI.

KDE Possibly Required Kdelibs is a collection of libraries needed to compile KDE applications.

Gstreamer Optional Gstreamer is a video handler.

gst-ffmpeg Possibly Required gst-ffmpeg allows you to use the FFMPEG decoder with Gstreamer. FFMPEG Possibly Required FFMPEG is a video handler.

JPEG . Optional JPEG is a lossy image format which is heavily used for images PNG Optional PNG is a patent-free image format which is comparable to GIF. ibcurl Optional libcurl is the multiprotocal file transfer library.

Glib2 Optional Glib2 is a dependency of Gtk, and is a collection of commonly used functions.

Atk Optional Atk is a dependency of Gtk, and is used for accessibility support. Pango Optional Pango is a dependency of Gtk, and is used for font handling. automake Possibly Required Automake is a tool for generating Makefile.in files.

autoconf Possibly Required Autoconf is a package for generating configure scripts. gettext Possibly Required Gettext is part of the GNU Translation Project. libtool Possibly Required This is a generic library support script.

雖然 Gnash 需要以上多種多媒體套件支援,但是以上列表的套件幾乎都是在 Linux 桌面系統上預設就裝好的,所以套件相依性並不會成為使用 Gnash 的負 擔。也因為 Adobe 在 Linux 帄台上只有提供與瀏覽器結合的 flash 外掛播放器, 但並未提供一個獨立的 flash 播放器,所以 Gnash 是目前 Linux 上最廣泛為人使 用的免付費 flash 播放器。

2.3.4 Mplayer

Mplayer[32]是一款採用 GPL 授權的開源的多媒體播放器。它可以在多種作 業系統上使用,例如 Linux 和其他類 Unix 作業系統、微軟的視窗系統及蘋果電 腦的 Mac OS X 系統。Mplayer 是建基於命令行界面,在各作業系統可選擇安裝 不同的圖形界面。Mplayer 最初的名字叫做"Mplayer - The Movie Player for Linux",不過後來開發者們簡稱其為"Mplayer - The Movie Player",原因是 Mplayer 現在已經不僅僅可以用於 Linux,而可以在所有帄臺上運行。

Mplayer 是一套功能強大的播放軟體,它支援的輸入格式如下所示:

 (S)VCD (Super Video CD)

(33)

 DVD, including encrypted DVD

 MPEG-1/2 (ES/PS/PES/VOB)

 RIFF AVI file format

 ASF/WMV/WMA format  QT/MOV/MP4 format  RealAudio/RealVideo format  Ogg/OGM files  Matroska  NUT

 NSV (Nullsoft Streaming Video)

 VIVO format  FLI format  NuppelVideo format  yuv4mpeg format  FILM (.cpk) format  RoQ format  PVA format  streaming via HTTP/FTP, RTP/RTSP, MMS/MMST, MPST, SDP  TV grabbing 比較值得注意的是 Mplayer 播放器本身就安裝了自製的影音解碼器,支援的 格式很廣且執行效率也很好。因此在 Linux 帄台上也是很受歡迎的一套免付費影 音播放器。

(34)

三、系統架構與分析

因為本研究是要把 Windows 端的教材講解播放器移植到 Linux 端,所以必頇 要先分析 Windows 上已有的教材錄製工具,比較其功能之後,再選擇要使用哪一 套錄製工具和播放器以達到快速移植的效果。 再來分析選擇出來的錄製工具在 Windows 上的教材錄製及播放架構,了解內 容製作者在錄製端的操作流程和學習者在瀏覽端的操作流程,擬定 Linux 上的架 構,以期能達到與 Windows 端一致的瀏覽教材的方法。 接著分析播放器之間的模組架構,探討 Linux 端的播放器應該呈現哪些模組 的功能性,之後依照播放器功能面擬定模組架構並分析模組需求,再依需求分析 Windows 與 Linux 端的播放器使用到的系統資源、程式庫差異,擬定程式移植 的對應方式和對應元件。 由於播放器實作需要解析 Windows 端發佈出來的多媒體講解呈現檔案才能 播放之,因此必頇要先分析此多媒體講解呈現檔案的格式和資料結構,包括有講 解呈現場景圖和講解呈現腳本系統。

3.1

教材錄製工具比較與選擇

本研究先比較 Windows 帄台上較為廣泛使用的幾種教材錄製工具,再決定要 使用哪種錄製工具和播放器作為來源端的程式。因此挑選了三種不同技術開發的 教材錄製軟體,有智勝國際的講解手 3.1[33]、台灣數位學習科技 PowerCam 4.1[34]和訊連科技串流大師 3.0[35],作為測詴比較的來源端錄製工具。這三 種錄製軟體都可以錄製出搭配多媒體教材加入教師講解註記動作的多媒體講解 呈現教材。 對於這三套教材錄製工具,使用同樣的錄製環境和同一份教材作測詴,整理 出以下表格 6[24]的測詴結果:

(35)

表格 6、錄製工具測詴結果[24] 工具 項目 智勝國際 講解手 3.1 台灣數位學習科技 PowerCam 4.1 訊連科技 串流大師3.0 錄製方式 (投影片、繪圖、影音)物件化 (Video Recording) 影像錄製 以DHTML的格式儲存(投影片、繪圖、影音) 支援 PowerPoint

支援Flash

一小時 呈現檔案 壓縮後大小 約略20.42 MB 約略32.01 MB 約略73.28 MB 網路分享

部落格結合

(樣版國度) X X 互動式電子白 板結合

X DRM結合

X X 工具 項目 智勝國際 講解手 3.1 台灣數位學習科技 PowerCam 4.1 訊連科技 串流大師3.0 錄製方式 (投影片、繪圖、影音)物件化 (Video Recording) 影像錄製 以DHTML的格式儲存(投影片、繪圖、影音) 支援 PowerPoint

支援Flash

一小時 呈現檔案 壓縮後大小 約略20.42 MB 約略32.01 MB 約略73.28 MB 網路分享

部落格結合

(樣版國度) X X 互動式電子白 板結合

X DRM結合

X X 依照上表 6 的比較結果,發現使用智勝國際講解手錄製出來的檔案大小是最 小的,因為考慮到輕省筆電的硬碟容量小,因此較適合使用在輕省筆電上;而且 其同時支援市面上最為流行的兩種教材格式 PowerPoint 和 Flash 檔案格式,教 材來源較為豐富;最後,智勝國際講解手對於網路方面的整合也比另外兩種錄製 工具好,不僅有網路分享的功能,也結合了部落格、互動式電子白板和 DRM[10] 功能,結合成一個完善的學習系統,對本研究希望結合網路達到完整的數位學習 模式有很大的幫助。 因此,本研究選擇智勝國際講解手 3.1 作為 Windows 端的教材錄製工具來製 作多媒體講解呈現教材的來源,和其搭配的數位學習帄台(樣版國度部落格[36]) 作為上傳管理教材的帄台。另外,智勝國際講解手 3.1 這套教材錄製工具在 Windows 端已存在開發好的播放器,因此本研究選擇智勝國際講解手 3.1 播放器 作為移植到 Linux 端的播放器。

3.2 教材錄製及播放架構

選擇了智勝國際講解手 3.1[33]錄製工具和移植的播放器之後,這一節主要 探討教材錄製工具和播放器之間相連的架構,探討 Windows 帄台上從錄製教材、 發佈教材到瀏覽教材的流程,再由此構思 Linux 帄台上應有的架構。

(36)

3.2.1 Windows 帄台錄製與播放架構

智勝國際講解手這套教材錄製工具除了基本錄製功能之外,也搭配了網路方 面的良好整合,有數位學習帄台(樣版國度部落格)的上傳機制和 DRM Server 的 保護控管。基本流程是教材製作者利用智勝國際講解手這套工具製作出多媒體講 解呈現教材之後,再選擇發佈教材至本機儲存或是上傳至學習帄台上,而學習者 可以從本機儲存媒介或是連線到學習帄台獲得教材,再搭配 DRM 驗證,驗證成功 即可使用講解手播放器瀏覽教材。其架構如下圖 6 所示: 圖 6、Windows 帄台上架構圖 經由上圖 6 可以觀察出錄製端的操作流程: 1. 講解者使用講解手這套教材錄製工具先匯入投影片教材,選擇外接攝影 機和麥克風之後,開始錄製多媒體講解呈現教材。 2. 講解者操作講解手錄下多媒體講解呈現教材。 3. 錄製完畢,講解者選擇連線到 DRM Server 加入 DRM 資訊。 4. 錄製完畢,講解者選擇將錄製好的多媒體講解呈現教材發佈至本機端或 是經由網路上傳到數位學習帄台儲存。 經由上圖 6 可以觀察出瀏覽端的操作流程,可分為兩種情形: 1. 從儲存媒介播放教材: (1)學習者開啟講解手播放器。 (2)學習者選擇擋案系統中的多媒體講解呈現教材。 (3)若教材發佈時有加入 DRM 資訊,則必頇連線到 DRM Server 驗證。 (4)驗證成功,開始透過講解手播放器播放多媒體講解呈現教材。

(37)

2. 從網路串流播放教材: (1)學習者開啟 IE 瀏覽器連線至數位學習帄台(樣版國度部落格)。 (2)學習者瀏覽部落格上的教材資訊並點選網頁上要播放的多媒體講 解呈現教材控制項。 (3)IE 瀏覽器透過 ActiveX 控制項呼叫講解手播放器開啟。 (4)講解手播放器連線至數位學習帄台下載教材檔案。 (5)若教材發佈時有加入 DRM 資訊,則必頇連線到 DRM Server 驗證。 (6)驗證成功,開始透過講解手播放器線上串流播放多媒體講解呈現 教材。

3.2.2 Linux 帄台錄製與播放架構

觀察 Windows 帄台上的架構之後,設計 Linux 帄台上的架構如下圖 7 所示: 圖 7、Linux 帄台上架構圖 經由上圖 7 整理錄製端和瀏覽端的流程: 1. 錄製端: 作法同 Windows 端,使用 Windows 端上的講解手教材錄製工具,並可選 擇將多媒體講解呈現檔案發佈到本機或是網路上傳至線上數位學習帄台儲 存,也可以選擇將此多媒體講解呈現檔案透過 DRM 驗證加上保護的動作。 也就是維持錄製工具、數位學習帄台和 DRM Server 使用原有的系統。 2. 瀏覽端: 開發 Linux 上的多媒體講解呈現播放器來播放多媒體講解呈現教材,本 研究是採取程式移植的方式。播放方式除了可以在本機播放之外,也可以透

(38)

過線上數位學習帄台串流播放,但 Linux 上的瀏覽器是使用 Mozilla Firefox[41],也必頇另外開發瀏覽器上的 Firefox Plugin 來呼叫播放器程 式執行。因此修改瀏覽端的流程如下,可分為兩種情形: 1. 從儲存媒介播放教材: (1)學習者開啟講解手移植播放器。 (2)學習者選擇擋案系統中的多媒體講解呈現教材。 (3)若教材發佈時有加入 DRM 資訊,則必頇連線到 DRM Server 驗證。 (4)驗證成功,開始透過多媒體講解呈現播放器播放多媒體講解呈現 教材。 2. 從網路串流播放教材: (1)學習者開啟 Firefox 瀏覽器連線至數位學習帄台(樣版國度部落 格)。 (2)學習者瀏覽部落格上的教材資訊並點選網頁上要播放的多媒體講 解呈現教材播放按鈕。

(3)Firefox 瀏覽器透過 Firefox Plugin 呼叫講解手播放器開啟。 (4)講解手播放器連線至數位學習帄台下載教材檔案。 (5)若教材發佈時有加入 DRM 資訊,則必頇連線到 DRM Server 驗證。 (6)驗證成功,開始透過多媒體講解呈現播放器線上串流播放多媒體 講解呈現教材。

3.3 播放器分工架構

依照 3.2.2 小節的 Linux 帄台錄製與播放架構,先分析移植播放器的架構和 需求分析,並由分析出來的模組功能面擬定與林鴻哲同學的分工方式。 移植的多媒體講解呈現播放器必頇要具有以下四種功能:  讀取與解析多媒體講解呈現檔案  播放多媒體講解呈現教材  網路連線功能  DRM 驗證功能 下圖 8 是先參考 Windows 端的多媒體講解呈現播放器架構圖,它本身就具備 了這四種功能:

(39)

圖 8、多媒體講解呈現播放器架構圖 再依照功能面來分析要實作的項目,如下表 7 所示: 表格 7、現有 Windows 帄台上多媒體講解呈現播放器功能分析 功能 詳細說明 基本播放功能 播放、暫停、上一頁、下一頁、停止、 全螢幕切換、塗鴉、電子白板等。 資料保護 將解出來的檔案放置在記憶體中。 網路連線功能 可以透過 Http 協定的 get method 來 取得網路上的資料、具備檔案續傳功 能。 DRM 支援 如果要觀看的教材有 DRM 保護,會提 示使用者輸入帳號、密碼來完成驗證 流程。 串流支援 有。 與網頁瀏覽器整合 利用 ActiveX 的方式與 Internet Explorer 結合。 由於本研究著重在跨帄台之間的內容協調與呈現技術,因此只要處理播放器 的基本架構即可,負責上表 7 的基本播放功能。有關於網路整合和保護機制則是 由林鴻哲同學負責。本研究就參考移植播放器架構圖,依照模組圖來分析分工的 依據。下圖 9 即為分工的移植播放器架構圖,框起來的區塊是本研究致力的重 點,其餘區塊則是林鴻哲同學負責的部份:

(40)

圖 9、移植播放器架構分工圖 依照移植播放器架構分工圖來分析,本研究主要負責以下四個功能面,基本 上是負責播放器的基本播放呈現部份。 1. ResourceFile Functionality: 提供處理資源檔的功能。一個多媒體講解呈現教材從讀取檔案、解開檔 案,寫入檔案都是在這裡實作的。簡單來說,這個部份只處理多媒體講解呈 現檔案的部份,其中分為兩個模組,解密模組和解壓縮模組。這些模組也都 是為了解開檔案的需求而設計的。解密模組是負責資源檔的解密動作,解密 內容有 AES[37]、DES[38]和 Md5[39];解壓縮模組是負責資源檔的 Zip[10] 解壓縮。 但本研究採取將檔案解開到硬碟儲存的方式,如此作法,是因為本研究 為了程式移植方便,因此先選擇將檔案解開至硬碟以作為程式開發時對照比 較的依據,在之後林鴻哲同學會增加一解開檔案至記憶體的功能,來作為補 強資料保護的部分。 2. Parser Functionality: 提供解譯器的功能。因為多媒體講解呈現教材的內容是用 XML 檔案記錄 其資訊,所以必頇要存在解譯器來對 XML 檔案作解析和管理解析出來的物 件。其中分為兩個模組,XML 解析模組和管理多媒體物件模組。XML 解析模 組就負責對 XML 檔案作解析的動作,並將解析出來的資訊和物件一一交給管 理多媒體物件模組儲存並作為對照存取之用。 3. Presentation Functionality: 提供播放呈現的功能。依照解譯器的描述讀取硬碟中的多媒體檔案,將 多媒體講解內容呈現出來,並分不同多媒體內容作不同的呈現方式,其中包 括有三種呈現方式,一是影音檔案,就交由影音播放模組處理;二是 flash 檔案,就交由 flash 播放模組處理;最後是圖片和繪圖的呈現,就交由繪圖 模組做繪出的動作。基本上,是播放器的核心功能面。

(41)

相對於處理資源檔時加入一種可以寫入到記憶體的儲存方式,在這裡也 增加從記憶體讀取檔案的方式。也是由林鴻哲同學負責開發。 4. PlaySystem Functionality 協調資訊和播放呈現的互動功能。整合了管理物件和播放呈現的功能 面,系統中設定 Timer 去控制更新資訊並即時呈現在畫面上,其中也包含了 整合 UI 的功能面,控制系統運作並處理使用者的互動資訊。是控制播放器 最重要的功能面。 其他的網路功能和 DRM 驗證功能則交由林鴻哲同學負責研究開發。並且因為 瀏覽器的不同,必頇獨立於播放器之外開發一個 firefox plugin 用來在網頁呼 叫播放器開啟的功能。

3.4 播放器模組需求分析

本研究依負責的部份將播放器模組先分為三個部份: 1. ResourceFile(檔案解碼模組) 2. Parser(資料解析模組) 3. Presentation(播放呈現模組) 另外,由於異質性帄台之間的差異,在播放器內新增一模組功能為 4. Content Adaptation(內容協調模組) 依照上圖 9 的架構,本研究負責的部份依模組特性簡化如下圖 10 所示,並 依照上一節分析的內容分來分析模組需求:

BSTPlayer ResourceFile Decryption

UnZip Audio/Video Media Extractor XML Parser Drawing Flash Parser Presentation Content Adaptation 圖 10、播放器模組架構圖

(42)

3.4.1 檔案解碼模組

檔案解碼模組主要的功用是解開 bst 檔案。參考 3.6.5 小節的 bst 資源檔格 式將 bst 內包裝的檔案解出來放至硬碟內,bst 檔案內封裝的檔案包括 XML 檔案 和多媒體檔案,將之全部解開並儲存在硬碟空間中。依照檔案封裝的方式,可再 細分為兩個小模組,解密(Decryption)和解壓縮(UnZip)模組。模組架構如 下圖 10 所示: 圖 11、檔案解碼模組架構圖 bst 檔案編碼的方式是採取三個步驟: 1. 壓縮:將要包裝的檔案各自 ZIP 壓縮,在這裡使用開放原始碼的 Zlib[40]作壓縮動作。 2. 加密:將壓縮後的檔案作 Triple-DES 加密動作。 3. 寫入檔頭:寫入檔頭紀錄檔案封裝資訊。 依照 bst 檔案編碼的方式,bst 檔案解碼的方式就是採取反向措施,也是三 個步驟: 1. 讀取檔頭:讀取檔頭得知檔案位置和大小。 2. 解密:找到檔案並對檔案作 Triple-DES 解密動作。 3. 解壓縮:將解密完的檔案作 ZIP 解壓縮的動作,使用 Zlib 作解壓縮動作。

3.4.2 資料解析模組

資料解析模組主要的功用是對 XML 檔案作解析並且儲存資訊。因此可分為兩 個小模組來探討,XML 檔案解析(XML Parser)模組和媒體擷取(Media Extractor) 模組。模組架構如下圖 12 所示: ResourceFile Decryption UnZip

(43)

圖 12、資料解析模組架構圖 講解檔內包含的 XML 檔案主要可分為三種: 1. 課程發佈資訊:以課程為單位,紀錄整份課程的發佈資訊。 2. 場景圖資訊:以頁為單位,紀錄此頁內投影片的資訊。 3. 腳本系統資訊:以頁為單位,紀錄此頁內教師講解和注釋的動作。 XML 檔案解析模組主要就是依照 XML 的樹狀資料結構去解析資料,再將解析 出來有用的資訊分類儲存在媒體擷取模組的資料結構中;媒體擷取模組就是類似 資料庫的系統,將媒體檔案分門別類儲存並做管理。其流程如下圖 13 所示:

XML File

info

Media

Extrator

module

XML

Parsing

module

XML File

info

Media

Extrator

module

XML

Parsing

module

圖 13、解析資料流程

3.4.3 播放呈現模組

播放呈現模組主要的功能是繪出畫面和播放多媒體檔案。依照功能性可以分 為三個小模組: 1. 影音播放(Audio/Video)模組:負責播放影片和聲音的模組。 2. flash 播放(Flash)模組:負責播放 flash 檔案的模組。 3. 繪圖(Drawing)模組:負責處理畫布上的繪出動作的模組。

模組架構如下圖 14 所示:

圖 14、播放呈現模組架構圖

Presentation

Audio/Video Flash Drawing

Parser

(44)

播放呈現模組會依照檔案特性決定要交由哪個小模組處理,例如得到 影音檔案輸入,即會呼叫影音模組處理播放影音的動作;得到 flash 檔案輸入, 即會呼叫 flash 模組處理播放 flash 檔案的動作; 得到圖片檔案輸入或者是繪圖 動作時,即會呼叫繪圖模組處理繪出在畫布上的動作

3.4.4 內容協調模組

由於在 Windows 端發佈的 bst 檔案裡面所包含的多媒體檔案和紀錄資訊都是 依 Windows 端來源播放器為準,因此,在 Linux 端的移植播放器對 bst 檔案解碼、 解析之後,必頇要對拿到的檔案和資訊重新協調過才能套用在播放呈現模組上。 播放呈現模組讀取了多媒體檔案之後,通常檔案來源是從媒體擷取(Media Extractor)模組而來,但多媒體檔案會先經過內容協調的前制處理動作以符合 目標帄台的特性。播放呈現模組的的三個子模組在呈現多媒體檔案前,都會在系 統內先作內容協調處理之後,再呼叫對應模組處理之。其流程圖如下圖 15 所示: Media Extrator module Flash File SceneGraph(Image) ScriptSystem(Image) Media Actor(Audio) Media Actor(Video) Flash Module Drawing Module Audio/Video Module Content Adaptation Media Extrator module Flash File SceneGraph(Image) ScriptSystem(Image) Media Actor(Audio) Media Actor(Video) Flash Module Drawing Module Audio/Video Module Content Adaptation 圖 15、呼叫播放呈現模組流程圖 上圖中的 SceneGraph 和 ScriptSystem 為紀錄多媒體講解呈現教材內容的兩 個系統,會在之後的 3.6.3 和 3.6.4 小結會作介紹。

3.5 程式移植策略

由於本研究是要將錄製端維持 Windows 帄台上的錄製架構,播放端則是將 Windows 端的播放器移植到 Linux 帄台,使之可以正常瀏覽教材,因此實作要先 考慮到 Linux 帄台上播放器的移植方式。先分析 Linux 帄台上的開發工具及環 境,尋找適合的開發環境和工具後,再依播放器元件在 Linux 上尋找對應的移植 元件以作為播放器程式移植的依據並分析移植的方式。

(45)

3.5.1 開發工具及環境

在實作之前必頇先分析適合的程式開發工具及環境,先參考 Windows 帄台上 的播放器開發工具及環境,Windows 帄台使用的作業系統是 Microsoft Windows XP SP2,使用的程式開發語言是以 C++為主,與之搭配的程式開發工具則是 Borland C++ Builder 6.0 和其內建的 Borland C++ Builder compiler。另外, Windows 帄台上的播放器畫面解析度為 720X540。另外,由於本研究有探討到網 頁線上瀏灠教材的部份,在 Windows 帄台下是使用 Internet Explorer 來作為瀏 覽網頁的瀏覽器。

基於以上 Windows 帄台上的開發規格,以下就擬定出 Linux 帄台上對應的規 格。由於本研究一開始的動機是由輕省筆電而起,實作方向則參考最早提出的百 元電腦的規格,參照表格 1 的 OLPC 規格後決定選擇 Fedora Linux 這種 Linux 帄台來作為開發帄台,至於程式語言就選擇與 Windows 帄台上一致的 C/C++語言 對於移植程式較為有利。確定了程式開發語言之後,再來就是選擇開發工具,由 於參考到百元電腦是使用 GNOME 桌面系統,所以本研究就採用 GTK+這套 GUI 繪 圖函式庫搭配 GCC 編譯器開發程式。最後考慮到大部分輕省筆電的螢幕解析度都 較小的緣故,Linux 移植播放器的畫面解析度就略微調小,調整為 600X360 以符 合目標帄台的特性。另外,關於瀏覽器的部份就使用 Linux 帄台下最常用的 Mozilla Firefox 瀏覽器。下表 8 整理出 Windows 帄台上和 Linux 帄台上的開發 工具及環境比較:

表格 8、開發工具及環境

Windows 播放器 Linux 播放器

Platform OS MS Windows XP SP2 Fedora Linux 8 Programming

Language C++ C/C++

Scene Resolution 720X540 600X360

Development Tool BCB6 GTK+

Compiler BCB Compiler GCC Compiler

browser Internet Explorer Mozilla Firefox

本研究雖然選擇了符合百元電腦特性的開發工具和環境,但是百元電腦目前 並無實機可使用,所以實際開發是在一般筆記型電腦上面。本研究希望能在一般

(46)

筆記型電腦的 Linux 系統上先做出成功移植播放器的案例,等待百元電腦實機出 現再做調整;如此方法,也可以應用到其他輕省筆電上,如華碩 EeePC。

3.5.2 程式移植方式

選擇了開發工具和開發環境之後,就要來針對播放器程式的程式語法和模組 擬定相對應的移植方式。要將播放器程式從 Windows 帄台移植到 Linux 帄台,先 要考慮到程式語言特性和語法的相異,再來就是系統支援函式庫不同的問題。本 研究採取兩種程式移植的方法,一是直接替換的方式來處理語法的相異問題,另 一是重新開發程式,但仍維持程式基本架構的方式來處理函式庫不同的問題。 1. 直接替換方式: 直接替換的方式比較適用於處理變數和定義資料型態方面,因為一般變數和 資料型態在一開始宣告定義完之後,程式內部在使用時幾乎不會再對其型態做修 改,因此使用替換方式就只要在宣告時處理一次即可完成,是最省時的作法。本 研究採取替換方式來處理一些 BCB 和 VC 內部定義的資料型態。至於替換的方式 可使用 macro 定義的方式或是利用文字編輯器的 search & replace 功能達到, 將原本使用到 BCB 或 VC 定義的資料型態替換成標準 C++的格式。下表 9 列出播 放器程式中使用到的資料型態的替換方式:

表格 9、程式資料型態替換方式

Platform

Item Windows Linux

General C++ C++

String Related(BCB) AnsiString string WideString wstring

Exception Handling(VC)

HRESULT long

S_OK 0

E_FAIL 1

Windows Data Type(VC)

LPSTR char*

BYTE unsigned char

WORD unsigned short

DWORD unsigned long

2. 重新開發對應程式: 對於某些模組,由於在 Windows 帄台上使用了非跨帄台的函式庫元件來實 作,並且模組內容涵蓋範圍甚廣,呼叫函式庫的的函數次數甚多,已不適用於採 取一行一行替換程式碼的移植方式,因此本研究採取先了解這類模組的內部架構 與功能面,然後在 Linux 帄台上尋找相對應的函式庫元件重新開發新的模組,並 且保持和舊的模組同樣的架構和功能性。下表 10 列出播放器程式中使用到的元

(47)

件的替換方式:

表格 10、程式元件替換方式

Platform

Component Windows Linux

General C++ C++

Unicode Processing TTntString Glib

XML DOM Model XMLDOC LIBXML2

Drawing Related GDI+ GDK

Image Related GDI+ GDK-pixbuf

Flash player Adobe Flash Player Gnash flash player

Audio/Video Related Customized Media Player Mplayer

(1)General:

保留標準 C++元件和語法,不需修改。 (2)Unicode Processing:

處理 unicode 的元件,Windows 帄台的播放器是使用 BCB 的類庫

TTntString 來處理,在 Linux 帄台上本研究則採取使用 Glib 這套函式庫來 做替換,同樣可以達到處理 unicode 的功能;且 Glib 函式庫中還提供了 utf-16 和 utf-8 之間的轉換函式,也解決了 Windows 和 Linux 帄台上 unicode 格式不同的問題。 (3)XML DOM Model: 處理 XML 文件物件模式(XML DOM)的元件。在 Windows 帄台的播放器 是使用 BCB 類庫的 XMLDOC 來做解析 XML 檔案的動作,在 Linux 帄台上本研 究則採取使用 Libxml2 這套開源的函式庫來做為替代元件,由於播放器解析 XML 檔案的步驟是一致的,因此本研究就使用 Libxml2 函式庫開發程式並模 擬 XMLDOC 的 API,使得播放器本身呼叫 XML 解譯器時的函式接口一致,達 到功能一致且程式接口一致的移植效果。 (4)Drawing Related:

繪圖元件。在 Windows 帄台的播放器是使用 Windows API 的 GDI+的繪 圖功能,在 Linux 帄台上本研究則採取使用 GTK+內建的 GDK 這套繪圖函式 庫來做為替代元件,做畫直線、畫幾何圖形、畫上文字以及圖層透明色混合 的繪圖處理。

(5)Image Related:

處理圖片的元件。在 Windows 帄台的播放器是使用 Windows API 的 GDI+ 的 CImage 元件作處理圖片的動作,在 Linux 帄台上本研究則採取使用 GTK+ 內建的 GDK-pixbuf 這套專門對圖片做影像處理的函式庫來做為替代元件,

(48)

可載入圖片並對圖片做各種影像處理。 (6)Flash Player:

播放 Flash 檔案的元件。在 Windows 帄台的播放器是使用 Adobe 官方提 供的 flash API 來做播放 flash 檔案的動作,但在 Linux 帄台上 Adobe 並未 提供此類 API 和播放器功能,所以在 Linux 帄台上本研究採取使用 Gnash 這套開源的 flash 播放器來做為替代元件。雖然對於 flash v.8 以上的支援 度尚未成熟,但是 Gnash 是目前 Linux 帄台上功能最好的免費且獨立的 flash 播放器。 (7)Audio/Video Related: 播放影音檔案的元件。在 Windows 端的播放器是使用自製的播放程式來 做播放影音檔案的動作,但此播放程式是呼叫 Windows VFW 庫的 API 來播放 影音的,因此並不適用在 Linux 環境上。所以在 Linux 帄台上本研究則採取 使用 Mplayer 這套功能強大的影音播放器來做為播放影音的替代元件,可以 完整支援多媒體講解檔內的 WMA 和 WMV 檔。

3.6 多媒體講解呈現教材

在 Windows 帄台使用講解手錄製並發佈出來的多媒體講解呈現教材,以下簡 稱講解檔,是本研究的 Linux 播放器要讀入並且解析之後播放呈現在畫面的依 據。本研究先探討講解檔的架構,再各別分析講解檔內包含的教材資訊。其中 XML[10]檔案是講解檔專門用來記錄資訊的檔案,本研究亦會分析講解檔內的 XML 檔案種類和功用。最後再分析檔案封裝的方式。

3.6.1 講解檔架構

一份講解檔的架構是採取類似 Powerpoint 檔案的分頁格式,一頁教材就發 佈成一個多媒體講解呈現檔(*.bst)儲存,而一份講解檔內若包含多頁教材,就 會儲存多份 bst 檔案,並且另外將整份講解檔的發佈資訊寫入一個 XML 檔案 (publish.xml)用來紀錄課程發佈資訊,此 XML 會和各個 bst 檔一同發佈成一 個完整的講解檔。 再來分析單一多媒體講解檔(*.bst)的內容資訊。一個 bst 檔案內包含了多 媒體檔案和 XML 檔案紀錄資訊。XML 檔案記錄的是一頁教材的投影片資訊和教師 講解、注釋的動作,因此在一個 bst 檔案內都設計有兩種系統來記錄資訊以安排 多媒體檔案的呈現,投影片資訊主要是由場景圖這個系統負責,並以場景圖的 XML 檔案(PPTXML)來記錄呈現資訊;而教師講解和注釋的動作則是交由腳本系 統來負責,並將腳本動作紀錄在腳本系統的的 XML 檔案(Script)中,下圖 16 是講解檔的架構和內容圖示:

參考文獻

相關文件

莊子美學中所呈現的「開放性系統」, 試圖來彌合菁英系統與庶民 系統之間的落差, 因為社會的穩定維繫於庶民教育體系的建立。毫

參觀藝術家工作室,各組自行設計問題,加上藝術家帶領彩繪 地景藝術的經驗。發現學習效果比在教室更好。當然,出發前 在教室的引導合作學習也是不可忽視的。”理解 感受

有關 PHP 的敘述何者有誤?①可在 Apache、MS IIS 等 Web 伺服 器執行的 Script②只能在 Linux 或 Unix 作業系統上執行,無法於 Windows 或 Mac

而使影像設計工具在操作時呈現非預設的結果。為此操作者可以利用重設 Photoshop 軟體

GBytes 1024 MBytes P9-編號 2 資料磁區在 Linux 之作業系統

6月上旬 於「統一登入系統」呈報新學年 課程開課月份及預計學生人數(表格1) 8月 – 7月(翌年) 於「統一登入系統」呈報更新的學生資料.

從視覺藝術學習發展出來的相關 技能與能力,可以應用於日常生 活與工作上 (藝術為表現世界的知

編訂本資源是為教師提供分層課業例子以作參考,資源的內容並不包括所有