1 引言
苏州广播电视总台演播室集控系统从正式投入使用至今已经过了4年多的时间,期间台内曾多次对Mosart集控系统进行定向开发和扩展,如自研发演播室轨道机器人与集控的对接、演播室摄像机镜头与集控的对接、视频矩阵与集控的对接等,目前基本满足了演播室各档栏目的制作与直播工作。
但是随着与集控系统对接的深入,以及节目制作需求上的扩展,导致原先安装在集控服务器上的自研发软件过多,不管是在日常维护还是服务器运行上,都存在一定的安全隐患。因此,此次项目通过Raspberry Pi系统对Mosart服务器进行了优化和扩展,提高了集控服务器的运行效率和安全性。
2 Mosart集控系统扩展方案设计
2.1 Mosart集控系统介绍
Mosart集控系统连接框图如图1所示,整个集控系统的连接为播控层,服务器层和演播室设备层。Mosart播控层主要负责对设备操作界面的显示,集控表单的构建和播出,主要面向集控系统操作人员,Mosart播控支持对主备Mosart服务器的连接和切换,支持心跳连接和多人操作模式;Mosart服务器层作为演播室所有设备的接入层,能够实时对接切换台、视频服务器、调音台、文稿系统,并且互为主备,能够实现主备服务器之间快速倒换;演播室设备层是演播室系统的核心,直播演播室的设备之间互为主备冗余关系,同时演播室设备层的操控和Mosart播控层的操控互不干扰,即集控系统接入不影响演播室设备的手动操作。
虽然Mosart集控系统在设计之初考虑到了对演播室各类设备的连接和控制,但是演播室设备的控制协议存在变更和升级的过程,集控不可能全部覆盖所有设备的操作,因此最直接的方式就是在每台集控服务器层部署第三方协议转换软件,通过读取集控指定的控制协议,转换成演播室内设备的控制协议。随着被控的设备不断加入,协议转换软件也在增加,这导致不仅在设备日常维护上增加了复杂度(重启集控服务时需要重启对应的协议转换),而且还会占用部分集控服务器资源,对集控系统的稳定性上也存在一定隐患,因此需要对集控系统进行瘦身,同时制定一套更集中、安全的扩展方案。
2.2 Mosart集控系统扩展方案
2.2.1 Raspberry Pi系统的接入
Raspberry Pi简称RasPi,中文名为树莓派,是大小只有信用卡大小的微型电脑,其系统基于Linux,外部包含有正常计算机的各类接口,方便开发人员进行定向开发和安装,非常适合作为集控协议转换的服务器。
此次项目中RasPi系统作为单独的中间层,介于集控服务器层和演播室设备层之间,RasPi系统连接如图2所示。目前RasPi系统开启VDCP转AMP协议和SW-P-08转Leitch协议,前者主要用于实现Mosart控制GV T2视频服务器,后者主要用于控制Harris视频矩阵,VDCP和SW-P-08都是Mosart内部自带的协议。RasPi系统能够同时连接Mosart主备两台服务器,能够自动重连Mosart服务器和演播室设备,并且RasPi系统内将协议转换软件定制成系统服务,支持开机自动启动,能通过SSH或者VNC等远程方式对服务进行重启操作。RasPi系统基于Linux,其稳定性要高于Windows,并且协议转换通过服务的方式部署在系统内,降低了系统内部开发,提高了稳定性。
2.2.2 VDCP转AMP实现对T2服务器的控制
VDCP协议原理及特点
VDCP协议全称Video Disk Communications Protocol,视频磁盘通讯协议,该协议实时性强,能够支持RS422、TCP/IP等多种传输方式,VDCP协议数据格式如表1。
STX:表示数据包的开始位,固定位0x02。
BC:Byte Count,统计BC位之后到CHECKSUM位之前总的数据位数。
TYPE/CMD-1:包含一部分命令类型和设备地址。
CMD-2:对应CMD-1后的补充命令,和CMD-1共同确定该条命令的功能和定义。
DATA-1~DATA-N:需要操作的命令数据。
CHECKSUM:数据校验位,BC位到CHECKSUM位之间数据总和的二进制补码,取二进制补码的低8位。
VDCP针对不同的发送命令有不同的回复方式,VDCP命令具有实时性的特点,如果发送的命令没有收到答复,或者答复错误,则发送端就会报错,等待重新建立连接。如应答式的命令,则需要回复ACK(0x04)或者NAK(0x05),如非应答式命令,需按照协议标准数据格式,回复对应的数据命令。
AMP协议原理及特点
AMP协议全称Advanced Media Protocol,最早由GV公司开发定制,主要应用在GV相关产品,如K2、T2视频服务器上,最大支持64k长度的字符串,支持RS422、TCP/IP等多种从传输方式,AMP协议数据格式如下表。
CMD-1:发送数据命令的类型。
CMD-2:对CMD-1命令的补充,和CMD-1共同确定该条命令的功能和定义。
Actual BC1:统计BC1后面到CHECKSUM之前所有数据的长度。
Actual BC2:统计BC2后面到CHECKSUM之前所有数据的长度,Actual BC2=Actual BC1-2.
DATA-1~DATA-N:需要操作的命令数据。
CHECKSUM:数据校验位,校验方式同VCDP校验一样。
当使用TCP/IP方式进行AMP命令传输时,协议内规定TCP或者UDP连接端口号是3811,命令数据发送时省去校验位,并添加命令行前缀,如CRAT(建立连接)、CMDS(播控命令),STOP(暂停)。
AMP协议在TCP/IP的传输上,结构和VDCP协议类似,省去了校验位计算,并且发送命令不限制字符长度和格式,提高了内部运算处理速度和效率。
VDCP转AMP协议命令对应
参照VDCP和AMP播控协议对照表可知,VDCP和AMP作为目前广泛应用的视频播控协议,在命令格式上有许多相似之处,同时又各有特点。首先VDCP在播出端口号范围是1~n,录制端口号-1~-n,AMP播出端口2~n,录制端口号1,在端口的控制范围上,VDCP更广泛;其次VDCP播控中,可设置心跳连接,每隔固定时间发送命令,获取目标设备ID信息,而AMP协议不存在心跳连接机制;同时VDCP素材ID长度固定分为8位和16位,而AMP在素材ID的长度和命名方式上不受限制,更加灵活;最后,AMP在查询和更新素材方面的效率要高于VDCP,VDCP命令每次固定获取10条素材,而AMP在获取第1条素材ID以后,可根据命令格式,获取指定数量素材。
2.2.3 SW-P-08转Leitch实现对视频矩阵的控制
SW-P-08协议原理及特点
SW-P-08矩阵协议(General Remote Control Protocol)是目前比较通用的矩阵控制协议,该协议提供了一种矩阵外部控制的方法,支持TCP/IP以及串口控制。协议数据格式如下图3所示,其中SOM为2个字节的固定消息头数据0x10和0x02。DATA为消息数据,包含矩阵控制指令。BTC为DATA域的字节长度。CHK为校验和数据。EOM为2字节固定的消息尾数据0x10和0x03。
Leitch矩阵协议原理及特点
Harris矩阵以Telnet的方式登录,端口号是21,用户名为“leitch”,登录密码“leicthadmin”,当登录成功以后,可以通发送命令的方式设置矩阵交叉点,控制命令格式为“@...X:<Lvls>/<Dest>,<Src>[:I<ID>]”,其中“@...”为固定命令开头(“...”表示一个空格),X代表命令类型为交叉点设置命令,Lvls代表矩阵所在层级,Dest和Src代表交叉点目标信号和源信号编号(以0号为第一个)。ID为16进制的矩阵ID号。若要将矩阵的03号物理输出端口的信号源切换为01号输入源,则需要发送的控制命令为“@...X:0/0,2:I40”。
SW-P-08转Leitch实现方式
我台演播室视音频系统内,矩阵设备接入不存在层级和主备关系,因此两类协议转换的发送命令上,层级都是0;Harris矩阵的默认ID号经过测试为40,因此整个协议的转换只涉及到源交叉点信息(Mosart集控)的读取,以及目的交叉点信息(Harris矩阵)的写入。
3 Mosart集控系统扩展方案实现
3.1 协议转换程序设计
3.1.1 VDCP转AMP协议程序设计
转换程序设计框图如图4所示,RasPi端先跟T2视频服务器建立连接,然后再作为服务端跟Mosart主备服务器进行连接。当RasPi端接收到集控发送的VDCP播控命令后,进行判定并转化为相应的AMP播控命令发送给T2,同时等待T2进行播控反馈,当接收到反馈后,再转成VDCP命令发送给主备集控服务器。
程序设计充分考虑的安全和稳定性,支持T2视频服务器端和Mosart集控服务器端的断开重连,并把每条播控命令写入RasPi对应日志文件。
3.1.2 VDCP转AMP程序连接测试
T2视频服务器、Mosart集控、RasPi处于同一局域网内,RasPi的IP地址是172.19.24.222,VDCP播控端口号是5100,Mosart集控服务器内连接状态如图4,T2 P1通道和T2 P2通道映射到集控系统为通道C和D。
集控系统内VDCP协议建立连接后,素材查询流程如图5所示,首先会建立心跳连接,每隔10秒发送“0203300701C8”心跳连接命令(Active ID Request命令),AMP不存在对应返回命令,因此直接由RasPi进行心跳命令的回复;同时查询所有素材ID(IDList命令),当获取到素材ID后,再对每个素材进行查询(IDSize Request命令),获取单个素材的时长;最后,VDCP每隔25秒发送素材更新查询(ID‘s
Added List/ID’s Deleted List命令),当由素材更新时,返回给VDCP更新的素材ID列表,Mosart集控从其缓存中更新素材。
3.1.3 SW-P-08转Leitch协议程序设计
矩阵协议转换程序设计框图如图7所示,RasPi首先通过Telnet方式跟Harris矩阵建立连接并登录,然后打开TCP/IP端口监听,监听并接收Mosart集控端发送的SW-P-08命令,如果接收到的命令消息头数据和校验位正确,则提交叉点信息,转换为Leitch格式,并发送给Harris矩阵,如果消息头数据或校验位接收错误,则该命令无效,继续等待下一条集控命令。
程序在设计时同样考虑了日志记录和自动重连,Mosart服务端和Harris矩阵连接断开或重启后能够自动连接RasPi上矩阵协议转换服务。
3.1.4 SW-P-08转Leitch程序连接测试
Harris矩阵、Mosart集控、RasPi处于同一局域网内,矩阵连接测试如图8所示,RasPi地址172.19.24.222,SW-P-08协议接收端口号5000,当RasPi成功与Harris矩阵和Mosart集控建立连接后,长期保持端口监听当接收到Mosart集控发送的交叉点命令后,打印到日志,并显示“Receive“接收数据,接收数据的消息头和校验位正确后,发送Telnet命令到Harris矩阵,并打印到日志,显示”Telnet命令发送成功“;经过测试发现当RasPi端同时接收到两条Mosart集控命令后,同样能够进行快速处理,按照先后顺序发送到Harris矩阵端。
3.2 Raspberry Pi系统内服务部署
RasPi系统基于Linux内核,在系统操作和命令上支持Shell脚本语言,同时为了兼顾程序的移植和后续维护,开发协议转换程序时采用的是轻量化的Python编程语言,协议转换程序通过Python编写和编译后,在通过Shell脚本语言进行服务部署,将编译后的协议转换程序自动加入的开启自启动服务中,具体操作如下。
1.编写Shell可执行脚本,该脚本能够执行VDCP转AMP、SW-P-08转Leitch对应的Python程序模块,VDCP转AMP对应Shell脚本文件为“vdcptrans.sh”, SW-P-08转Leitch对应Shell脚本文件为“ruconvert.sh“。
2.编写开机自启动的服务类型文件,服务的作用是指向Shell脚本文件并运行,服务文件放置路径为RasPi系统内“/usr/lib/systemd/system/ ”目录下,两个协议转换对应的服务文件为“vdcpconvert.service”、“reconvert.service“。
3.打开RasPi系统内终端控制窗口,使用systemctl命令,启动对应服务,如“pi@raspberry:~ $ sudo systemctl enable vdcptrans.service ”。
4.重启RasPi系统,服务自动启动,可以通过systemctl命令pi@raspberry:~ $ sudo systemctl status vdcptrans.service “查看服务运行状态。如图9为vdcptrans.service服务运行状态,有”Active:activating(start)“字样,说明服务运行状态正常。
3.3 集控系统与演播室设备相关配置
安装RasPi系统作为中间层后,对于Mosart集控和演播室设备来说,并不需要做额外的配置。对于Mosart集控,它把需要控制的设备IP地址以及端口号指向RasPi系统,在集控系统内,RasPi系统被认作矩阵和视频服务器设备;对于演播室矩阵和视频服务器设备,只需要等待连接并获取正确的控制命令,演播室设备不需要关系它是被什么设备去控制。RasPi系统作为中间层,也起着“桥梁”的作用,实现了演播室设备和Mosart集控的连接,同时不占用两边设备任何系统资源。
4 结语
此次通过RasPi对Mosart集控的横向扩展,打通了我台演播室集控和T2视频服务器、Harris矩阵的连接,实现了将演播室全部设备融入到全媒体节目只用的应用中,减少了操作人员和操作复杂度,同时提高了系统的安全性。
在对全媒体演播室节目制作的探索中,笔者也深入了解到了各类视频播控协议和矩阵协议的优劣,伴随着广电全媒体深度融合的继续发展,如何最大化、最有效的利用演播室内现有的资源,能够更有力的助推全媒体节目在制作的创造与创新。