跳转到内容

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.org.cn/smil/default.asp

华夏公益教科书