中国科技论文在线 
http://www.paper.edu.cn 
基于 SMIL 与流媒体的多媒体课件的制作 
张海鹏 
北京邮电大学网络教育学院,  北京  (100088) 
E-mail:zhanghaipengbupt@163.com 
摘  要:本文介绍了 SMIL2.0 的特性,对 SMIL 的布局、动画、链接、同步计时、过渡模块
进行实例演示。通过与流媒体相结合,实现了 SMIL 网络课件的制作,可以满足课件制作者
的多变需求,体现了很强的简洁性、开放性、交互性。 
关键字:SMIL    XML  流媒体  多媒体 
中图分类号:TP312      文献标识码:A 
 
1  引言 
同步多媒体集成语言( The SynchronizedMultimedia Integration Language ( SMIL)  ,发音
作“smile”)是可扩展标记语言(XML)一种重要应用。推出 SMIL 最初的目标是为了实现在
Web 上的实时的多媒体演示(presentations)  ,自从 Web 出现以来,网站管理者一直在探索使
用两个或更多的流来提供具备艺术水准的多媒体演示的机制,但却受到了诸如 HTML 和
JavaScript 等传统的 Web 技术的限制。SMIL 的出现则为 Web 客户提供了更好地表现多媒体
内容的能力,它使网站建设者很容易定义并组织多媒体元素(如:视频,音频,动态的图像等)
相互协调和相互作用[1]。 
1998 年 6 月 15 日,  SMIL1.0 成为 W3C 的推荐标准,  2001 年 8 月 7 日,  SMIL2.0 成
为 W3C 的推荐标准。目前已经被接受为推荐标准的是  2005 年 12 月提出的 SMIL2.1[2]。与
常见的 Flash、WindowsMedia 等多媒体格式相比,SMIL 更具有开放性的,在不同用户操作
系统中兼容性更强,其媒体格式制作也更为容易。SMIL  对多媒体有很好的集成和控制能力,
能保持素材的独立性,在通过 Internet  实现各种多媒体信息共享方面具有突出优势,无疑,
未来 SMIL 是多媒体课件发展的重要方向之一。 
2 SMIL 相关简介 
2.1  编辑器与播放器的选择 
随着 SMIL  技术的发展和完善,越来越多的业界组织和供应商提供了支持 SMIL  的开
发工具。RealNetworks  公司的 SMILGen  软件支持 XML/SMIL  创作;Adobe  公司的可视化
创作程序 GoLiveStudio  提供了 SMIL  和 QuickTime 编辑器。另外还有荷兰 atrixDevelopment 
开发的 GRINS  系统,法国 Helio  组织开发的基于 JAVA 语言的 SMIL 专用 SOJA 浏览器等
软件。 
SMIL 文件可以通过客户端安装相应的应用程序播放,也可以通过浏览器播放。Microsoft 
从  Internet  Explorer  版本  5.0  开始增加了  SMIL  支持子集。IE  的当前版本  6.0  已扩展了
其  SMIL  支持。IE 6.0  允许开发人员使用  SMIL  滤镜(filter)和效果(effect)(如渐隐图
像),使用擦除(wipe)在文本和媒体元素之间进行变换,对元素应用渐变色背景,控制每
个元素的定时。在 IE5.5 及其高级版本或 FireFox 安装插件进行播放。 
目前,世界上三大流媒体平台厂商 APPLE,RealNetworks  和 Microsoft  均支持 SMIL。 
Microsoft  的 Windows Media Player  仅对 SMIL  提供有限的支持,Apple  的 QuickTime 
对 SMIL 的支持比较全面,但是支持媒体格式比较有限,  RealNetworks  公司的 RealPlayer  和
 - 1 -
中国科技论文在线 
http://www.paper.edu.cn 
后继版本 Realone Player  全面支持 SMIL 标准,同时开放源码,支持的格式最广泛,用户群
体最广大。[3] 
本文由于时间限制,本文使用记事本与 RealSlideshow  2.0 共同编辑 SMIL 文件,使用
realplayer11 播放 SMIL 文件。 
2.2 SMIL 支持的媒体类型 
SMIL 支持的媒体类型如表 2.1 所示: 
标记名称 
 
 
 
 
 
 
 
 
表 2.1 SMIL 支持的媒体类型 
关联的媒体种类 
动画文件(GIF、Flash 动画等) 
文本文件(.txt) 
RealText 的流式文本文件(.rt) 
图片文件(JPEG、GIF、PNG 等) 
声音文件(RM、MP3、WAV 等) 
视频文件(RM、MOV、MPEG 等) 
其它媒体标记无法描述的格式 
 
3 SMIL2.0 的主要模块应用 
3.1  布局模块 
3.1.1 基本布局(BasicLayout) 
通过 laylout、region、fit、z-index、width、height、background-color 等属性实现 smil 窗
口的基本布局。 
其中 z-index 属性可以用来实现窗口的重叠,即画中画的功能。z-index 的值越大就显示
在上面。效果图见图 3.1 
基本布局的例子如下:(具体实例见 huazhonghua.smil) 
... 
   
   
   
   
 
...   
 - 2 -
中国科技论文在线 
http://www.paper.edu.cn 
图 3.1  画中画效果图 
 
 
3.1.2 层次布局(HierarchicalLayout) 
层次布局允许嵌套的“区域(region)”元素:层次布局的位置是相对于其上一区域(父
区域),而不是“根布局”。层次布局支持分组,这样更容易改变布局。 
层次布局的例子如下:(具体实例见 cengcibuju.smil) 
... 
   
 
   
 
 
...   
3.1.3 支持多窗口(MultiWindowLayout) 
利用多窗口的支持特性,可以把媒体对象放置在多个窗口中。通过属性控制,可以使窗
口在开始时打开,或在一个媒体被激活时打开。下面是一个多窗口的例子。这个例子将测试
topLayout 的打开特性。首先显示一个 topLayout。开始(0 秒)时,在一个打开的窗口里显
示 p2.jpg。在第 5 秒钟时打开另一个窗口,并在上面显示 1.rmvb。在第 10 秒钟停止 p2.jpg,
但 r1 不关闭窗口。在第 15 秒钟时停止 1.rmvb,r2 窗口关闭。其效果图 3.2 
多窗口的例子如下(duochuangkou.smil): 
 
   
 
         
         
         
         
         
 
 
   
 
             - 3 -
 
 - 3 -
中国科技论文在线 
http://www.paper.edu.cn 
            

 
   
 
 
图 3.2  多窗口效果图 
 
 
3.2  链接模块 
利用 anchor 属性对链接加上时间的控制,利用 coords 属性对链接加上空间的控制。链
接对象可以是 smil 规定的任何一种多媒体对象,也可以是多媒体对象的某一部分,利用#属性
可以实现。 
链接的例子如下(anchor.smil): 
   
   
   
   
   
   
   
   
 
 
 
该例实现了在窗口播放视频 yizhongtian.rmvb,在前十秒点击该视频任意部分链接至图片
p1.jpg,在 10s 到 20s 点击该视频的左半部分可以链接至新的视频 1.rm,在 20s 到 30s 点击该视
频任意部分链接至 smil2.smil 的 testlink 所标记的区域。 
3.3  计时同步模块 
利用 clipBegin、clipEnd 属性实现了指定多媒体片段的播放,而且不改变多媒体源文件。
下面的例子实现了截取 radio.wav 第五秒到第十秒的音频进行播放的功能: 
 
 - 4 -
中国科技论文在线 
3.4  媒体过渡模块 
http://www.paper.edu.cn 
媒体过渡可能在所有媒体类型之间发生,例如图像过渡为其他图像,图像过渡为视频,
以及音频之间过渡。可视媒体过渡的例子如图像之间的淡入淡出(fading),视频之间的擦
入擦除(wipe)等。 
实现方法是类似式样的过渡("Style-like" Transition)。这种方式类似于”region”的应
用,需要在头部(”head”)中预定义类,说明持续时间、类型等。在媒体元素的过渡中引
用它们。同样的过渡定义可以被用于不同媒体对象之间的过渡。下面是类似式样的过渡的例
子,效果图见图 3.3、图 3.4 
类似式样的过渡例子(transition.smil): 
该例实现了图片 p1.jpg 的水纹式插入持续 3s,淡出持续 2s,接着图片 p2.jpg 钟表式擦
入持续 3s,淡出持续 2s。 
 
 
 
 
 
 
 
 
 
 
 
 
 
图 3.3  waterfallWipe 效果图 
 
 
 - 5 -
中国科技论文在线 
http://www.paper.edu.cn 
图 3.4 clockwipe 效果图 
 
 
3.5  动画功能 
动画功能的目的是随着时间的推移移动媒体对象。动画的实现是按时间变化改变属性值
(大多数是“区域”属性),例如,背景颜色,音量,z-index 等。SMIL 的动画模块也被
SVG 使用。 
下面是动画的例子(donghua2.smil): 
该例实现了将图片 p1.jpg 的缩放。 
   
   
   
   
   
   
   
   
 
   
   
   
   
 
动 画 的 其 他 特 性 还 有 : 控 制 是 否 将 动 画 现 在 值 加 上 附 加 值 ; 控 制 动 画 重 复 效 果
“imateMotion”允许沿路径移动元素;“teColor”允许颜色活动。 
3.6  依据条件选择播放内容   
  使用选择标记
和,可以在 SMIL 文件中定义选择项,媒体播放器会
根据所定义的播放条件是否满足客户端的系统设置来选择播放内容。在
组合中,可
以定义任意数量的选择项。组合的书写格式如下所示: 
         
            <选择项 1    条件属性="条件 1"/> 
            <选择项 2    条件属性="条件 2"/>   
            <选择项 3    条件属性="条件 3"/> 
            … 
 - 6 -
中国科技论文在线 
http://www.paper.edu.cn 
         
利用这一特性 smil  可以满足对多语言的需求。例如:smil  文件可以在同一页面中包括
汉语和英语的音频文件,然后根据用户的参数设置自动选择下载中文或英文版本。 
   
   
   
 
4  整合 SMIL2.0 制作多媒体课件 
4.1  素材准备 
1.图像素材:收集有关主讲人图片及课程图片 
2.文本素材:相关课程的说明性文字。 
3.视频素材:相关课程的视频。 
本文制作了一个演示课件:《北京欢迎你》(beijing.smil),实现了布局、链接、RealText
实现歌词同步、RealPix 实现图片同步,内容控制实现了中英文语言字幕的演示。 
4.2  具体实现 
4.2.1  用 RealText 制作流式文本文件 
RealText 是由 RealNetworks 开发,专门用于编写适合于在 Internet 上进行媒体点播或广
播的流媒体文本文件的标记性语言。属于扩展性标记语言的范畴。同为标记性语言,RealText
和 HTML 很相似,都是通过各种标记(Tag)来表示和排列各种对象的。 
格式: 
 
...RealText 的其他标记... 
 
利用文本素材用 RealText 制作流式文本文件,本文所作课件歌曲字幕同步通过 bejing.rt
实现,注释及操作提示通过 beijingdes.rt 实现,英文字幕通过 beijingdes-English.rt 实现。 
4.2.2  用 RealPix 制作流式图像文件 
RealPix 也是由 RealNetworks 开发,进行媒体点播或广播的流媒体文本文件的标记性语
言,属于扩展性标记语言的范畴(XML)。只有通过 Real 服务器,才能真正地测试 RealPix 文
件的网络发布效果。由于 RealPix 文件的网络发布需要消耗比 RealText 多得多的传输带宽,
实际测试网络其网络发布效果非常重要。 
< imfl...options...> 
...RealPix 的其他标记... 
 
利用图像素材使用 RealPix 制作流式图像文件 bejingpic.rp,其中加入了图片的淡入淡出 x
效果(crossfade)与镜头切换效果(wipe)。 
4.2.3 SMIL 文件的制作 
通过 SMIL 布局:首先设置根窗口大小为 1200*600,将根窗口平均分为四个区域窗口,
左上为 video_region 窗口,左下为 main_region 窗口,右上为 picture_region 窗口,右下为
 - 7 -
中国科技论文在线 
descripe_region 窗口。 
http://www.paper.edu.cn 
通过 SMIL 实现各个窗口播放内容时间的控制:共 2 分 28 秒,第 1 分钟:video_region
窗口播出 beijing.rm 视频,picture_region 窗口播放图片流媒体 beijingpic.rp,main_region 窗
口动态显示歌词 beijng.rt(与视频同步),descripe_region 窗口显示提示信息 beijingdes.rt,
此时效果图见图 4.1,点击 video_region 窗口的左上部会链接至《琵琶行》课件演示
(pipaxing.smil)。在第一分钟后点击字幕可进入转场效果演示(transition.smil)。第 1:14:视频
与图片区域互换,注释区字幕变为英文,此时效果图见图 4.2。 
图 4.1 SMIL 效果图 1 
 
图 4.2 SMIL 效果图 2 
 
 
 
4.2.4  实现代码 
 
 
 
 
     
     
     
     
 - 8 -