彩信制作之SMIL规范
关键词:MMS、MM、SMIL
缩略语清单:
MM Multimedia Messaging 多媒体消息
MMS Multimedia Messaging Service 多媒体消息服务
MMSC Multimedia Messaging Service Center 多媒体消息服务中心
SMIL Synchronized Multimedia Integration Language
3GPP Third Generation Partnership Project 第三代合作工程
WAP Wireless Application Protocol 无线应用协议
1 概述
该文档说明了在MMS中消息的组装方式。主要介绍了SMIL方式的组装消息,并简单介绍了SMIL语言。
本文档主要从下面几个方面进行介绍:
l MM的组装方式
l SMIL基础知识
l 混合格式组装举例
l 关联格式组装举例
2 MM的组装方式
在一个MM中一次可以填充多个内容体内容体可以是不同媒体类型的根据消息内容的组装是否有序消息的组装方式分为application/vnd.wap.multipart.mixed(混合格式)和application/vnd.wap.multipart.related(关联格式)方式。
2.1 application/vnd.wap.multipart.mixed(混合格式)
使用application/vnd.wap.multipart.mixed方式组装的MM ,一般意义上是所有的消息内容混合在一起,没有时间上的顺序。在终端可能在同一时间一次就把所有的消息内容显示出来消息内容在MM中的存放位置见下图:
图 1application/vnd.wap.multipart.mixed方式组装的MM
从图中可以看到,所有的消息内容MMSContent所指向的之间是没有任何关系的。如果说有关系的话,就是存放在MM中的时间上的先后,但是在显示这些消息内容的时候可能就没有时间上的之后,很有可能就是一次显示出来。
此外,在大部分终端上还支持带SMIL文件的混合格式MM,这类格式MM组装方式与关联格式一样。
2.2 application/vnd.wap.multipart.related(关联格式)
使用application/vnd.wap.multipart.related方式组装MM时,各消息内容之间是有一定的关系的,该关系可能是显示的时间上的先后、显示的位置等。这样在终端显示该消息的时候,就可以以类似小电影的方式显示一系列信息,使得该MM的显示更加趣味化。
消息内容在MM中的存放位置见下图:
图 2 application/vnd.wap.multipart.related方式组装的MM
和图1比较可以发现这种方式组装的消息中多了个presentation,并且要求这个信息处于MM的消息内容中的第一位。presentation 也是MM的一个消息内容,但是这个消息内容有一个指针start 指向它,表明它是第一位的。如果终端显示这个MM时,首先要从这个消息内容开始,但是终端显示消息内容的时候并不把presentation 这个消息内容显示出来,而仅是根据它获取一些信息,这些信息就决定了其他的消息内容的显示的大小、先后顺序、位置等,从而实现了小电影。
那presentation 中是什么信息能够决定其他消息显示的大小、先后顺序、位置呢?那就就是使用了SMIL。下面是一个典型的SMIL文件例子。
<smil> <head> <layout> <!--显示底板的大小--> <root-layout width="352" height="144" /> <!--显示的图片的大小位置--> <region id="Image" width="176" height="144" left="0" top="0" /> <!--显示文本信息的大小位置--> <region id="Text" width="176" height="144" left="176" top="0" /> </layout> </head> <body> <!--第一帧信息显示5秒钟--> <par dur="5000ms"> <!--第一幅图片显示时使用layout中定义的Image的大小和位置--> <img src="firstImage.gif" region="Image" /> <!--第一段文本信息显示时使用layout中定义的Text的大小和位置--> <text src="firstText.txt" region="Text" /> <!--第一段声音--> <audio src="firstSound.amr" /> </par> <!--第二帧信息显示4秒钟--> <par dur="4000ms"> <img src="secondImage.gif" region="Image" /> <text src="secondText.txt" region="Text" /> <audio src="secondSound.amr" /> </par> <!--第三帧信息显示6秒钟--> <par dur="6000ms"> <img src="thirdImage.gif" region="Image" /> <text src="thirdText.txt" region="Text" /> <audio src="thirdSound.amr" /> </par> </body> </smil> |
从上面的SMIL文件中可以看到,该文件对其他内容的显示作了很细致的定义,包括显示的时间、大小、位置等。
3 SMIL基础知识
SMIL是同步多媒体集成语言(Synchronized Multimedia Integration Language)的缩写,念做smile 。它是由3W(World Wide Web Consortium)组织规定的多媒体操纵语言。
3.1 布局管理标签
布局管理标签定义了显示不同类型的媒体时占用的空间大小和位置。
标签 | 标签携带的属性 | 嵌入的子标签 | 说明 |
Layout | None | Region Root-layout
|
|
Region | left top height width fit id | None
| 该标签中定义媒体类型的占小和位置通常和文本进行定义 |
Root-layout | width height | None | 该标签定义了 板的大小 |
例如:
<layout> <!--定义显示底板的大小--> <root-layout width="352" height="144" /> <!--显示的图片的大小位置--> <region id="Image" width="176" height="144" left="0" top="0" /> <!--显示文本信息的大小位置--> <region id="Text" width="176" height="144" left="176" top="0" /> </layout> |
Root-layout标签中的width height属性的单位是像素,定义了显示消息的底板的大小。默认的显示的底板大小取决于终端。
Region 标签中定义的height和width可以填写以像素为单位的数字,也可以填写占用Root-layout 的百分比。Region标签中left top属性的单位是像素分别表示距边框左边和上边的距离。
Region标签的fit属性的取值范围与含义如下:
取值 | 说明 | 建议 |
hidden (默认属性) | 表示保持多媒体片断的尺寸不变,从窗口的左上角开始显示。如果多媒体片断尺寸比窗口的尺寸小,那么空白的地方将用背景色填充。如果多媒体片断尺寸比窗口的尺寸大,那么多媒体片断超出窗口部分被裁去,不被显示。 |
|
meet
| 表示在保持多媒体片断宽/高比例不变的情况下,对多媒体片断的尺寸进行缩放。从左上角开始显示,缩放到高度和宽度中的一个尺寸等于窗口的相应的尺寸,而另外的一个小于窗口的相应的尺寸。空白处用背景色填充。 | 建议采用这个方式! |
fill | 表示缩放多媒体片断使得其大小正好和窗口的大小一致。如果多媒体片断的宽/高比例和窗口的宽/高比例不等,那么多媒体片断就会变形,非常难看! | 建议不要采用这种方式! |
scroll | 表示对多媒体片断的尺寸不做什么修改,它以正常的尺寸大小显示。但是,如果多媒体片断的尺寸超出了窗口的尺寸,那么将会相应出现水平或者垂直滚动条。 | 该种方式适合于长时间的多媒体片断的显示。如果多媒体片断的显示时间很短,建议不要使用! |
Slice | 表示在保持多媒体片断宽/高比例不变的情况下,对多媒体片断的尺寸进行缩放。从左上角开始显示,缩放到高度和宽度中的一个尺寸等于窗口的相应的尺寸,而另外的一个大于窗口的相应的尺寸。超出的部分被裁去而不显示。 |
|
3.2 媒体类型标签
媒体类型标签定义了不同媒体类型显示时使用的资源布局管理等。
标签 | 标签携带的属性 | 嵌入的子标签 | 说明 |
Text | src region alt begin end | None | 文本 |
Img | src region alt begin end | None | 图片 |
Audio | src alt begin end | None | 语音 |
Ref | src region alt begin end | None | 该标签是一个通用标签 可以代替Text Img 和 Audio标签但是使用这 个标签可能就不知道内 容具体的媒体类型是什 么不建议使用该标签 |
4 混合格式组装举例
4.1 带SMIL文件
<?xml version="1.0" encoding="UTF-8"?> <MMS-FILE> <MMS-FILE-HEADER> <MMS-Version>6.3.0</MMS-Version> <Content-Type>application/vnd.wap.multipart.mixed</Content-Type> </MMS-FILE-HEADER> <MMS-FILE-Content> <ID>pres.smil</ID> <Type>application/smil</Type> <Length>435</Length> <Charset></Charset> <OFFSET>1</OFFSET> </MMS-FILE-Content> <MMS-FILE-Content> <ID>1.jpg</ID> <Type>image/jpeg</Type> <Length>6604</Length> <Charset></Charset> <OFFSET>2</OFFSET> </MMS-FILE-Content> <MMS-FILE-Content> <ID>1.txt</ID> <Type>text/plain</Type> <Length>659</Length> <Charset></Charset> <OFFSET>3</OFFSET> </MMS-FILE-Content> <MMS-FILE-Content> <ID>addtest.txt</ID> <Type>text/plain</Type> <Length>36</Length> <Charset></Charset> <OFFSET>4</OFFSET> </MMS-FILE-Content> </MMS-FILE> <smil> <head> <layout> <root-layout height="480px" width="640px"/> <region id="Reg1" top="0" left="0" height="50%" width="100%" fit="meet"/> <region id="Reg2" top="50%" left="0" height="50%" width="100%" fit="meet"/> </layout> </head> <body> <par dur="3000ms"> <img src="1.jpg" region="Reg1"/> <text src="1.txt" region="Reg2"/> </par> <par dur="3000ms"> <text src="addtest.txt" region="Reg1"/> </par> </body> </smil> |
4.2 不带SMIL文件
<?xml version="1.0" encoding="UTF-8"?> <MMS-FILE> <MMS-FILE-HEADER> <MMS-Version>6.3.0</MMS-Version> <Content-Type>application/vnd.wap.multipart.mixed</Content-Type> </MMS-FILE-HEADER> <MMS-FILE-Content> <ID>1.jpg</ID> <Type>image/jpeg</Type> <Length>6604</Length> <Charset></Charset> <OFFSET>1</OFFSET> </MMS-FILE-Content> <MMS-FILE-Content> <ID>1.txt</ID> <Type>text/plain</Type> <Length>659</Length> <Charset></Charset> <OFFSET>2</OFFSET> </MMS-FILE-Content> <MMS-FILE-Content> <ID>addtest.txt</ID> <Type>text/plain</Type> <Length>36</Length> <Charset></Charset> <OFFSET>3</OFFSET> </MMS-FILE-Content> </MMS-FILE> |
5 关联格式组装举例
<?xml version="1.0" encoding="UTF-8"?> <MMS-FILE> <MMS-FILE-HEADER> <MMS-Version>6.3.0</MMS-Version> <Content-Type>application/vnd.wap.multipart.related</Content-Type> <PresentationId>pres.smil</PresentationId> <MultipartRelatedType>application/smil</MultipartRelatedType> </MMS-FILE-HEADER> <MMS-FILE-Content> <ID>pres.smil</ID> <Type>application/smil</Type> <Length>435</Length> <Charset></Charset> <OFFSET>1</OFFSET> </MMS-FILE-Content> <MMS-FILE-Content> <ID>1.jpg</ID> <Type>image/jpeg</Type> <Length>6604</Length> <Charset></Charset> <OFFSET>2</OFFSET> </MMS-FILE-Content> <MMS-FILE-Content> <ID>1.txt</ID> <Type>text/plain</Type> <Length>659</Length> <Charset></Charset> <OFFSET>3</OFFSET> </MMS-FILE-Content> <MMS-FILE-Content> <ID>addtest.txt</ID> <Type>text/plain</Type> <Length>36</Length> <Charset></Charset> <OFFSET>4</OFFSET> </MMS-FILE-Content> </MMS-FILE> <smil> <head> <layout> <root-layout height="480px" width="640px"/> <region id="Reg1" top="0" left="0" height="50%" width="100%" fit="meet"/> <region id="Reg2" top="50%" left="0" height="50%" width="100%" fit="meet"/> </layout> </head> <body> <par dur="3000ms"> <img src="1.jpg" region="Reg1"/> <text src="1.txt" region="Reg2"/> </par> <par dur="3000ms"> <text src="addtest.txt" region="Reg1"/> </par> </body> </smil> |
6 彩信头文件注意事项
l Region只能定义两个,不能同时定义三个!
l Region的Fit属性取值范围一般限于:hidden、meet;
l 在<body>区域中不能包含<seq>元素;
l Region区域中,包括left、top、width、height等几个大小和位置的参数均用百分比(相对于底板root-layout)标识;
l 混合格式需支持带SMIL文件和不带SMIL文件两种格式。