彩信之SMIL规范

彩信之SMIL规范

      上次给大家分析了短信问题,下面我分析下彩信,因为彩信不想短信只是一段文字。彩信有自己的协议格式,先给大大家介绍下彩信是什么,再给大家分析原创、发送、播放彩信问题。

       彩信数据资源包,包括两类:1是一个协议文件(smil文件)和一些资源文件,协议文件就是来规范改彩信有哪些资源要播放和以什么方式播放。资源文集博客文字(txt)图片(png/jpg/gif等)视频(mp4等)。所以想了解彩信说到底就是了解smil规范。所以我们先介绍下smil规范:

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 width="176" height="144" left="0" top="0" />

<!--显示文本信息的大小位置-->

<region 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       彩信头文件注意事项

Region只能定义两个,不能同时定义三个!

RegionFit属性取值范围一般限于:hiddenmeet

l  在<body>区域中不能包含<seq>元素;

Region区域中,包括lefttopwidthheight等几个大小和位置的参数均用百分比(相对于底板root-layout)标识;

l  混合格式需支持带SMIL文件和不带SMIL文件两种格式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值