|
|
|
[XML初学进阶]XML(41) 网上资源
|
|
5.3.4 面向多媒体:融时空于一体——SMIL
SMIL的全称是同步多媒体合成语言,即Synchronized Multimedia Integration Language。它是一种用于描述多媒体演示文档的语言,允许将一批独立的多媒体对象,包括视频、音频、图象、文字等等,在时间和空间轴上集成为一个同步的多媒体演示文档。这个规范继承了XML跨平台的优点,而且将所有资源都以URI的形式存在网络中,无须编译即可使用,推出后得到了众多厂商的支持。
SMIL包含了以下三方面的内容:
描述演示文档的屏幕布局
利用layout定义窗口布局,其子元素root-layout描述主浏览窗口,region用来把窗口分为若干个区域,确定各个区域的位置、背景等等。
下面的SMIL片段定义了一个主窗口,并在其中定义了左右两个区域:
<layout><root-layout background-color="white" height="300" width="450"/><region id="scene" top="0" left="0" height="300" width="350"/><region id="comment" top="20" left="370" height="260" width="430"></layout>
描述演示文档的时间行为
屏幕中可以包含动画animation、视频video、音频audio、文本流textstream、文本text、图片image。这些多媒体对象可以用pal标记组织成并发形式,也可以用seq标记组织成串行形式。对于每个对象,又可以利用属性begin、end、dur、endsync、repeat具体规定它的起止时间。请见下例:
<par><seq id="places"> <img id="London" region="scene" src="image/london.jpg" dur="15s"/> <img id="Paris" region="scene" src="image/paris.jpg" begin="10s" end="25s"/> <img id="Washington" region="scene" src="image/washington.jpg" dur="15s" begin="id(washington)(35)"/></seq><textstream id="commenttext" region="comment" src="comment.rt" endsync=id(places)/><audio id="bgmusic" src="audio/background.rm" repeat="15"/></par>
结合前面的对空间布局的描述,这段代码的意思是:在窗口左边的区域顺次播放三幅图片,第一幅图片播放15秒,播放完毕后等待10秒后播放第二幅,第一幅图片播放完毕后的第25秒停止第二幅图片的播放,第35秒后开始播放第三幅图片,播放15秒。在播放图片的同时,右边的区域播放解说文字,直到左边的图片播放完毕后才停止播放。除此之外,还有背景音乐,将这段音乐播放15次。
描述媒体对象间的相关链接
SMIL中的超链接类似于HTML中的超链接,用户可以从一个媒体对象访问到另一个对象。其中有两个标记可供使用。标记<a>与HTML中的<a>非常相似,只是增加了属性show来规定超链接激活时,浏览器是覆盖旧窗口、新建窗口、还是暂停原来的播放。标记<ancher>则可以使同一个对象的不同区域指向不同的链接,或者在不同的时间指向不同的链接。
下面两段代码分别达到了这两种效果:
<img id="London" region="scene" src="image/london.jpg" dur="15s"> <anchor href="london1" coords="0%,0%,50%,50%" show="new"/> <anchor href="london2" coords="50%,50%,100%,100%" show="new"/></img><img id="Paris" region="scene" src="image/paris.jpg" begin="10s" end="25s"><anchor href="paris1" begin="0s" end="5s" show="new"><anchor href="paris2" begin="5s" end="15s" show="new"></img>
最后说一说SMIL的整体结构:
<smil> <head> <!--屏幕布局描述--> </head> <body> <!--时间行为描述--> </body></smil>
把上述片段整合成一个完整的SMIL文件是这样的:
<?xml version="1.0" encoding="GB2312"?><!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL1.0//EN" "http://www.w3.org/TR/REC-smil/SMIL10.dtd"><smil><head> <layout> <root-layout background-color="white" height="300" width="450"/> <region id="scene" top="0" left="0" height="300" width="350"/> <region id="comment" top="20" left="370" height="260" width="430"> </layout></head><body> <par> <seq id="places"> <img id="London" region="scene" src="image/london.jpg" dur="15s"> <anchor href="london1" coords="0%,0%,50%,50%" show="new"/> <anchor href="london2" coords="50%,50%,100%,100%" show="new"/> </img> <img id="Paris" region="scene" src="image/paris.jpg" begin="10s" end="25s"> <anchor href="paris1" begin="0s" end="5s" show="new"> <anchor href="paris2" begin="5s" end="15s" show="new"> </img> <img id="Washington" region="scene" src="image/washington.jpg" dur="15s" begin="id(washington)(35)"/> </seq> <textstream id="commenttext" region="comment" src="comment.rt" endsync=id(places)/> <audio id="bgmusic" src="audio/background.rm" repeat="15"/> </par></body></smil>
| |
|
|
|