美文网首页工作生活
VDCP到AMP协议的探索与应用

VDCP到AMP协议的探索与应用

作者: dwademan | 来源:发表于2019-07-03 15:27 被阅读0次

摘要:VDCP和AMP作为广电业内视频服务器专有的播控协议,目前已经得到了广泛应用。两种协议都具有标准化、实时、开放的特点,方便各类播控端对视频服务器进行连接、播出、预卷、暂停、录制等操作。本文的目的在于,探究这两种协议各自的特点及相似处,并通过转换,实现通过VDCP协议对支持AMP协议设备的各类控制。

关键词:VDCP协议,AMP协议,Mosart集控

一、VDCP和AMP协议原理及特点

1.1、VDCP协议原理和特点

VDCP协议,全称VideoDisk Communications Protocol,视频磁盘通讯协议,该协议实时性强,能够支持RS422、TCP/IP等多种传输方式。

VDCP协议数据格式如下:

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),如非应答式命令,需按照协议标准数据格式,回复对应的数据命令。

1.2、AMP协议原理和特点

AMP协议,全称Advanced Media Protocol,最早由GV公司开发定制,主要应用在GV相关产品,如K2、T2视频服务器上,最大支持64k长度的字符串,支持RS422、TCP/IP等多种从传输方式。

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“,命令前缀说明如下:

CRAT建立和打开视频服务器通道的连接,对应发送命令语句格式为“string.Format(“CRAT{0:0000}{1}{2:00}{3}\n”,channel.Length+3,2,channel.Length,channel)“,支持AMP协议的设备中,channel通道名对应为vtr0~vtrn,vtr0是录制通道,vtr1~vtrn是播出通道,当需要对视频服务器的通道进行操作时,首先需要的是打开通道。例如“CRAT0007204vtr1“,表示打开vtr1播出通道。

CMDS播控命令,对应CRAT命令打开播出端口之后,发送CMD-1~DATA-N的数据,对应发送命令格式是“string.Format(“CMDS{0:0000}{1}\n”,command.Length,command)“。例如“CMDS000a4a140006000432353133“,表示预卷素材名字为”2531“的视频文件。

STOP断开和播出通道的连接,命令语句为“STOP0000\n“.

AMP协议在TCP/IP的传输上,省去了校验位计算,并且发送命令不限制字符长度和格式,提高了内部运算处理速度和效率。

二、VDCP和AMP协议比较

2.1、打开/选择播出端口

VDCP协议内,播出端口范围是1~n,录制端口范围是-1~-n,不存在端口号为0的端口,AMP协议端口号从1~n,其中1是录制端口,2~n是播出端口,因此在对应AMP协议的时候,VDCP播出端口号比AMP播出端口号小1,录制端口号对应AMP内端口号1。举例如下:

VDCP-Open Port,打开端口号1,接收正常:

发送-020430010100ce

接收-02033081015e

AMP-Open Port,对应打开端口号2,接收正常

发送-CRAT0007204vtr2

接收-100111

2.2、心跳连接

VDCP播控中可设置心跳连接,每隔固定时间发送请求,获取目的设备ID,如果ID正常,则在返送数据的第一位用01表示,如果不正常,则用00表示,AMP协议中不存在心跳连接检测的机制。举例如下:

VDCP-Active ID Request,连接设备正常,且ID为”vtr2”

发送-0203300701c8

接收-020B30870176747231202020206c

AMP-无心跳命令对应

2.3、获取视频ID

VDCP命令会返回ID状态,状态数据01表示ID正常,00表示错误,每个视频在播出服务器里都对应有ID信息,AMP协议支持的设备中,视频ID即表示视频名称,VDCP协议中视频ID长度固定和可变分别对应一种命令类型,为了方便说明,命令实例中采用的是长度可变的命令方式。举例如下:

VDCP-ID Request,获取指定ID名为”1234”的素材,放到播出缓存中

发送-0206b0163132333470

接收-0203b0960139

AMP-Preview In Preset,将指定ID名的文件放入缓存

发送-CMDS0020aa040006000431323334

接收-100111

2.4、获取视频长度

VDCP和AMP返回视频的时长的数据位为4位,由低到高分别是小时、分钟、秒、帧,数据的存储方式是BCD码。举例如下:

VDCP-ID Size Request,获取ID名为“1234”的素材时长,时长是3分01秒20帧,精确到帧。

发送-0206b014313233346e

接收-0206309420010300eb

AMP-ID Duration Request

发送-CMDS0020a2170006000431323334

接收-841720010300

2.5、获取素材列表

VDCP命令中,返回的ID列表数据中,包含返回ID的数量,以及每个ID的名称,ID数量占位2byte,ID名称占位8byte,最多单次返回的ID数量是10,到VDCP服务器中ID数量超过10的时候,需要发送继续查询命令,以进一步获取ID信息;AMP协议的ID列表机制跟VDCP略有区别,首先AMP命令回去查询第一条素材的ID,当返回正确后,再去查询之后的素材,并可指定需要单词查询素材的数量,因此查询效率上会比VDCP高,因为对单次查询获得的ID数量没有限制。举例如下:

VDCP-ID List,例举返回10条素材的命令

发送-02023011bf

接收-02543091000a31323334352020203637383920202020…[checksum]

VDCP-Next,最多每次返回素材数量是10个,因此需要next命令继续查询

发送-02023002ce

接收-02543082000a…[checksum]

AMP-List First ID,只有先例举出第一条ID以后,才能继续往下查询剩下的ID

发送-CMDS0008a2140000

接收-8a14000700053132333435

AMP-List Next ID,可以指定获取ID数量,例子中举例20条

发送-CMDS0006a11514

接收-8a140035000436373839000431323334…

2.6、刷新素材

VDCP协议通过发送命令获取添加或者删除ID列表的方式,来对自身ID缓存列表中的ID进行比对,如果有新的添加ID,就加入缓存,如果有需要删除的ID,就从缓存信息中去掉;AMP协议在刷新ID列表上更简洁,有单挑命令专门负责查询。举例如下:

VDCP-ID’s Added List/ID’s Deleted List,发送请求后,返回的是新增或者删除的ID列表

(Add)发送-02023018b6,(Delete)发送-02023019b5

(Add)接收-02xx3098…[checksum],(Delete)接收-02xx3099…[checksum]

AMP-ID Changed List Request,返回的数据中,会包含ID Changed类型,包括重命名、删除、增加、变换目录、变换元数据等,想较VDCP而言,会精确很多。

发送-CMDS0004a012

接收-821300250002563a000764656661756c74…,AMP协议在接收的ID变换列表时,还包含一些ID所在目录、盘符、长度等信息。

2.7、预卷,播出,停止,录制

这些是视频服务器内基础功能性的控制语句,VDCP协议和AMP在这些基础控制命令上有着相似的结构。举例如下:

a.VDCP-Play Cue,预卷素材ID位“2517“的素材

发送-020a202432353137202020206d

接收-04

b.AMP-In Preset,对应VDCP内Play Cue命令

发送-CMDS00204a140006000432353137

接收-100111

c.VDCP-Play,播出当前素材,播出前需要先预卷好素材

发送-02021001

接收-04

d.AMP-Play

发送-CMDS00042001

接收-10011

e.VDCP-Stop,暂停当前播出素材

发送-02021000

接收-04

f.AMP-Stop

发送-CMDS00042000

接收-100111

g.VDCP-Record,录制对应通道的素材,在AMP协议中,首先要切换到对录制通道的操作上。

发送-02021002

接收-04

h.AMP-Record

发送-CMDS00042002

接收-100111

三、VDCP和AMP协议转换应用

我台新闻演播室采用Mosart集控化的操作方式,通过集控服务器连接演播室内各类设备,并和新闻文稿流程深度融合,实现一键化、精准化的操作。虽然演播室内大部分设备已经接入集控系统,但是由于Mosart集控不支持AMP播控协议,无法打通对GV T2硬盘服务器的控制。因此,为了方便节目部门使用,笔者尝试通过将Mosart输出的VDCP协议,转换成AMP协议,达到控制T2的目的。

3.1、系统内硬件连接方式

集控和T2的硬件连接框图如图所示,集控服务器、协议转换软件、T2硬盘服务器在演播室内同一网段,都进入业务网交换机。VDCP和AMP协议的连接,均采用TCP/IP方式,协议转换软件作为协议汇聚核心,即是服务端,也是客户端;作为服务端,协议转换软件和集控服务器进行对接,端口号是5010,接收VDCP命令,并进行转换和回复,作为客户端,协议转换软件和T2硬盘服务器进行连接,端口号是3811,接收AMP命令,并进行转换和回复。

图3.1.硬件连接框图

3.2、系统内软件配置方式

3.2.1、集控系统的配置

a.打开VDCP(tcp)控制协议,端口号设置为5010,由于协议转换软件作为服务端,直接运行在集控服务器的机器上,因此Server地址设定为“127.0.0.1”.

图3.2.集控系统端口配置

b.配置播控端口,端口号1对应控制T2上P1播出通道,端口号2对应控制T2上P2播出通道。

c.其他配置,在集控服务器相关VDCP的配置中,再打开心跳监测、素材自动刷新功能,并设定对应的时间。

3.2.2、T2硬盘服务器的配置

a.在配置中,打开P1、P2播出通道的AMP协议功能,并指定通过AMP遥控的同时,能够实现本地操作。

图3.3.T2硬盘通道配置

b.回到主界面,选择每个通道的控制模式为“遥控”。

图3.4.遥控状态开关

c.指定默认视频素材路径“YJBJ”,T2内可以新建多个文件夹存放素材,为了方便操作,防止播出时出现素材查询错误,在连接上T2硬盘服务器后,应指定专门目录并初始化,该目录下的素材能够被协议转换软件读取并控制。

图3.5.T2默认路径设定

3.3、Mosart集控服务器内VDCP播控流程分析

集控服务器内对VDCP的操作包含在连个服务,MediaSerach(MMMediaAdministrator)服务和MediaPlayout(MMAVAutomation)服务,MediaSearch服务视频ID的查询、更新,以及获取对应视频的时长;Media Playout服务主要负责VDCP心跳监测、视频的预卷、播出、暂停等的控制命令,两个服务同时打开,才能保证集控服务器对VDCP视频服务器的正常查询和操作。

3.3.1、MediaSearch服务的流程框图

图3.6.MediaSearch流程框图

通过读取ClipServerVDCP.xml配置文件,和视频服务器进行连接,当连接成功并打开“LoadDatabase”选项后,同步进行查询素材和更新素材两项操作。

查询素材通过ListIds(0x11)命令,当返回素材ID数量等于10的时候,继续使用Next(0x02)命令查询,知道查询获取完所有素材ID,之后根据素材ID,通过SizeRequest(0x14)命令,获取视频素材时长,并存入缓存。

更新素材通过ListIdsAdded/ListIdsDeleted(0x18/0x19),通过返回的命令获取添加/删除素材的ID,当添加/删除素材的ID数等于10的时候,继续发送Next(0x11)查询命令,直到所有素材查询完毕,最后再更新缓存中的视频素材。

3.3.2、Media Playout服务流程框图

包含选择播出端口、预卷素材、播出素材。选择播出端口,Mosart服务器的播出端口配置中,打开了Port1和Port2两个播控端口,当VDCP协议需要通过端口发送命令时,首先需要确定播出端口,即SelectPort(0x22),当选择的端口没有打开时,重新返回OpenPort(0x01),直到对应端口打开,然后继续接下来的播控操作。

图3.7.选择播出端口框图

预卷指定ID的视频,集控服务器内部提供了多种预卷素材的方法,可以预卷默认的素材(IgnoreClipExistence=true),也可以选择预卷到素材指定帧(IgnoreClipExistence=false),当选择预卷指定素材后,先要获取素材并放到播出缓存中(RequestID),然后再次确认素材长度(SizeRequest),最后选择指定预卷素材端口(SelectPort),并对素材进行预卷。我们演播室应用中一般都是预卷到视频素材的开头,因此“StartFrame=0”并直接使用CuePlay命令。

图3.8.预卷素材框图

播出素材,首先选择播出端口(SelectPort),然后选择参照的播出速率,演播室内素材按照正常速率播出,即“Playing rate=1”,在播出命令上直接使用Play命令。

图3.9.播出素材框图

3.4、协议转换软件程序设计

3.4.1、程序流程框图

图3.10.协议转换流程框图

协议转换软件接收Mosart集控发送的VDCP播控命令,转换成AMP播控命令,再发送给T2硬盘服务器,同时接收T2硬盘服务器内AMP命令的返送,转换成VDCP命令,再发送给Mosart服务器,协议转换软件的设计流程如下,VDCP和AMP的收发同时进行,不存在延时,这样能够保持播控命令的高效实时性。

3.4.2、关键代码部分

初始化播出目录

AMP协议中规定播出素材需要指定目录,在T2或者K2中,默认素材目录是”Default”,可以通过AMP协议中相关命令指定默认目录,并且当有素材需要预卷的时候,AMP协议规定,必须打开“AutoMode”模式,因此,我们在第一次打开AMP播出通道的端口后,需要对默认目录和工作模式也做相应的初始化,代码如下:

图3.11.初始化播出目录

心跳连接

AMP协议中不存在心跳命令,当VDCP协议发送心跳命令时,程序直接返回心跳给VDCP,而不再查询AMP设备的连接状态,代码如下:

图3.12.心跳连接回复

]获取素材ID列表

AMP和VDCP协议获取ID列表的方式不一样,VDCP协议直接发查询命令(ID List),返回最多10条ID信息,AMP协议首先获取第一条ID(First ID List),然后通过查询获取剩余的ID信息,程序中为了协议转换的顺利,当VDCP协议发送查询命令时,AMP先查询第1条,之后再查询9条,把总的10条ID信息返回给VDCP设备,代码如下:

图3.13.获取ID列表

3.4.3、程序连接测试

此次测试以我台3号全媒体演播室为准,3号演播室集成有Mosart集控系统以及T2硬盘服务器,T2硬盘服务器作为信号录制和播出的备份通道,之前由于Mosart集控不支持AMP协议,一直没有跟T2对接。此次测试,我们在Mosart集控服务器本地安装VDCP转AMP软件,并进行了相关配置操作。

Mosart集控本地对接VDCP转AMP软件,端口号5010,T2映射到集控对应的虚拟通道时C和D,如图所示,当Mosart集控中Media Playout(MMAVAutomation)服务连上VDCP转AMP后,每隔10秒发送心跳测试,当收到回复以后,C和D通道状态显示正常。

图3.14.集控系统连接状态

当Mosart集控中MediaSerach(MMMediaAdministrator)服务连接上VDCP转AMP后,首先发送VDCP命令,获取T2硬盘服务器内所有素材ID,然后根据每条ID查询素材长度,最后每隔25秒发送素材更新查询(ID’s Added List/ID’s Deleted List),查询状态和命令如下:

图3.15.素材列表查询指令

当查询到T2素材并获取到时长后,Mosart集控服务器内显示素材状态正常,并可以播出。

图3.16.素材长度查询显示、

四、总结

此次VDCP到AMP协议的探索和应用,打通了我台演播室内集控服务器和T2硬盘服务器的连接,将T2的播放融入全媒体节目的制作应用中,减少了操作人员,并提高了安全性。

同时,此次探究过程中,笔者也深入了解了VDCP和AMP两大播控协议的优劣,VDCP协议再素材的刷新上每次最多只能遍历10个素材,相较于AMP协议的自定义刷新数量,效率上会低一点;AMP协议在素材的ID的长度、格式上不做限制,VDCP需要根据素材长度是固定还是可变,设置不同的收发命令,因此在传输上,AMP协议会显得更加灵活;VDCP对比AMP协议,在操控命令上更加多样,并且能支持更多视音频的相关操作,在广度和功能性上比AMP协议更强大。

VDCP和AMP两大播控协议已经诞生很长一段时间,并且还在不断发展修改,它们各有特点,都能提供标准化的播控解决方案,这给广电在融媒发展上提供了更多可能性。

相关文章

  • VDCP到AMP协议的探索与应用

    摘要:VDCP和AMP作为广电业内视频服务器专有的播控协议,目前已经得到了广泛应用。两种协议都具有标准化、实时、开...

  • 网页设计 - 收藏集 - 掘金

    免费且又精致的 HTML/CSS 站点模板 - 前端 - 掘金&l...

  • 《图解TCP/IP》阅读笔记-8应用协议

    8.1应用层协议概要 TCP和IP等下层协议是不依赖与上层应用类型、适用性非常广的协议。而应用协议是为了实现某种应...

  • 探索如何将 SwiftUI 集成到 React Native 应

    探索如何将 SwiftUI 集成到 React Native 应用探索如何将 SwiftUI 集成到 React ...

  • 隐私政策

    欢迎您使用本应用! 为使用本应用的服务,您应当阅读并遵守《应用使用协议》和《应用隐私权条款》。本协议是用户与本应用...

  • 服务协议

    本应用服务协议条款(以下简称“服务协议条款”)是由您与(以下简称“本公司”)就本公司提供的本应用(以下统称本应用)...

  • post get

    http(超文本传输协议) 属于tcp/ip协议族里的,与DNS协议同属于应用层协议http 常用方法是(post...

  • 一周行业简报(2017.12.18-2017.12.24)

    骨科平台唯医网与阿里云签署合作协议,共同探索人工智能在骨科领域的应用。双方将共同就云计算、大数据、骨科人工智能等领...

  • 应用层协议

    应用层概述 TCP/IP协议的最高层 直接为应用程序提供网络服务 常见的应用层协议 DNS HTTP SMTP与P...

  • 焦点领动【功能升级】2020年4月第一周:新增全站AMP功能

    新增全站AMP功能 【AMP简介】AMP:Accelerated Mobile Pages,意思是移动页面加速。A...

网友评论

    本文标题:VDCP到AMP协议的探索与应用

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