一、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结构,易于读懂解析。
![](https://img.haomeiwen.com/i6831723/61f62b29795ae696.png)
在发送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相互独立,由哪个端口发就由哪个端口回复,作为服务端的端口可同时连接多个客户端端口。
![](https://img.haomeiwen.com/i6831723/ff17a56d1054e28d.png)
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编码方式,只不过在存储的过程中,长度会根据字符自动变化。
![](https://img.haomeiwen.com/i6831723/e6e278c997ab04b4.png)
如上图所示,左边是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软件换算成字节符进行验证。
![](https://img.haomeiwen.com/i6831723/2339bbd69e0f6ac7.png)
![](https://img.haomeiwen.com/i6831723/e92610201c812e82.png)
![](https://img.haomeiwen.com/i6831723/20d4162b94794379.png)
如上面三张图,“严”字对应不同编码方式的显示,其中前三位“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。
![](https://img.haomeiwen.com/i6831723/3d2310d85bd8eb51.png)
b.条目、元素对象操作-MOS 2.8.5采用roElementAction(INSERT,REPLACE,MOVE,DELETE,SWAP),表示对MOS播出单内指定元素进行添加、替换、移动、删除、交替等操作。MOS 2.8.5之前采用roStorySend,roStoryInsert,roStoryReplace等操作,原理跟roElementAction一样,同时MOS2.8.5也兼容这些命令。
![](https://img.haomeiwen.com/i6831723/d6f78ce72d9a87ee.png)
![](https://img.haomeiwen.com/i6831723/aa4a4b51f38c278f.png)
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播出单以后,会自动转换成其内部的集控播出单,两张单子在数据结构上具有相似性,对比如下。
![](https://img.haomeiwen.com/i6831723/8ef98a31c6847cee.png)
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
![](https://img.haomeiwen.com/i6831723/94ce98f603b104d7.png)
网友评论