美文网首页
MOS协议浅析及应用

MOS协议浅析及应用

作者: dwademan | 来源:发表于2019-07-05 22:23 被阅读0次

一、MOS概念

1.1、什么是MOS协议

MOS协议全称为Media Object Server Protocol,中文翻译是新闻流程中媒体对象的元数据交换协议,广泛应用在广播电视领域,目前更新到的最新版本是4.0版本,广电领域用的比较广泛的是2.8.5的版本,因此这篇文章主要从2.8.5切入,深入浅出的介绍下MOS协议,以及通过MOS在广电应用中的一些案例。

1.2、哪些设备支持MOS协议

MOS协议简而言之就是新闻文稿的数据之间的交换,新闻文稿端(NCS)发送串联单、稿件、条目内容,MOS设备端(MOS)接收并反馈ID、标签、说明等信息。我们所说的支持MOS协议的设备,指的就是通过MOS协议跟新闻文稿端能够实时交互的设备,如视音频服务器、媒体资产管理系统、演播室集中控制系统和提词器等。

MOS协议具有实时性、开放性、稳定性、可扩展等特点,成为不同广电厂商设备间元数据交互的最佳选择。

1.3、MOS的基本通信方式

MOS协议采用TCP/IP传输协议,发送数据类型以Unicode BE编码,数据结构为标准的XML结构,易于读懂解析。

MOS命令举例

在发送MOS命令是,不管是新闻文稿端(建辰NCS)还是MOS端,都可以发起请求,并建立心跳连接,为了区别不同端数据,MOS协议在TCP/IP建立连接的时候,会建立两个端口。

a.Lower Port端口,端口号10540,被称为Media Object Metadata Port端口,NCS作为TCP服务端,MOS作为TCP客户端,由MOS建立连接并发送给NCS端,NCS端通过此端口进行回复。

b.Upper Port端口,端口号10541,被称为Running Order Port,MOS作为TCP服务端,NCS作为TCP客户端,由NCS建立连接并发送给MOS端,MOS端通过此端口进行回复。

Lower Port和Upper Port相互独立,由哪个端口发就由哪个端口回复,作为服务端的端口可同时连接多个客户端端口。

作为服务端均可一对多

1.4、计算机编码方式的简单介绍

MOS协议采用Unicode BE编码,我们平时简称的Unicode编码均采用Unicode LE编码,同时,计算机领域还有很多编码方式,如ASCII、UTF-8、UTF-16、ANSI、GB2312等,搞清楚不同的编码是建立MOS通信不可避免要面对的一条路,在此我做简单介绍。

a.ASCII编码

8位一个字节的宽度,做多包含2^8=128种数据,是最早的计算机编码方式,主要存放英文字母、数字、标点符号,具体可参照ASCII码表,随着计算机通信领域的发展,越来越多的字符和语言出现,使得ASCII码容量有点捉襟见肘了。

b.Unicode编码

为了解决ASCII码容量有限的的问题,全世界现在通用采用Unicode编码,Unicode编码最大包含32位宽度,基本涵盖了全世界所有的文字存储方式,但是Unicode编码也存在一定限制,它的位宽不可变,这就导致了内存的极大浪费。

c.UTF-8编码、UTF-16编码

为了解决Unicode编码浪费存储不利于传输的问题,便产生了UTF-8编码。UTF-8编码是Unicode编码的衍生,它也采用Unicode编码方式,只不过在存储的过程中,长度会根据字符自动变化。

UTF-8对比Unicode

如上图所示,左边是Unicode编码,右边是对应的UTF-8编码,UTF-8根据Unicode码的范围,自动划分存储长度,其每个字节的头几位保持不变,后几位依次填入Unicode编码。

例如,中文的“严”字,Unicode编码是4e25,换算成二进制是0100 1110 0010 0101,对应UTF-8是24位宽,二进制是1110 0100 1011 1000 1010 0101,换算成十六进制是e4b8a5。

我们可以在txt文本中打个“严”,然后通过UtraEdit软件换算成字节符进行验证。

严UTF-8编码
严Unicode LE编码
严Unicode BE编码

如上面三张图,“严”字对应不同编码方式的显示,其中前三位“EFBBBF”表示UTF-8编码,前两位“FFFE”表示Unicode LE编码,“EFFF”表示Unicode BE编码。

UTF-16本质上也是Unicode编码,只不过它把Unicode编码放到了16位宽的数据里了。

1.5、MOS数据结构介绍

MOS的数据结构位XML树状结构,以一张MOS播出单为例,最顶层的元素是Running Order,即播出单,简称RO,RO下面的元素包含ID、Slug、Story等,一张MOS播出单的RO ID不能重复;RO下面的主要由Story元素构成,即故事板,RO下面可以包含多个Story,但是Story ID在RO里面不能重复;Story下面主要由Item元素构成,即条目,一个Story下面能包含多个Item,但是同一Story下的Item ID不能重复;Item下面的主要元素是object,即条目对象,原理同上,同一Item下的object ID不能重复。

1.6、Lower Port中对应的MOS语句

之前提到过LowerPort是NCS作为服务端,MOS作为客户端,其中主要有以下几类。

a.mosObj,由MOS发送给NCS,告知Object的信息,包括ID、Slug等,可以包含mosExternalMetadata,NCS回复mosAck.

b.mosReqObj,NCS发送给MOS,要求获得指定ID的Object信息,MOS回复mosObj

c.mosReqAll,mosListAll,原理同上,对应发送和回复所有的object信息.

1.7、Upper Port中对应的MOS语句

Upper Port是MOS作为服务端,NCS作为客户端,主要包含以下几类信息。

a.播出单操作-roCreate,roReplace,roDelete,roReq,roList,分别对应新建、替换、删除、获取、例举MOS播出单的操作,roReq和roList成对使用,其他均由NCS发起,MOS回复mosAck。

roCreate建立播出单

b.条目、元素对象操作-MOS 2.8.5采用roElementAction(INSERT,REPLACE,MOVE,DELETE,SWAP),表示对MOS播出单内指定元素进行添加、替换、移动、删除、交替等操作。MOS 2.8.5之前采用roStorySend,roStoryInsert,roStoryReplace等操作,原理跟roElementAction一样,同时MOS2.8.5也兼容这些命令。

roElementAction INSERT插入故事板
roStorySend建立故事板

1.8、Object数据的扩展应用

Object数据一般都由MOS发送给NCS,NCS作为服务器,特殊情况下,可以由NCS发送给MOS,要求对MOS端Object数据进行修改。

例如:mosObjectCreate,mosReqObjectAction等,MOS端需要开放对Object信息的修改权限,同时NCS端需要由对应的修改方式,这种应用不常见,但是在MOS和NCS深度融合的情况下,也不妨是一种好方法。

1.9、MOS播出单对比集控系统播出单

以我台内Mosart集控系统为例,Mosart支持MOS 2.8.5协议,Mosart收到MOS播出单以后,会自动转换成其内部的集控播出单,两张单子在数据结构上具有相似性,对比如下。

MOS播出单对比Mosart播出单

Mosart集控播出单内特有的内容,作为MOS的扩展数据,放入到了mosExternalMetadata这个元素下面,mosExterbalMetadata跟object同级,但是一个Item元素下面只能包含一个mosExterbalMetadata元素。

Mosart播出单内赋予了Item各种属性,如ID、Type、TemplateType、Name,其中Type和TemplateType属性和集控系统的播出元素紧密相关,Type表示播出元素对应的数字,TemplateType表示播出元素对应的模板名称,如下图。例如一条MOS语句中的ObjectID=PACKAGE;Vtest01,那么对应到Mosart播出单内,会拆分成一个Item的属性,即Type=1,TemplateType=Vtest01

Mosart内type对应元素

相关文章

网友评论

      本文标题:MOS协议浅析及应用

      本文链接:https://www.haomeiwen.com/subject/xgryhctx.html