手机开发实战98——MMS介绍5
来源:互联网 发布:数据透视总计 编辑:程序博客网 时间:2024/04/29 16:39
对于使用SMIL语言描述的MMS,在通过无线网络发送的时候,我们必须通过某种方式把SMIL和附属的内容包装在一起,一边能够以一个unit(整体)的形式发送出去,以便SMIL文件各个部分内容的reference变得有效。
这个解决的办法就是MIME(Multipart Internet Mail Extensions)规范,这个规范的最初作用是在email的plain text的主体中加入不同的内容。比如说,发送带有附件的email,这个时候你就使用了MIME的规范。MIME负责把所有的独立的文本、图像、声音、视频内容以及SMIL文件本身捆绑在一起,这个规范称为MIME Encapsulation Aggregate Documents,用于告诉接受的终端这个MMS的内容是相互相关(related to _disibledevent="font-size: 12pt">)并且相互参考的(referenced to _disibledevent="font-size: 12pt">)。
1. MIME封装示例
下面是根据RFC文档给出的MIME的封装示例:
Content-Type: multipart/related; boundary="boundary-example";
type="text/html"
--boundary-example
Content-Type: text/html; charset="US-ASCII"
... ... <IMG SRC="fiction1/fiction2"> ... ...
... ... <IMG SRC="cid:97116092811xyz@foo.bar.net"> ... ...
--boundary-example
Content-Type: image/gif
Content-ID: <97116092511xyz@foo.bar.net>
Content-Location: fiction1/fiction2
--boundary-example
Content-Type: image/gif
Content-ID: <97116092811xyz@foo.bar.net>
Content-Location: fiction1/fiction3
--boundary-example--
??Content-type
位于信息头部的content-type用于通知接收的终端消息的各个不同部分的内容是相互关联的、并且可能是相互索引的(refer to _disibledevent="font-size: 12pt">)。
??Boundary
Boundary用于分割各个不同的消息part。第一个部分是一个html类型的消息,这里只是取得了相关的部分。第二和第三部分省略了实际的images图像的实体。
??Location and ID
在HTML文本部分我们可以看到,我们可以利用两种方式来索引消息内容的不同部分。这两种不同的方式是 content-ID 和 content – Location。
如果一部分的消息体想通过content-ID指向(refer to)另外一部分的消息体,可以使用“CID”.
关于MIME的部分的信息可以参考附录中列出的RFC文档(RFC2387和RFC2357)。
2. 利用MIME封装MMS的示例
下面给出一个利用MIME封装MMS的示例:
Content-Type: multipart/related;
Type="application/smil"; Start="<AAAA>";boundary="----=_Part_24362_271418.1110357304160"
------=_Part_24362_271418.1110357304160
content-type: text/x-vCalendar;Charset=UTF-8;Name="slide1.vcs"
content-id: <slide1.vcs>
content-location: slide1.vcs
Content-Transfer-Encoding: base64
QkVHSU46VkNBTEVOREFSDQpWRVJTSU9OOjEuMA0KQkVHSU46VkVWRU5UDQpEVFNUQVJUOjIwMDUw
MzA4VDA5MDAwMFoNCkRURU5EOjIwMDUwMzA4VDEwMDAwMFoNClNVTU1BUlk7Q0hBUlNFVD1VVEYt
ODtFTkNPRElORz1RVU9URUQtUFJJTlRBQkxFOuaYr+WQpg0KQ0FURUdPUklFUztDSEFSU0VUPVVU
Ri04O0VOQ09ESU5HPVFVT1RFRC1QUklOVEFCTEU6QVBQT0lOVE1FTlRTDQpFTkQ6VkVWRU5UDQpF
TkQ6VkNBTEVOREFSDQo=
------=_Part_24362_271418.1110357304160
content-type: application/smil;Charset=UTF-8;Name="20050309163706.smil"
content-id: <AAAA>
Content-Transfer-Encoding: base64
PHNtaWw+PGhlYWQ+PGxheW91dD48cm9vdC1sYXlvdXQgd2lkdGg9IjE3NiIgaGVpZ2h0PSIxNzQi
Lz48cmVnaW9uIGlkPSJmdWxsIiB3aWR0aD0iMTc2IiBoZWlnaHQ9IjE3NCIgbGVmdD0iMCIgdG9w
PSIwIiAvPjwvbGF5b3V0PjwvaGVhZD48Ym9keT48cGFyIGR1cj0iNXMiPjx0ZXh0IHNyYz0ic2xp
ZGUxLnZjcyIgcmVnaW9uPSJmdWxsIiAvPjwvcGFyPjwvYm9keT48L3NtaWw+
------=_Part_24362_271418.1110357304160--
3. 一个完整的MIME封装MMS示例
下表给出了一个完整的MIME封装MMS的示例:
MIME Object
Date: Fri, 14 Dec 2001 15:13:21 -0500 (EST)
X-Mms-Expiry: Thu, 20 Dec 2001 21:52:25 -0500 (EST)
X-Mms-Delivery-Time: Wed, 19 Dec 2001 21:52:25 -0800 (PST)
X-Mms-Priority: Normal
X-Mms-Sender-visibility: Show
X-Mms-Message-Class: Personal
X-Mms-Delivery-report: yes
X-Mms-3GPP-MM3-Version: 4.3.0
From: mms-email-sample@sample-email.ericsson.com
To: +12345@mmc.sample-mms.ericsson.com
Subject: Sample SMIL
Mime-Version: 1.0
Content-Type: multipart/related; boundary="----
=_MIME_Boundary_MMS_Reference_Sample_001"
MIME Headers
"----=_MIME_Boundary_MMS_Reference_Sample_001"
MIME Start boundary
Content-ID: <index.smil>
Content-Type: application/smil; charset="US-ASCII"; name=index.smil
<smil>
<head>
<layout><root-layout/>
<region id="region1_2" top="0" left="0" height="100%" width="100%"/>
<region id="region1_1" top="0" left="0" height="100%" width="100%"/>
</layout>
</head>
<body>
<par dur="2000ms">
<text src="Cid:image" region="region1_2"/>
</par>
<par dur="2000ms">
<img src="Cid:txt" region="region1_1" fit="fill"/>
</par>
</body>
</smil>
SMIL document
"----=_MIME_Boundary_MMS_Reference_Sample_001"
MIME boundary
Content-Type: text/plain; name=mms.txt
Content-Transfer-Encoding: 7bit
Content-ID: <txt>
Content-Disposition: attachment; filename=mms.txt
This is a sample MMS message, for use as a reference.
Text Document
"----=_MIME_Boundary_MMS_Reference_Sample_001"
MIME boundary
Content-Type: image/gif; name=sample.gif
Content-Transfer-Encoding: base64
Content-ID: <image>
Content-Disposition: attachment; filename=sample.gif
R0lGODlhZQBQAPcAAOYeAClUpyAtb/XNjlo8RqoUFHSa2ZCKjHiCWrzf/2iQ1J
m66Yeq4cXm/6ys
<entire encoded image not shown for the sake of brevity>
kBiJkjiJlFiJlniJmJiJmriJnNiJnviJoBiKogh5AQEAOw==
Image
"----=_MIME_Boundary_MMS_Reference_Sample_001"
MIME boundary
MMS的MIME结构
综述来说,每个MMS信息按照MIME规范的基本结构如下图所示:
从图示看出,每个MMS都是由MMS Header和MMS Body组成,MMS Header根据WAP-209协议和RFC2387的规定,由一系列的域组成,下表列出了部分的域(给出的示范的内容表示),其中有些是强制必须实现的(用黑体表示)。
X-Mms-Message-Type
m-send-req
X-Mms-Transaction-ID
1234
X-Mms-MMS-Version
1.0
Date
星期五, 18 三月 2005 06:43:40 GMT
From
mms-editor@toolkit
To
33333333333333
Cc
33333333333333
Bcc
Subject
test
X-Mms-Message-Class
Personal
X-Mms-Expiry
星期六, 19 三月 2005 06:43:40 GMT
X-Mms-Delivery-Time
星期五, 18 三月 2005 06:43:40 GMT
X-Mms-Priority
low
X-Mms-Sender-Visibility
Show
X-Mms-Delivery-Report
No
X-Mms-Read-Reply
No
Content-Type
application/vnd.wap.multipart.related; start="<presentation-part>" type="application/smil"
- 手机开发实战98——MMS介绍5
- 手机开发实战94——MMS介绍1
- 手机开发实战95——MMS介绍2
- 手机开发实战96——MMS介绍3
- 手机开发实战97——MMS介绍4
- 手机开发实战99——MMS介绍6
- 手机开发实战100——MMS介绍7
- 手机开发实战101——MMS介绍8
- 手机开发实战111——EMAIL介绍5
- 手机开发实战121——蓝牙介绍5
- 手机开发实战136——SyncML介绍5
- 手机开发实战184——Scatter file介绍5
- 手机开发实战45——手机字库介绍
- 手机开发实战46——手机显示介绍
- 手机开发实战47——手机编辑器介绍
- 手机开发实战48——手机输入法介绍1
- 手机开发实战49——手机输入法介绍2
- 手机开发实战3——手机类型介绍
- C++ error:LNK2005 已经在*.obj中定义
- 《java入门第一季》之TreeSet存储自定义对象并保证排序和唯一
- 手机开发实战97——MMS介绍4
- python函数
- HttpClient4.4 登录知乎(详细过程)
- 手机开发实战98——MMS介绍5
- 第7周项目②-----定义下面两个类的成员函数
- 【FFMpeg视频开发与应用基础】四、调用FFmpeg SDK解析封装格式的视频为音频流和视频流
- C# SerialPort 读写三菱FX系列PLC
- 设计模式系列(二)原型模式
- "linux"发音,你发对了吗
- Leetcode Search in Rotated Sorted Array
- 手机开发实战99——MMS介绍6
- 手机开发实战100——MMS介绍7