SMIL彩信无法显示的缘故

    移动MMS有2种封装格式:application/vnd.wap.multipart.mixed和application/vnd.wap.multipart.related,前者将MMS中的各类多媒体信息混合在一起,而后者则根据SMIL格式定义以幻灯片的形式进行多媒体内容播放。绝大多数彩信应用会采用multipart.related封装彩信。如果你使用移动提供的MM7API,那么,在发送彩信中含有SMIL文件时候,你可能遭遇虽然发送成功,但是在很多手机上都显示错误的现象。在这种情况下,多半是由于SMIL文件格式不对以及ContentID的设置问题。

    对于ContentID,当MMS封装格式为multipart.mixed时,只需要该参数即可,如果MMS封装格式为multipart.related,则需要设置ContentID和ContentLocation。两者内容保持一致。设置ContentID和ContentLocation只需要调用mm7api的setContentID和setcontentLocation方法即可

    实际应用中,发现有一些问题:网上绝大多数能够找到的代码都会举例如下:

mmc.setContentId("100.jpg");

mmc.setContentLocation("100.jpg");

    根据试验,这样写代码是会导致在某些手机无法显示接收到的MMS的情形。原因在这里:

    Within SMIL part the reference to the media object parts shall use either Content-ID or Content-Location mechanism [RFC2557] and the corresponding WSP part headers in media object parts contain the corresponding definitions.
    In case of Content-ID, the URI:s shall be without < and > (compare to [RFC2557], <IMG
SRC="cid:950120.aaCC@XIson.com">). To resolve a CID reference, "cid:" part shall be removed from the string, and the remaining string enclosed within < > marks. After this it can be compared to the value obtained from Content-ID header.
As the CID reference is only used within a single message, there shall be no need to create globally unique values for the content-ids, and there shall be no requirement for a legal address definition for the CID.
    The Content-Location reference in the SMIL part shall be represented as relative URI, e.g., <img src=”myimage.jpg”>). The corresponding definition in media object parts shall be:
Content-Location: myimage.jpg
   

    从上面的描述得知,SMIL文件中对媒体元素的引用可以是Content-ID或者Content-Location,在使用Content-ID的情况下,SMIL文件中的引用和Content-ID的Header信息的描述方式应该如下所示:
SMIL文件的描述:<img src=” cid:950120.aaCC@XIson.com”>
Content-ID头信息:Content-ID: <950120.aaCC@XIson.com>
而如果使用Content-Location的话,则描述方式如下:
SMIL文件的描述:<img src=”myimage.jpg”>
Content-Location头信息:Content-Location: myimage.jpg

    根据对mmc.setContentId("100.jpg")进行抓包的结果,可以看到截取部分如下:

Content-Type:application/smil
Content-Transfer-Encoding:8bit
Content-ID:100.jpg

有什么问题吗?——答案在这里:缺少尖括号<>,在相当多的手机上这一点是会被忽视的,因此彩信得以正常显示,但是对于部分手机如NEC的某些型号,它的MMS协议栈是精确匹配的。因此会导致无法根据ContentID来定位多媒体资源的情况,从而无法播放彩信。

    所以,兼容性良好的做法是:

mmc.setContentId("<100.jpg>");

mmc.setContentLocation("100.jpg");

    需要说明的是,当没有设置ContentLocation的时候,很多手机也可以正常显示彩信,而某些手机如索爱系列可能就无法正常播放。

时间: 2025-01-30 01:51:52

SMIL彩信无法显示的缘故的相关文章

三星手机(安卓4.0系统)无法接收彩信怎么解决

一电话卡未开通GPRS上网业务 : 使用手机彩信功能,您的电话卡需开通GPRS上网业务. 使用手机彩信功能,您的电话卡需开通GPRS上网业务.您可以联系电话卡当地的网络供应商,开通GPRS上网服务业务.  提示:  中国移动用户请联系当地移动公司进行开通GPRS上网服务业务,也可以拨打10086进行联系:  中国联通用户请联系当地联通公司进行开通GPRS上网服务业务,也可以拨打10010进行联系:  中国电信用户请联系当地电信公司进行开通GPRS上网服务业务,也可以拨打10000进行联系. 二电

12306网上订票系统瘫痪背后的那些事儿

"因机房空调系统故障,正在积极组织抢修.目前暂停互联网售票.退票.改签业务."春运还没开始,小小的元旦又让日点击量超14亿,堪称"网站传奇"的12306铁路客户服务中心网上订票系统down掉了,意外的是,就连车站的自动售票柜机也跟风"罢工".12306反复瘫痪,究竟为什么? 难道,真的像官方所说,是由于"机房空调系统故障"吗?这样的解释,你信吗? 我想,如果空调能说话了,它的第一句肯定会是:原来,不动,也中枪. 远的不说,今年

谷歌修正Android远程执行缺陷 用户显示彩信即遭攻击

据科技网站Computerworld报道,谷歌发布了16款Android补丁软件,其中包括一款修正媒体服务器中远程执行缺陷的补丁软件.更新包将通过无线方式发布给谷歌Nexus设备.谷歌向合作伙伴通报发布这些补丁软件的时间不晚于2月1日,使它们有逾1个月时间进行准备工作. 谷歌在公告中称,用户只要在设备上显示或播放恶意内容--例如彩信.电子邮件,或在浏览器中播放某种类型媒体内容,黑客即可利用该缺陷发动攻击. 自去年以来,Android媒体播放软件被发现存在一系列缺陷,其中最"臭名昭著"的

三星手机通过彩信发送/接收的视频无法显示,为什么?

当手机不能通过彩信发送/接收视频时,可能会出现以下几种现象: 1.提示文件过大,无法添加. 2.可以听到声音,但是看不到视频. 3.可以看到图片,但是听不到声音或看不到视频. 4.提示接收短视频. 5.无法正常接收彩信. 出现以上现象是与多媒体信息大小限制有关,例如,您需要通过手机发送一个视频文件给对方,如果视频文件较大,那么您所发送的彩信将不能正常显示.为了避免此现象的出现,对于大多数三星手机而言,您可以在录像时,将录制模式设置为[彩信限制],具体操作方法如下: 1.在待机页面下,点击[应用程

还原Android彩信数据库

几周前在做Android彩信数据库还原时遇到了一个很棘手的问题,就是Android的彩信数据库不向短信数据库那样可以方便的用一条insert语句创建一条记录,而我没有得到许可去修改Android平台的彩信应用的原代码,所以我不得不另寻它径.在下面我会尽我可能用尽量简洁的语言描述整个解决的过程. 1 彩信数据库 问题是这样的,我备份了Android的彩信数据库,即mmssms.db文件,并且希望能成功把彩信部分的数据信息还原到还原数据库中. 在mmssms.db中与彩信相关的表有 Pdu表: 记录

排序-asp.net repeater 绑定数据后 怎么改变显示的顺序

问题描述 asp.net repeater 绑定数据后 怎么改变显示的顺序 <ul style=" margin-left:20px"> <asp:Repeater ID="rep_data" runat="server"> <ItemTemplate> <li ><p ><span><%# Eval("data").ToString()%>:

andriod彩信接受

public class SmsPage extends ListActivity{ private final String TAG="SmsPage"; private final Uri CONTENT_URI = Uri.parse("content://mms/inbox"); //查询彩信收件箱 private final Uri CONTENT_URI_PART = Uri.parse("content://mms/part");

SMIL 2.0 基础教程

一. 简介 随着流技术的成熟和广泛的应用,其优点我们有了深深的体会.但是,其不足之处也逐渐体现出来.问题的出现,就要求我们想办法来解决.SMIL正是针对目前流技术中的问题而提出来的.下面让我们来仔细看看SMIL. 1.SMIL简历 SMIL是同步多媒体集成语言(Synchronized Multimedia Integration Language)的缩写,念做smile(呵呵,这名字不错吧).它是由3W(World Wide Web Consortium)组织规定的多媒体操纵语言.最新的SMI

利用Helix Server的SMIL支持在ASP中生成媒体流的播放列表

server|媒体 开发视频点播网站时或许会需要连续播放一系列流媒体文件,我的经验是可以使用SMIL语言动态生成需要的播放列表文件.以下将对这种方法作出说明.我感觉这并不是一个很好的方法,但可作为一种思路供大家参考. 首先我们应该了解一下SMIL语言的结构.SMIL是专用于流媒体服务器的一种语言,它是符合XML语言规范的.以下是一个典型的用于Helix Server的SMIL文件: 113.smi--------------<smil><head><meta name=&qu