同步多媒體
同步多媒體在現代通信戰略中扮演著一個重要的角色。從廣義層面上來講,協同、有序的視頻、音頻、靜態圖像、文本以及其他元素的演示可以為要吸引觀眾矚目的競爭場合提供一個動態、可選且可編輯的方法。此外,並行的元素演示也會同時吸引幾種不同的觀眾。
假設您在音樂教育領域內工作。作為鋼琴技術高級研修課程的一名制作人,您需要向全球眾多觀眾通過一個很大的視頻屏幕進行演示。該課程對技術難度很大的一個著名選段(passage)進行討論。音頻是琴聲與演示者聲音的交替。一部分觀眾想要看到鋼琴演奏者和演示者。另一部分觀眾很了解鋼琴演奏者的樣子,但想要跟隨屏幕上的樂譜,同時放大某部分選段。但還有一部分觀眾希望在詳細討論這個困難選段時能看到對鋼琴演奏者的手的特寫鏡頭(有時是左手,有時是右手)。考慮到還有很多屏幕實際使用空間可用,同步多媒體可以通過軟件 — 某些元素串行,某些元素並行 — 來處理所有這些需求。
常用縮略語
DTD:文檔類型定義
SMIL:同步多媒體集成語言
W3C:世界萬維網聯盟
XML:可擴展標記語言
如果情況比較簡單,那麼通過一個媒體文件列表開始播放一個簡單的腳本就夠了。不過,在復雜的情況下,會需要一個更加綜合的程序包。同步多媒體集成語言(Synchronized Multimedia Integration Language,SMIL)是一種 W3C 規范,它可以使用支持極大復雜度和精細度(根據需要開始、暫停、重疊和交錯)的 XML 格式表達對這類演示所要求的說明。IBM® developerWorks 過去已經包括了 SMIL 2。SMIL 規范已擴展到版本 3,其中添加了更多有趣的技術和靈活性,從而使多媒體制作人能夠更加有效地吸引所有觀眾的眼球和耳朵。
工具的狀態
開發人員需要能夠使用新版本的語言,熟悉其新增功能和運行方式。W3C 站點提供了一個教程列表供初學者入門使用。您需要一個編輯器或編輯工具以及一個播放器,W3C 網站上還提供程序編寫包和 SMIL 播放器(包括商業的和開源的)。不過,多數這些工具還尚未達到 SMIL 3 的速度。毫無疑問,後台作業在竭力使這些工具能夠跟上版本 3 的速度,但想要處在技術最前沿的開發人員真正想要的是什麼呢?目前,在 SMIL 3 環境中,您可以使用一個純文本編輯器進行編輯並使用 Ambulant 作為播放器,或者您也可以使用您自己喜歡的工具。
編輯器:您的選擇
SMIL 3 尚未提供具有拖放和時間軸功能的真正的視覺化編輯器,這一點使很多用戶覺得喪氣。但是,因為 SMIL 規范是基於 XML 的,而 XML 是以純文本格式編寫的,所以任何合理的編輯器都可行。
純 SMIL 環境下的最優選擇是 Eclipse。要在 XML 編輯器中直接打開 .smil 文件,要確保 MIME 類型 *.smil 在 Window > Preferences > General > Content Types 和 Window > Preferences > General > Editors > File Associations 中進行了注冊。
此外,Eclipse 能夠使用 SMIL DTD 來控制 SMIL 環境下對底層代碼的編輯。
播放器:Ambulant
Ambulant是一個開源播放器,該播放器非常接近於完整的 SMIL 3 實現。該程序是開源的,並且可在三個主流平台上使用:Linux®、Microsoft® Windows® 和 Mac OS® X。
Ambulant 支持兩種格式:單機版和浏覽器插件。開發人員應該選擇單機版本。雖然浏覽器插件可以滿足用戶引擎的選擇,但單機版具有更好的報告和調試功能(而這對於開發人員非常重要,因為出錯的風險性更高而且反饋具有很高的優先級)。注意,即使單機版和浏覽器插件是同時維護的,但由於實現的不同,您通過這兩種版本獲得的行為也可能不同。
在 Linux 中安裝和設置 Ambulant
出於本文的目的,我在 OpenSUSE 11.2 上使用了 Ambulant 2.2 版。
第三方支持
Ambulant 的編譯需要使用第三方組件。雖然這些組件都是常用的,但會特別予以提供,因為需要對這些組件進行調整或編輯以便與 Ambulant 相吻合。這些組件在一個名為 /third_party_packages 的子目錄中以各自不同(且正確)的格式加以提供,且會被生成流程優先選擇。
在 Linux 上構建 Ambulant 的過程分為兩個階段。首先是使用以下命令構建第三方程序包:
Python build-third-party-packages.py Linux
構建完成後,常用的 ./configure, make, 和 make install 序列將構建單機版的 Ambulant 閱讀器。請參考下載包中的 INSTALL 文件以查看完整的說明。
設置 XML 驗證程序以及其他選項
第一次運行 Ambulant 時,您可能會接收到一條消息,提示您 XML 驗證程序尚未設置。在顯示的窗口中,選擇File > Preferences,然後選擇以下選項:
Auto XML 驗證方式。Always 可能會可用,但這不是一個好的選擇,因為某些狀態聲明不需要相同的檢查,從而導致驗證會不恰當地失敗。
日志級別的 Debug。
解析程序的 Xerces 或 Expat,您可以根據您的喜好進行選擇。Xerces 在出問題的情況下可以提供更多信息。
根據您的需要選擇其他選項。
設置完 XML 驗證程序之後,Ambulant 應該就可以通過 File > Open 來運行一個擴展名為 .smil 的文件。Extras/Welcome/ 目錄中有一些示例文件。
使用 Ambulant
在使用 Ambulant 時您需要了解一些注意事項。
作為一名開發人員,您需要了解出現問題時的一些信息。因此,我建議您對運行正常的 .smil 文件保留一個副本,使用純文本編輯器向該文件中添加錯誤,然後嘗試運行這個故意添加了錯誤的文件。失敗時,您可以通過 VIEw > Log Window 來檢查錯誤輸出。
需要注意的是,如果首次打開 Ambulant 窗口時沒有加載文件,則窗口大小是最小化的;您可能必須查找窗口。只有當您打開一個有效文件時,窗口才會調整大小以包含文件中所聲明的主區域。
通過命令行界面(CLI)重復打開和關閉 Ambulant 每次會破壞錯誤緩沖。有時候這是一個優勢,但有時候這也是一個問題。
如果您懷疑 Ambulant 自身已經破壞且需要被重新構建,您可以通過刪除構建工作目錄、重新提取源文件並重新編譯來完成。
配置文件就是一個標簽,它指明 Ambulant 正在運行於哪個設備,哪些組件應該被加載以最為有效地使用其資源。一個完全加載的 PC 可以很容易地加載所有組件,但對於較小的設備,只提供一部分常見組件可能更有幫助。
您可以在 SMIL 文件的根元素中以 清單 1 中所示的方式來指明配置文件,作為 <smil> 根元素的 baseProfile 屬性。
清單 1. 指定 baseProfile
... <smil
XMLns="http://www.w3.org/ns/SMIL" version="3.0"
baseProfile="Language"> ...
在軟件完全符合規范要求之前,最好在實驗中將 baseProfile 指定為 Language,因為其他配置文件可能尚未實現。
目前,Ambulant 不會記住以前使用的路徑,因此最好是從一個已知的本地工作目錄開始工作並重新加載,以避免再需要細化到更低的目錄。另一個選擇是從命令行運行。
SMIL 3 測試用例
使用 Web 資源中的示例時,很容易會導航錯過嚴格符合 SMIL 3 的代碼樣例。更為可靠和便捷的方式是使用 W3C 建議頁面上列出的 SMIL 3 測試用例。
這些測試樣例是試金石,通過這些樣例您能夠了解 SMIL 3 的功能。下面是探究這些新增功能的建議步驟:
下載 SMIL 3 新增的測試用例。
將這些文件解壓縮到已知目錄。
將包含這些文件的目錄作為當前工作目錄。
向下浏覽這些文件的子目錄找到下列測試用例組之一:
Animation
ContentControl
Layout
Media
Metainformation
namespace_and_doctype
SMILText
State
Structure
Timing_and_Sync
通過將當前目錄設置為擴展測試用例中的 /files 目錄,您可以將所有測試用例排列在相應子目錄下的一個目錄中。在這裡,可以使用一個測試用例作為單個參數(如 清單 2 中所示)對 AmbulantPlayer_gtk 進行直接調用。
清單 2. 命令行啟動
$ AmbulantPlayer_gtk /Media/FancyPanZoomDemo.smil
運行每個測試用例後退出 Ambulant 播放器。這樣做可以清除錯誤緩沖,以便下一個測試用例使用,並讓已知的 .smil 文件便於在需要時通過剪切和粘貼操作進行調整。
隨著某些領域的快速發展,您可能發現某些測試用例並非如您所預期的那樣能立即運行。下表中的示例是專門選擇的,很可能為您提供及時的正面體驗。
有一個小的可能比較令人困惑的問題就是,雖然很多 SMIL 3 源代碼文檔使用 <!DOCTYPE ..> 語句,但並非所有情況下都是如此。注意,很多 State 測試用例並不包含 DOCTYPE 語句,因為部分代碼不符合 SMIL 語法。
SMIL 3 建議中有兩種類型的更改。一種類型包含引擎模塊之間的代碼移動,但不會直接影響頂級的 SMIL 編碼。這種類型的更改的目的是支持不同的配置文件,同時避免加載資源受限的不需要的部分引擎,例如手持設備。
另一種類型的更改是對元素和屬性進行更改,這種是 SMIL 開發人員比較感興趣的一種。
表 1 列出並描述了某些選定的測試用例,這些用例看上去至少在一台計算機上可以正確運行。
表 1. 選定的測試用例
回到高級研修課程
重新回到前面所提議的鋼琴高級研修課程,現在您可以運用 SMIL 3 的某些功能為您的演示做一些計劃。各種各樣的音頻和視頻文件,包括動態和靜態的、各種格式的(包括 .ogg、.mp3、.mov、.jpg 和 .mpeg),都可以通過仔細的定時進行交錯。
第一部分的介紹後面緊接著是一個視頻剪輯,內容是使用歷史電影膠片介紹一位著名的鋼琴家是如何處理這個選段的,然後是介紹的結尾。這三個部分排序非常清楚,而且每個部分都可以使用整個屏幕,所以您只需要使用一個屏幕 region。但是,您還需要跨屏幕使用各種 TextStyling 和 TextMotion 技術來顯示蠕動文本,以便將蠕動文本放置到相應的區域以顯示標題和字幕。這是與視頻並行運行的。
然後課程開始使用在 layout 元素中定義的四個屏幕區域:一個用於演示者概述,一個用於顯示樂譜,另外兩個分別用於顯示左手和右手。所有這些組件都是並行播放的,而且所有四個屏幕都使用聲音軌道並行運行。在樂譜區域中使用 MediaPanZoom 聚焦於樂譜邊緣的注解,並隨播放跟蹤標記。
最後,結尾部分將四個區域釋放並返回類似於介紹部分的格式。通過整個課程,狀態變量會使用切換語句來選擇正確的語言音頻文件進行播放,而且與版權和編碼相關的元信息被存儲在 SMIL 文檔的正文中。
結果介於充分烘烤的(即過程不可以輕易反轉)印刷膠片(其遠不適應觀眾)與完全交互式的、流暢無比的控制台方法之間,其中持續監控輸出的一名導演可以對其進行即時更改。
結束語
SMIL 3 在技術上邁進了一大步,它添加了許多有用的功能並且將引擎模塊化,使其可用於各種平台上的各種設備,即使這些設備大小、類型和功能不同。在生產環境下,開發人員需要完整可靠的工具,但同時 Ambulant 是 SMIL 3 的很好的學習助手。Ambulant 具有它的缺點,但當然,這些漏洞將隨著時間而消失。雖然單機版的 Ambulant 對開發人員來說非常出色,但用戶的最終選擇很可能還是浏覽器插件版本。