WEB开发网
开发学院WEB开发Xml SMIL 3 领域重点:探索不断扩展的同步多媒体领域内... 阅读

SMIL 3 领域重点:探索不断扩展的同步多媒体领域内的开源工具和技术

 2010-10-22 17:19:04 来源:WEB开发网   
核心提示:同步多媒体同步多媒体在现代通信战略中扮演着一个重要的角色,从广义层面上来讲,SMIL 3 领域重点:探索不断扩展的同步多媒体领域内的开源工具和技术,协同、有序的视频、音频、静态图像、文本以及其他元素的演示可以为要吸引观众瞩目的竞争场合提供一个动态、可选且可编辑的方法,此外,这些漏洞将随着时间而消失,虽然单机版的 Amb

同步多媒体

同步多媒体在现代通信战略中扮演着一个重要的角色。从广义层面上来讲,协同、有序的视频、音频、静态图像、文本以及其他元素的演示可以为要吸引观众瞩目的竞争场合提供一个动态、可选且可编辑的方法。此外,并行的元素演示也会同时吸引几种不同的观众。

假设您在音乐教育领域内工作。作为钢琴技术高级研修课程的一名制作人,您需要向全球众多观众通过一个很大的视频屏幕进行演示。该课程对技术难度很大的一个著名选段(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. 选定的测试用例

测试用例描述
ContentControl添加一个 systemRequired 元素可以帮助程序决定当前系统是否支持所请求的配置文件。它还为浏览器提供允许或拒绝在切换中对元素重新进行排序的功能。对于此最后一项,使用起来更加方便,例如在浏览器中使用插件版本的 smil30-smilContentControl-allowReorder.smil 测试,因为对该测试所依赖的底层语言首选项进行调整更加方便。
Layout将 backgroundOpacity 添加到 BasicLayout,一个新的 layout 元素和一个 soundLevel 元素。 Layout/layout-background-opacity-region.smil 测试探究色标透过其他颜色显示的功能。
Media添加 MediaPanZoom,它可以集中于可视组件的某些部分。尝试 media-pan-zoom-percentages.smil 测试来调查此功能。
Metainformation现在可以在 <body> 元素中使用,同时添加一个 label 属性,并允许各种类型的元编码。 Metainformation/metainfo-test2.smil 和 Metainformation/metainfo-test3.smil 测试使用 <metadata> 元素将信息存储到 .smil 文件的各个部分,并探究 label 属性的用法。
SMILText添加 TextStyling 和 TextMotion。 SMILText/smil30-smiltext-textCrawl03.smil 会显示一些蠕动文本,而 smiltext-textFontSize3.smil 会在同一文档中显示不同大小的字体。
State允许演示独立于所使用系统的状态,并支持对这些状态条件的某些控制。一个有趣的测试是 test-05-send.smil,它涉及到 XML 文件的读写操作。所选的用例是 Ambulant 的一个实例将消息发送到另一个将会稍后运行的实例。
Structure识别 <smil> 元素中的版本和配置文件,如前面在 清单 1 中所演示。本部分中的测试 1-4 似乎可以正确运行。

回到高级研修课程

重新回到前面所提议的钢琴高级研修课程,现在您可以运用 SMIL 3 的某些功能为您的演示做一些计划。各种各样的音频和视频文件,包括动态和静态的、各种格式的(包括 .ogg、.mp3、.mov、.jpg 和 .mpeg),都可以通过仔细的定时进行交错。

第一部分的介绍后面紧接着是一个视频剪辑,内容是使用历史电影胶片介绍一位著名的钢琴家是如何处理这个选段的,然后是介绍的结尾。这三个部分排序非常清楚,而且每个部分都可以使用整个屏幕,所以您只需要使用一个屏幕 region。但是,您还需要跨屏幕使用各种 TextStyling 和 TextMotion 技术来显示蠕动文本,以便将蠕动文本放置到相应的区域以显示标题和字幕。这是与视频并行运行的。

然后课程开始使用在 layout 元素中定义的四个屏幕区域:一个用于演示者概述,一个用于显示乐谱,另外两个分别用于显示左手和右手。所有这些组件都是并行播放的,而且所有四个屏幕都使用声音轨道并行运行。在乐谱区域中使用 MediaPanZoom 聚焦于乐谱边缘的注解,并随播放跟踪标记。

最后,结尾部分将四个区域释放并返回类似于介绍部分的格式。通过整个课程,状态变量会使用切换语句来选择正确的语言音频文件进行播放,而且与版权和编码相关的元信息被存储在 SMIL 文档的正文中。

结果介于充分烘烤的(即过程不可以轻易反转)印刷胶片(其远不适应观众)与完全交互式的、流畅无比的控制台方法之间,其中持续监控输出的一名导演可以对其进行即时更改。

结束语

SMIL 3 在技术上迈进了一大步,它添加了许多有用的功能并且将引擎模块化,使其可用于各种平台上的各种设备,即使这些设备大小、类型和功能不同。在生产环境下,开发人员需要完整可靠的工具,但同时 Ambulant 是 SMIL 3 的很好的学习助手。Ambulant 具有它的缺点,但当然,这些漏洞将随着时间而消失。虽然单机版的 Ambulant 对开发人员来说非常出色,但用户的最终选择很可能还是浏览器插件版本。

Tags:SMIL 领域 重点

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接