IPTV平台间内容传输故障分析与处理
2014-09-18马正先
马正先
(广东南方广播影视传媒集团 技术部,广东 广州 510012)
我国IPTV集成播控平台采用中央和省两级架构,中央级总平台负责全国性IPTV内容平台的接入,省级分平台负责本地IPTV内容平台的接入,总平台将全国性IPTV内容传输到分平台,由分平台发布到电信IPTV传输网络。节目内容是IPTV各种业务形态的基础,每天都有大量的节目内容通过接口按照统一的技术规范由总平台传输到分平台。在分平台建设和运行过程中,往往由于各种原因导致内容传输失败,影响总平台内容正常发布。因此,作为IPTV集成播控平台技术系统开发和维护人员,有必要了解总分平台间内容传输机理,通过对故障现象的分析研究,及时准确地判断处理内容传输问题。
1 内容下发机制
IPTV总平台与分平台之间、分平台与电信IPTV平台之间内容传输均遵循统一的内容发布接口规范,接口采用SOAP协议+XML指令文件的方式[1]。简单对象访问协议(Simple Object Access Protocol,SOAP)是以广泛使用的传输层和网络层标准(通常选用HTTP)作为底层通信协议,以XML作为数据传送格式,在分布式环境下实现信息交换和远程过程调用的协议。SOAP提供了一种标准的方法,使得运行在不同的操作系统并使用不同技术和编程语言的应用程序,通过通用的底层通信协议互相进行通信[2]。IPTV平台间内容传输接口规范将交互信令和XML指令文件(工单)分两次进行传递,SOAP只作为信令的交互,仅用来表达命令的请求和响应,告诉对方有一个XML指令文件需要进行传递,具体的指令和参数是由独立的XML文件来描述,XML文件通过FTP进行异步传递。这样做主要有两方面的考虑:一是提高可靠性,SOAP交互只是包含了通信双方的收发地址、XML文件的URL地址等信息,属于短消息,一次交互就能完成,可最大限度减少信令传递出错率,如果将SOAP交互信息和XML文件一起传送,由于XML文件往往比较大,很难通过一次交互来完成,传递出错的几率将随之增大。二是提高效率,对于简短的SOAP消息,发送方能很快收到接收方接收信令状况的反馈信息,发送方一旦确认接收方收到信令,即可开始下一个操作,无需等待接收方将XML文件里的指令全部执行完,这样可大大提高系统的工作效率。内容下发接口流程如图1所示。
1)总平台向分平台发送执行指令请求消息,消息中包含XML指令文件的URL,分平台收到SOAP消息后返回执行指令响应;
图1 内容下发接口流程图
2)分平台根据SOAP消息中指令文件的URL,通过FTP协议下载XML指令文件,解析后执行指令,执行指令过程中可能还涉及到从总平台下载图片和媒体文件;
3)分平台执行指令后,向总平台发送结果通知请求,总平台收到结果通知请求后返回结果通知响应。
2 XML指令文件简介
可扩展标记语言(Extensible Markup Language,XML)是一种元标记语言,用户可以根据自己的需要定义任何有意义的标记,这些标记将文档分成许多部件,用以描述结构化的数据,XML的主要设计目标就是用来存储和传输这些结构化的数据。由于XML采用简单易懂的纯文本的数据描述,使得它很容易实现通信并支持广泛、多样化的应用程序,当跨越不同的操作系统和
应用程序时不存在兼容性问题。另一方面,业务的不断发展带来新的数据传递需求,由于XML可以自定义标记和文档结构,用户可以根据需要灵活扩展接口定义,因此XML具有很好的扩展性。
图2 XML指令文件示例(截图)
用XML来表示大量的结构化或半结构化信息是行之有效的方法[3],XML作为Web的通用语言,不仅支持一般的文本交流,也可以携带各种复杂的数据和文件[4]。IPTV平台间内容传输所涉及的参数和指令都是由XML文件来描述的。ADI/Objects/Mappings是XML指令文件的通用基础框架,基于该通用框架定义不同的Ob⁃ject.ElementType和不同的Property.Name,满足对不同对象的定义需求。图2是一个XML指令文件示例,其中ADI是根元素,Objects及其子元素Object表示操作对象,Mappings及其子元素Mapping表示映射对象。子元素Object包含ElementType,ID,Action,Code等4个属性,ElementType属性定义了对象的类型,可以是Pro⁃gram(点播节目)、Movie(媒体内容)、Picture(图片)、Se⁃ries(连续剧)、Category(栏目)等。ElementType与ID两者结合在接口中唯一定位一个对象实例,它们是一个接口中针对对象进行任何操作的唯一索引。Action属性定义了对象的3种操作类型:REGIST(新增)、UP⁃DATE(修改)、DELETE(删除)。Code属性在跨系统时作为全局唯一标识。子元素Mapping包含Action、Ele⁃mentType、ElementID、ElementCode、ParentType、Paren⁃tID、ParentCode等属性,其中Action属性定义关系映射的3种操作类型,后面6个属性分别表示关系映射时元素和父元素的对象类型、ID和Code。Object和Mapping可包含子元素Property,通过Property.Name定义字段来描述各种对象及映射关系的详细信息。
以图2为例,①表示新增一个ID为101的栏目,以及栏目的名称等。②表示新增一部ID为201的连续剧,以及连续剧的名称、简介、集数等信息,状态标志Status为1,表示生效,该连续剧为上架。③表示新增一张ID为202的图片,以及图片文件的URL,分平台将根据该URL获取图片文件。④表示新增一个ID为301的节目(剧集),以及节目的名称、简介等信息。⑤表示新增一个ID为401的媒体内容,以及该媒体内容文件的名称、URL等信息,类型标志Type为1,表示该媒体内容为正片(2为预览片)。⑥,⑦,⑧,⑨为映射关系,分别表示将上述连续剧与图片、媒体内容与节目、节目与连续剧、连续剧与栏目进行关系映射(绑定),⑥中Type为1,表示映射时的图片类型为海报,⑧中序号Se⁃quence为16表示节目在连续剧中排序16。
3 故障分析与处理
了解IPTV平台间内容传输机制和XML指令文件细节可帮助平台系统开发和维护人员准确定位并解决故障。这里列举在分平台系统开发过程中遇到的几个问题,对照前面所述的内容下发机理,详细介绍故障的定位分析以及解决办法。
3.1 海报图片传输故障分析与处理
总平台下发的海报图片有的在机顶盒上显示不完全。按照内容下发机理,ElementType=”Picture”时,分平台会根据FileURL字段定义的地址去总平台下载图片,存放在分平台内容管理系统(CMS)中,并将海报图片与节目(或连续剧)进行关系映射。查看XML指令文件,图片文件的URL和映射关系全部正确,如图2中③,⑥所示。根据以往经验,图片显示不全很可能是分平台没有完全下载图片文件,导致这一问题的原因往往是下载图片文件时,网络出现故障,或者是总平台还没有全部上传完图片文件时,分平台已经开始下载图片文件。
为此,本文调整了图片文件的获取流程,在原来的图片下载流程中增加文件大小比对环节,如图3所示。在图片文件下载到本地后,将其与总平台FTP服务器上源图片文件进行大小的比对,若一致,说明已正确地下载了图片文件,否则重新下载该图片文件。
3.2 连续剧传输失败故障分析与处理
连续剧内容传输涉及连续剧下的剧集,通常总平台先新增一个连续剧(Series),然后下发剧集(Pro⁃gram),并将剧集与连续剧进行映射,最后再将连续剧映射到相应的栏目(Category)下,完成连续剧及其剧集的下发过程。实际应用中出现部分剧集已经下发到分平台,但这些剧集在分平台CMS处于下架状态不能发布到电信平台问题,进一步检查发现这些未能发布的剧集都是在总平台下发连续剧与栏目的映射关系之后下发的剧集。
图3 海报图片文件下发流程图
调取总平台XML指令文件显示,这些新增剧集状态标志Status字段为1,如图2中④所示,表示该剧集应为上架,说明这些剧集的发布状态是正常的,因此很可能是分平台处理问题。仔细分析分平台的处理流程,发现分平台对于所有下发的新增内容,都将其挂载到默认栏目下,并强制将其改为下架状态,等到总平台下发与栏目的映射关系指令后,才将新增内容变成上架状态,随后系统将内容及其与默认栏目的映射关系自动发布到电信平台。这样的处理流程就有可能导致前面出现的问题,即总平台在下发与栏目的映射关系之前下发的剧集是能正常发布,之后的剧集则不能正常发布。这是因为分平台收到映射关系指令后,把连续剧和先期下发的剧集变成上架状态发布到电信,后面下发的剧集由于没有再收到连续剧与栏目的映射指令,一直处于下架状态,使得后期下发的剧集未能发布到电信平台。
为此,重新制定了处理流程,对于总平台下发的内容,分平台CMS完全按照状态标志Status字段设置成上架或下架,如果内容上架,分平台只向电信平台发布内容,不发映射关系,当分平台收到总平台下发剧集(或节目)与栏目的映射关系后才自动向电信平台发布映射关系,电信平台只有接收到映射关系后该剧集(或节目)才正式播出,如图4所示。
图4 优化后的分平台内容管理系统(截图)
3.3 电视时刻表信息传输失败故障分析与处理
电视时刻表是指电视频道节目与播放时间的对应关系。分平台试运行之初,央视一套的电视时刻表信息是由分平台手工导入,并发布到电信平台,然后央视一套的电视时刻表信息改由总平台通过接口进行发布,此时出现了总平台下发央视一套的电视时刻表信息失败问题。调取总平台下发的XML指令文件,如图5所示,其中ElementType=”Schedule”表示电视时刻表信息,根据接口规范,分平台应在数据库中查找Chan⁃nelCode(频道代码),并将电视时刻表信息录入到对应的频道中。经过分析,之所以出现上述问题是因为央视一套电视频道是在分平台手工创建的,其在分平台数据库中的ChannelCode与总平台下发的XML指令文件中的ChannelCode不一致,导致根据XML指令文件中的ChannelCode在分平台数据库中找不到该频道,从而使电视时刻表信息录入到该频道出现失败。解决方法是分平台在解析XML指令文件后,在数据库中查找XML指令文件里的ChannelCode,如果数据库中有对应的ChannelCode,则将电视时刻表信息录入到该频道中,如果数据库中没有对应的ChannelCode,向总平台返回处理失败,由总平台重新下发电视频道信息指令文件(ElementType=“Channel”)。
4 小结
以上是本文在分平台建设初期发现的平台间内容传输故障案例及其解决方法,鉴于对故障现象的细致分析和问题的准确定位,内容传输故障都得到及时有效的解决。分平台正式运行后,随着网络环境、传输方式等各种影响内容传输因素的变化,不可避免地仍会发生内容传输故障。作为平台系统维护人员也需要掌握平台间内容传输机理,通过对XML指令文件和内容传输处理流程的分析,准确定位及时解决内容传输故障。
图5 电视时刻表信息指令文件(截图)
:
[1]刁仁宏,方睿.利用Web Service实现IPTV平台数据的交换[J].微计算机信息,2009(18):278-279.
[2]范宝锋,方勇,汤云革,等.基于SOAP的Web服务的互操作性问题分析[J].成都电信工程学院学报,2005,20(2):142-146.
[3]张一鸣,安春花,王伟民.XML搜索引擎技术在台网系统中的应用及分析[J].电视技术,2009,33(2):58-59.
[4]袁永跃,顾亚平,张俊.基于XMPP的数字内容推送系统通信方案的研究[J].电视技术,2013,37(6):82-84.