一、概述
MMS彩信大家都看到過,或者都編輯過。在這里,利用一系列的文章來說明彩信的編輯、發(fā)送和接收的過程。首先這里,簡(jiǎn)單描述一下彩信的編輯過程。這是彩信的第一步。
二、MMS的表述(presentation)語言——SMIL概述
MMS由一系列類似于“power point style”類型的slide組成,由這些slide來組織各種格式的文本、音頻、視頻信息。這些我們?cè)诎l(fā)送或者接受彩信的時(shí)候都有切身的體會(huì),就不說了。
為了把這些多媒體信息組織到一起,通過網(wǎng)絡(luò)發(fā)送,并且這些信息在接收者那里能夠保證按照發(fā)送者的樣式進(jìn)行播放。這里就需要采用一種技術(shù),用于描述彩信的組織和播放方法。這種方法就是利用SMIL語言。看過這個(gè)語言的規(guī)范之后,我想大部分熟悉HTML和XML的人都會(huì)會(huì)心的笑了,的確,這就是SMIL語言。
MMS使用SMIL(Synchronized Multimedia Integration Language)的子集作為表述語言,SMIL是由W3C(world wide web consortium)制定的基于XML的表述語言標(biāo)準(zhǔn)(可以參見附錄中之處的RFC文檔)。相當(dāng)于HTML之于web。SMIL語言可以控制多媒體對(duì)象的layout和timing(播放時(shí)間)。
在初期,MMS只使用了SMIL的簡(jiǎn)單基礎(chǔ)子集,稱作“MMS SMIL”。每個(gè)MMS信息都是由SMIL表述語言文件組成。在這個(gè)文件中所有的slide有相同的layout。每個(gè)slide至少包含兩個(gè)region,一個(gè)包含文本,一個(gè)包含圖像。事實(shí)上,每個(gè)slide都是一個(gè)frame,每個(gè)frame包含layout和指向內(nèi)容(text、images、audio、video)的索引。每個(gè)slide的播放周期以秒計(jì)算,在每個(gè)slide的內(nèi)部,文本和圖像的播放時(shí)間可以單獨(dú)設(shè)定。
由于每個(gè)移動(dòng)設(shè)備的尺寸不盡相同,所以SMIL被設(shè)計(jì)成可以根據(jù)終端的不同表現(xiàn)形式作以重新安排。簡(jiǎn)單說來,SMIL具有下列特點(diǎn):
§來自于W3C的規(guī)范定義
§SMIL只是簡(jiǎn)單地限定了各種message元素在何時(shí)、在什么地方顯式
§SMIL文件以<smil>標(biāo)記開始,接下來是head和body標(biāo)記,最后以</smil>結(jié)束
§Head標(biāo)記元素限定了
§Body標(biāo)記元素限定了被插入內(nèi)容的參考索引(references),并且限定了何時(shí)、何地播放以及每個(gè)元素播放的時(shí)間。
下面一段文字來自于IBM,說明了在MMS之外SMIL的廣泛用途。
SMIL 2.0是同步多媒體集成語言(Synchronized Multimedia Integration Language),它已開始成為將多媒體集成到Web 內(nèi)容的重要新方法。SMIL 提供基于 XML 的方法來控制多媒體元素的定時(shí)和表示,它已開始獲得眾多大的軟件供應(yīng)商和工具制作商的支持,這使得開發(fā)人員使用它變得越來越容易。
SMIL支持已開始成為 Adobe、Microsoft以及(也許是最重要的)媒體傳遞領(lǐng)先者 Real Networks 支持的技術(shù)之一。眾多較小的供應(yīng)商已開始提供SMIL 創(chuàng)作工具和播放器。
在不久的將來,隨著對(duì)當(dāng)前2.0 規(guī)范支持的增長(zhǎng),對(duì)于任何在工作中需要某種形式的多媒體資產(chǎn)控制的開發(fā)人員,使用 SMIL將成為他們的標(biāo)準(zhǔn)策略。如果把正在增長(zhǎng)的工具創(chuàng)建者的名單作為某種指示,那么用SMIL 構(gòu)建表示也會(huì)變得更簡(jiǎn)單。 |
正如前面提到的那樣,最廣泛的 SMIL 2.0 實(shí)現(xiàn)可能來自 Real Networks。RealOne Player支持 SMIL 2.0 語言概要文件(SMIL 2.0 Language Profile),它結(jié)合了SMIL 支持的大多數(shù)(盡管不是全部)模塊。除了支持大多數(shù)標(biāo)準(zhǔn) SMIL 模塊以外,RealNetworks 還開發(fā)了自己的幾個(gè) SMIL 擴(kuò)展。要使用這些擴(kuò)展,開發(fā)人員必須遵守標(biāo)準(zhǔn) XML 聲明.
通過使用少量的一系列基于 SMIL 的 XML 元素和屬性,Microsoft的 HTML+TIME 給 HTML 頁面添加了定時(shí)和多媒體支持。為了給 HTML 文檔添加定時(shí),開發(fā)人員要向現(xiàn)有的 HTML 元素添加新屬性。創(chuàng)建新元素是為了使向HTML 頁面添加媒體變得簡(jiǎn)單。
為了使用任何HTML+TIME 元素,開發(fā)人員必須在 HTML 標(biāo)記中聲明 XML 名稱空間 t:
不同于上述這兩個(gè)供應(yīng)商,大多數(shù)創(chuàng)作工具和播放器開發(fā)人員主要分為兩種,
§ 一種是只關(guān)注 SMIL 的完整臺(tái)式機(jī)部署
§ 另一種至少要關(guān)心一下用于占用資源較小的移動(dòng)設(shè)備的基本SMIL 2.0 子集。
此外,隨著無線網(wǎng)絡(luò)的發(fā)展,關(guān)注MMS 部署的 SMIL 播放器應(yīng)該對(duì) SMIL 創(chuàng)作有新的考慮。
|
三、 SMIL簡(jiǎn)單示例
下面給出了一個(gè)MMS消息的SMIL示例:
<smil>
<head>
<meta name="title" content="vacation photos" />
<meta name="author" content="Danny Wyatt" />
<layout>
<root-layout width="160" height="120"/>
<region id="Image" width="100%"
height="80" left="0" top="0" />
<region id="Text" width="100%"
height="40" left="0" top="80" />
</layout>
</head>
<body>
<par dur="8s">
<img src="FirstImage.jpg" region="Image" />
<text src="FirstText.txt" region="Text" />
<audio src="FirstSound.amr"/>
</par>
<par dur="7s">
<img src="SecondImage.jpg" region="Image" />
<text src="SecondText.txt" region="Text" />
<audio src="SecondSound.amr" />
</par>
</body>
</smil> |
具體的SMIL描述語言的解釋可以參見附錄的參考文檔,那里給出了每種標(biāo)記的解釋說明。
至于在手機(jī)軟件上實(shí)現(xiàn),也不是很困難的事情。想想看。
利用結(jié)構(gòu)數(shù)組,把所有的MMS中的slide存儲(chǔ)到其中,最后,結(jié)合SMIL語言的規(guī)范,把彩信
打包成上述文件的格式,注意,這里,并不需要把具體的多媒體文件內(nèi)容添加到smil文件中,只需要加在smil文件中,作為附件就可以了。具體的數(shù)據(jù)的加載,請(qǐng)看下一篇——MMS的打包部分吧!
參考資料:
Nokia:
[N1] How_To_Create_MMS_Services.pdf http://www.forum./
[N2] MMSCenterAppDevGuide.pdf http://www.forum./
OMA: [O1] WAP-205-MMSArchOverview-20010425-a.pdf
一、MMS的封裝(Encapsulation)——MIME
對(duì)于使用SMIL語言描述的MMS,在通過無線網(wǎng)絡(luò)發(fā)送的時(shí)候,我們必須通過某種方式把SMIL和附屬的內(nèi)容包裝在一起,一邊能夠以一個(gè)unit(整體)的形式發(fā)送出去,以便SMIL文件各個(gè)部分內(nèi)容的reference變得有效。
這個(gè)解決的辦法就是MIME(Multipart Internet Mail Extensions)規(guī)范,這個(gè)規(guī)范的最初作用是在email的plain text的主體中加入不同的內(nèi)容。比如說,發(fā)送帶有附件的email,這個(gè)時(shí)候你就使用了MIME的規(guī)范。MIME負(fù)責(zé)把所有的獨(dú)立的文本、圖像、聲音、視頻內(nèi)容以及SMIL文件本身捆綁在一起,這個(gè)規(guī)范稱為MIME Encapsulation Aggregate Documents,用于告訴接受的終端這個(gè)MMS的內(nèi)容是相互相關(guān)(related to one another)并且相互參考的(referenced to one another)。
1. MIME封裝示例
下面是根據(jù)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用于通知接收的終端消息的各個(gè)不同部分的內(nèi)容是相互關(guān)聯(lián)的、并且可能是相互索引的(refer to one another)。
§Boundary
Boundary用于分割各個(gè)不同的消息part。第一個(gè)部分是一個(gè)html類型的消息,這里只是取得了相關(guān)的部分。第二和第三部分省略了實(shí)際的images圖像的實(shí)體。
§Location and ID
在HTML文本部分我們可以看到,我們可以利用兩種方式來索引消息內(nèi)容的不同部分。這兩種不同的方式是content-ID 和 content – Location。
如果一部分的消息體想通過content-ID指向(refer to)另外一部分的消息體,可以使用“CID”.
關(guān)于MIME的部分的信息可以參考附錄中列出的RFC文檔(RFC2387和RFC2357)。
2. 利用MIME封裝MMS的示例
下面給出一個(gè)利用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-- |
下圖給出的圖示說明各個(gè)部分之間的關(guān)系:
3. 一個(gè)完整的MIME封裝MMS示例
下表給出了一個(gè)完整的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結(jié)構(gòu)
綜述來說,每個(gè)MMS信息按照MIME規(guī)范的基本結(jié)構(gòu)如下圖所示:
從圖示看出,每個(gè)MMS都是由MMS Header和MMS Body組成,MMS Header根據(jù)WAP-209協(xié)議和RFC2387的規(guī)定,由一系列的域組成,下表列出了部分的域(給出的示范的內(nèi)容表示),其中有些是強(qiáng)制必須實(shí)現(xiàn)的(用黑體表示)。
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" |
1. MMS承載的內(nèi)容elements
MMS只是用于發(fā)送消息的載體,根據(jù)規(guī)范,我們可以發(fā)送各種不同類型的內(nèi)容元素。這些內(nèi)容元素組成MMS中各個(gè)不同的部分。根據(jù)元素類型的不容,每個(gè)part Header部分的content-type也不盡相同。下面給以示例:
文本:文本包含很多類型,普通文本的類型可以表示為——text/plain,而vcard類型的文本表示為text/x-vCard。 靜態(tài)圖像:靜態(tài)圖像存在各種不同的類型,根據(jù)不同的編碼方式由不同的后綴名表示。如image/gif和image/jpeg。
音效是什么呢?沒有介紹,應(yīng)該是audio/mid 吧..
|