跳轉到內容

XML - 資料交換管理/SMIL

來自華夏公益教科書,開放的書籍,開放的世界



上一章 下一章
DocBook XBRL



學習目標

完成本章後,您將能夠

  • 理解 SMIL 基礎知識。
  • 瞭解 SMIL 的使用方式和原因。
  • 查詢和使用 SMIL 技術規範、教程和開源 SMIL 工具。
  • 建立簡單的 SMIL 標記。
  • 在 SMIL 瀏覽器中檢視您的 SMIL 檔案。

隨著 90 年代後期網際網路的興起,全球資訊網聯盟 (W3C) 意識到需要擴充套件網路在資訊結構和媒體展示方面的能力。這就是他們如何得出 XML,用於描述資訊結構的可擴充套件語言。此外,SMIL 建立在 XML 之上:它是一種用於描述媒體物件展示的專門語言。由於 W3C(和其他人)不知道未來會有什麼媒體型別(虛擬環境、腦波同步體驗、心靈感應/全息/影片),因此 XML 是設計 SMIL 以支援這些媒體的合適選擇。

為了將這項技術與 HTML 整合並擴充套件 HTML 中媒體的應用,W3C 決定推動模組化這些語言或協議。SMIL 是許多“插入”到 XML 更大框架中的模組化語言之一。

什麼是 SMIL?

[編輯 | 編輯原始碼]

SMIL(發音為“smile”)是同步多媒體整合語言 (Synchronized Multimedia Integration Language) 的縮寫。它被認為是網際網路的開放標準版 PowerPoint。SMIL 是一種基於 XML 的語言,在外觀上類似於 HTML,允許創作互動式視聽簡報。SMIL 允許將音訊和影片與影像、文字或其他媒體型別一起流式傳輸。它是一種描述一個或多個媒體物件的時間和空間放置的語言。雖然 SMIL 可以使用簡單的文字編輯器編寫,但手動編寫 SMIL 文件可能是一項耗時且複雜的工作。因此,最好使用工具來生成複雜的 SMIL 文件。

全球資訊網聯盟 (W3C) SYMM 小組

[編輯 | 編輯原始碼]

自 1997 年 11 月起,W3C SYMM 小組一直在開發 SMIL 語言。它於 1998 年 6 月完成 SMIL 1.0,於 2001 年 8 月完成 SMIL 2.0。

為什麼使用 SMIL?

[編輯 | 編輯原始碼]

雖然外掛和媒體播放器能夠顯示許多不同型別的媒體,並且對互動的支援各不相同,但只有 SMIL 提供了以文字形式定義展示的能力,如同指令碼。這個功能可以稱為媒體合成。當你想到它時,這是一種強大的能力:文字展示可以從其他應用程式生成。此外,SMIL 提供了無障礙選項以及這些媒體播放器中不存在的強大功能。

  • Macromedia 產品,例如Flash,需要外掛才能在網頁中檢視 Flash。
  • RealAudio 的Realplayer
  • Microsoft 的PowerPoint
  • OpenOffice.org 的Impress
  • Apple 的Quicktime
  • Microsoft 已經建立了 SMIL 的專有替代方案。它被稱為Microsoft 同步無障礙媒體交換 (SAMI),它透過 Windows Media Player (WiMP) 播放 ASX 檔案。

鑑於 SMIL 是可擴充套件的,SMIL 語言能夠顯示上述播放器使用的許多專有物件。SMIL 被設計為描述所有媒體、所有佈局和互動式控制元件的展示的總體語言。因此,SMIL 不是 Flash、MPEG-4 或 HTML 的替代品。相反,它是描述和使用所有這些內容的新標準。

SMIL 歷史

[編輯 | 編輯原始碼]

SMIL 仍在開發中。目前,正在努力使 SMIL 在網路瀏覽器中更易於使用。由於 SMIL 是 XML,W3C 將最新標準開發為 XML 和 HTML 的混合體 (XHTML) 的附錄。以下是 SMIL 歷史的概述。

  • SMIL 1.0 規範定義了多媒體元素的佈局和時間順序。
  • HTML+TIME 規範將時序、連結、媒體和內容控制元件引入 HTML 元素。
  • SMIL 2.0 規範帶來了互動性(即:HTML+TIME),例如媒體連結和控制元件。
  • BHTML 提案包括要在 SMIL 2.0 中使用的過渡。
  • 最後,XHTML+SMIL 規範將 SMIL 2.0 功能擴充套件到 XHTML 元素。

當在最新的網路瀏覽器中完全實現並實施時,XHTML+SMIL 將能夠定義如何控制媒體元素。HTML 只支援靜態影像和連結。網路瀏覽器使用外掛來顯示影片和其他媒體物件,因此物件的控制和互動由外掛的實現決定。藉助 XHTML+SMIL,支援的物件可以根據時間框架進行放置、移動或顯示,使用自定義控制元件進行互動,並連結到其他媒體物件、網頁或簡報。並且由於 XML 是可擴充套件的,因此對更多媒體物件的支援也即將到來。這項技術有可能使 WWW 更加互動,讓演示者對簡報有更多控制。

當前的 SMIL 2.0 是全面的且相當完整的。它分為模組,這些模組描述展示的不同方面。例如,有一個結構模組用於描述 SMIL 文件本身的結構,還有一個元資料模組用於描述 SMIL 文件是關於什麼的。模組化在必要時在模組到模組的基礎上擴充套件 SMIL 模式很有用,而不會導致與其他模組中的元素髮生意外的互動。


實現 SMIL

[編輯 | 編輯原始碼]

常見的 SMIL 實現

[編輯 | 編輯原始碼]
  • 網際網路或內聯網簡報。
  • 幻燈片簡報。
  • 連結到其他 SMIL 檔案的簡報。
  • 包含控制按鈕(停止、開始、下一步等)的簡報。
  • 定義多媒體元素的序列和持續時間。
  • 定義多媒體元素的位置和可見性。
  • 顯示多種媒體型別,例如音訊、影片、文字。
  • 同時顯示多個檔案。
  • 從多個 Web 伺服器顯示檔案。

目前,SMIL 最廣泛的應用是與 MMS 結合使用。MMS(多媒體訊息服務)是一種移動裝置技術,用作傳送多媒體訊息到手機的信封。SMIL 內容與任何相關的媒體二進位制檔案一起放置在 MMS 訊息中。在這種情況下,MMS 是一種 SMIL 的傳輸機制。

SMIL 檔案和 MIME 型別

[編輯 | 編輯原始碼]
  • SMIL 檔案的副檔名為 *.smil(但也可以是 *.sml、*.smi)。
  • SMIL 檔案包含顯示簡報所需的標籤和內容。這包括多媒體元素的佈局、元素的時間線以及多媒體檔案的來源。

為了讓 MIME 使用者代理識別 SMIL 2.0 檔案,需要定義使用者代理。

  • application/smil [已棄用]
  • application/smil+xml [當前 MIME 型別]
  • application/xhtml+smil [在 XHTML 中嵌入 smil 的 MIME 型別]

在將此新 MIME 型別新增到 Web 瀏覽器時,定義需要包含 'smil' 副檔名。

SMIL 架構

[編輯 | 編輯原始碼]

以下超連結將引導您前往 W3C.org 提供的 SMIL 2.0 架構。主架構是對 SMIL 2.0 模組的總體描述。它後面跟著每個模組的架構。主架構包含所有模組架構的 include 語句。

W3C.Org 的 SMIL 架構描述

SMIL 名稱空間宣告

[編輯 | 編輯原始碼]

SMIL 2.0 檔案需要在開頭 <smil> 標籤中包含以下名稱空間宣告。

SMIL 2.0 名稱空間

1
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">

SMIL 1.0 檔案包含以下名稱空間宣告。

SMIL 1.0 名稱空間

1
<smil xmlns="http://www.w3.org/TR/REC-smil">

如果在

<smil>

根元素中沒有宣告預設名稱空間,則該文件將被處理為 SMIL 1.0。


SMIL 語法

[編輯 | 編輯原始碼]

指南和規則

[編輯 | 編輯原始碼]

SMIL 文件看起來很像 HTML。SMIL 檔案需要按照以下規則編寫。

  • SMIL 文件必須遵循XML 的良好格式規則
  • SMIL 標籤區分大小寫
  • 所有 SMIL 標籤都用小寫字母編寫。
  • SMIL 文件必須以 <smil> 標籤開頭,以 </smil> 結束標籤結尾。
  • SMIL 文件必須包含 <body> 標籤來儲存簡報的內容。
  • SMIL 文件可以有 <head> 元素(像 HTML 一樣)用於儲存有關文件本身的元資料資訊,以及簡報佈局資訊。

SMIL 模板

[編輯 | 編輯原始碼]

SMIL 1.0 模板

1
2
3
4
5
6
7
8
9
10
11
<smil>
<head>
<layout>
...
</layout>
</head>

<body>
...
</body>
</smil>

一個簡單的 SMIL

[編輯 | 編輯原始碼]

簡化的 SMIL 標記

<?xml version="1.0" encoding="ISO-8859-1"?>
<smil xmlns="http://www.w3.org/SMIL20/Language">
<head>

<!-- The layout section defines regions in which to place content -->
<layout>
...
</layout>

<!-- Transitions defined in head act on content defined in body -->
<transition id="fade" type="fade" dur="1s"/>
<transition id="push" type="pushWipe" dur="0.5s"/>

</head>

<!-- The body section defines the content to be used and how it will be displayed -->
<body>

<par>
<img src="imagefile.jpg" transIn="fade"/>
<video src="soundfile.aif" transOut="push"/>
</par>

</body>
</smil>

一個 SMIL 例子

[編輯 | 編輯原始碼]

包含內聯文字和圖片的 SMIL 例子

<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<head>
<layout>
<root-layout width="320" height="240"/>
<region id="text1_region" left="0" top="0" width="160" height="120"/>
<region id="text2_region" left="160" top="120" width="160" height="120"/>
<region id="text3_region" left="80" top="60" width="160" height="120"/>
<region id="image_region" left="0" top="0" width="320" height="240"/>
</layout>
</head>
<body>
<seq>
<text src="data:text/plain,First%20Slide" region="text1_region" dur="2s"/>
<text src="data:text/plain,Second%20Slide" region="text2_region" dur="3s"/>
<text src="data:text/plain,Third%20Slide" region="text3_region" dur="3s"/>
<img src="sample_jpg.jpg" region="image_region" dur="3s"/>
</seq>
</body>
</smil>

請注意,當使用內聯文字而不是引用單獨的純文字檔案作為文字源時,您需要對任何非字母數字字元進行編碼。此示例在第 {13、14、15} 行使用 '%20' 作為空格字元。另外請注意,在第 {13} 行,文字內容的原始碼以 'data:text/plain' 開頭。在 SMIL 2.0 中,這是文字源的預設 MIME 型別,因此在這裡指定它是可選的。但是,在 SMIL 1.0 中,為了使用內聯文字,必須指定它。

SMIL 2.0 模組

[編輯 | 編輯原始碼]

SMIL 2.0 將語言描述按功能劃分為十個模組。每個模組包含用於描述結構、內容、操作或屬性的元素。以下 10 個模組與 SMIL 2.0 名稱空間相關聯。

  1. Timing  
  2. Time Manipulations
  3. Animation
  4. Content Control
  5. Layout
  6. Linking
  7. Media Objects 
  8. Metainformation 
  9. Structure 
 10. Transitions

計時模組提供了一個元素框架,用於確定元素是同時出現、按順序出現還是無序出現,以及由互動式事件(例如單擊超連結)呼叫。

時間操作模組提供將媒體物件與時間相關資訊關聯的能力,例如媒體物件應該顯示的時間長度,以及用作計時模組參考框架的時間線的描述。

動畫模組允許媒體物件放置在時間操作模組定義的時間線上。

內容控制模組允許根據語言和回放功能等因素選擇要播放的內容,使用諸如 switch 等標籤來測試系統的功能。

佈局模組包含描述簡報中媒體物件空間位置的元素。

連結模組描述指向媒體物件的超連結和連結引用。

媒體物件模組描述媒體物件的路徑和型別。

元資訊模組包含描述有關 SMIL 檔案本身或其中包含的媒體物件的元資訊的元素。

結構模組是一個用於描述 SMIL 檔案結構的框架,例如頭部和主體以及 SMIL 元素。

過渡模組是一個用於描述過渡的框架,例如在媒體物件的演示之間擦除和淡入淡出。

檢視 SMIL 檔案

[編輯 | 編輯原始碼]

為了檢視 SMIL 簡報,客戶端需要在自己的計算機上安裝 SMIL 播放器。目前,蘋果的 Quicktime 播放器、Windows Media Player (WiMP) 和 RealNetworks RealPlayer 是最流行的媒體播放器之一。

能夠在 Web 瀏覽器中原生顯示這些 SMIL 檔案將很方便,從而無需單獨的 SMIL 播放器或外掛。目前,微軟的 Internet Explorer 對 SMIL 功能的支援有限。開源 Mozilla 專案正在逐步將 SMIL 和其他與 XML 相關的技術(如 SVG 和 MathML)整合到他們的瀏覽器中,但進展緩慢。他們可能在等待這些基於 XML 的語言成熟。

將 SMIL 檔案嵌入 XHTML 網頁

[編輯 | 編輯原始碼]

如前所述,SMIL 尚未成為 Web 瀏覽器的原生功能,因此為了將 SMIL 放入網頁,必須將其嵌入並在外掛中開啟。將 SMIL 檔案嵌入網頁超出了本章的範圍。但是,如果您需要這樣做,以下連結將作為參考幫助您。

  • 使用 蘋果的 Quicktime 媒體播放器可以輕鬆地嵌入 SMIL 檔案。
  • 在非 IE 瀏覽器上,使用 Windows Media Player 檢視網頁中的 SMIL 檔案。
  • Internet Explorer 5.5+ 瀏覽器支援 SMIL。
  • 訪問 W3Schools 頁面,瞭解如何在 IE 專屬網頁中使用 SMIL。

手機上的 SMIL

[編輯 | 編輯原始碼]

如前所述,SMIL 通常用於最新的手機。手機和供應商對 MMS(多媒體資訊服務)的支援各不相同,但通常情況下,MMS 使用 SMIL 來定義多媒體內容的佈局。如果 MMS 訊息包含 SMIL 檔案,它將包含其他媒體物件,這些物件可以是文字或二進位制檔案(文字在這裡被視為要引用到 SMIL 檔案的媒體物件或檔案)。

關於 MMS 的一個一般性說明:電信行業需要一個系統來根據吞吐量對訊息收費,以及一個將多媒體訊息從手機推送到手機、計算機到手機或手機到計算機的系統。MMS 是一個針對這些目的的標準國際系統。SMIL 被採用是因為它是一種定義完善的標準語言,用於描述 MMS 訊息中內容的佈局和時間安排。透過遵守這些(以及其他)由 3GPP 與歐洲電信標準協會 (ETSI) 和 W3C 合作制定的標準,該行業能夠確保供應商之間新服務的互操作性,從而帶來相互利益和平等的機會。

SMIL 工具和 SMIL 資訊

[編輯 | 編輯原始碼]

鑑於 WikiBooks 是一本公開可用的“開放”書籍,因此包含關於任何商業 SMIL 工具的資訊或連結是不合適的。換句話說,這裡不考慮任何非免費或開源的內容。

只是一個旁註:一些商業工具的成本高達 800 美元。因此,我們最感興趣的是評估、提供反饋併為開源專案做出貢獻。

以下是 (2004 年 3 月 18 日) 對免費和開源工具、當前 SMIL 專案、規範和教程的有用連結

Netbeans 中的 SMIL?

[編輯 | 編輯原始碼]

在 Netbeans 中建立 SMIL 檔案就像建立 XML 檔案一樣。只需將其鍵入並將其儲存為 SMIL 檔案。您可以檢查其格式是否正確,但驗證可能更棘手。如前所述,SMIL 2.0 需要名稱空間宣告,因此請不要忘記它。

對於我們的簡單練習,只需鍵入一個格式良好的 SMIL 文件並將其儲存為 .smil,就完成了!

我們已經瞭解瞭如何使用 SMIL 製作獨立簡報。然而,SMIL 的未來可能在於移動裝置與網際網路的連線。隨著 XML 標準和 SMIL 工具的日趨成熟,SMIL 將越來越多地被實施,以定義互動式簡報,就像 Macromedia FLASH 所做的那樣,只是這種簡報將成為移動裝置中使用的 Web 瀏覽器和微瀏覽器的原生功能。由於 SMIL 是一種開放標準並且是可擴充套件的,因此可能會有其他應用程式也使用 SMIL。

有遠見的人預見到網際網路在我們家和工作場所、計算機和移動裝置上的日益普及。這種普遍性也被稱為“普適計算”。移動商務將是普適計算的一個例子,因為手機和行動式裝置將變得更有利於商業和基於位置的服務。SMIL 是一種語言,它透過為未來的商業服務提供一個漂亮的外觀或增值的多媒體內容,來促進這一趨勢。

SMIL 練習

[編輯 | 編輯原始碼]
  1. 建立一個簡單的 SMIL 檔案,該檔案顯示單詞“Hello World”。確認該檔案在符合 SMIL 的播放器中有效。
  2. 編寫一個 SMIL 檔案,該檔案顯示“Hello World” 3 秒,然後顯示“Goodbye World” 1 秒。確認該檔案在符合 SMIL 的播放器中有效。
  3. 使用現有的 Openoffice.org 簡報(或 PowerPoint 簡報)將其轉換為 SMIL 檔案。在 SMIL 瀏覽器中仔細檢查它。
  4. 將之前建立的 SMIL 檔案之一嵌入到 XHTML 網頁中,並將 SMIL 檔案和網頁儲存在伺服器上。確認 SMIL 檔案對兩臺不同的計算機都有效。

參考文獻

[編輯 | 編輯原始碼]

Ayars, J.,Bulterman, D.,Cohen, A. 等人。(編輯,2001)。同步多媒體整合語言 (SMIL 2.0)。從全球資訊網聯盟 Dot Org 網站檢索,2004 年 4 月 4 日:http://www.w3.org/TR/smil20/smil-modules.html

Castagno, Roberto(編輯,2003 年 1 月)。多媒體資訊服務 (MMS);媒體格式和程式碼。從第三代合作伙伴專案 (3GPP) Dot Org 網站檢索,2004 年 4 月 4 日:http://www.3gpp.org/ftp/Specs/html-info/26140.htm

Michel, T.(2004 年 3 月)。同步多媒體(n.a.,n.d)。從全球資訊網聯盟 Web Dot Org 網站檢索,2004 年 4 月 4 日:http://www.w3.org/AudioVideo/

Newman, D.,Patterson, A.,Schmitz, P.(編輯,2002 年 1 月)。XHTML+SMIL。從全球資訊網聯盟 Dot Org 網站檢索,2004 年 4 月 4 日:http://www.w3.org/TR/XHTMLplusSMIL/

SMIL 教程首頁(n.d.)。從 W 3 Schools Dot Com 網站檢索,2004 年 4 月 4 日:https://w3schools.tw/smil/default.asp

華夏公益教科書