美文网首页
GVG 4000与BMD ATEM系列切换台协议转换

GVG 4000与BMD ATEM系列切换台协议转换

作者: dwademan | 来源:发表于2020-12-16 12:21 被阅读0次

    一、前言

        之前写过一篇老树开新花-通过Synergy100面板实现对BMD切换台控制的文章,主要介绍的是如何通过Synergy100切换面板对BMD切换台进行控制的,当时是刚接触BMD ATEM系列的SDK开发,最终实现了对BMD ATEM切换台PGM、PST、AUX三条母线的控制,应用上有些粗浅。

        最近有机会做了一个BMD切换台和GVG 4000互转的项目,基本上把4级ME的切换台功能都用上了,在此总结加深下印象。

    二、BMD ATEM系列切换台各功能实现方法

        此次项目中GVG 4000到ATEM协议的转换,主要参照BMD ATEM系列切换台开发的SDK文档以及应用案例,关于ATEM系列切换台的API和接口原理,以及初期需要的环境配置,可参照我之前写的那篇文章,以下为这次项目中新增的一些功能。

    2.1、获取切换台每级ME的实例对象

        参考文档内接口IBMDSwitcherMixEffectBlockIterator,此接口通过IBMDSwitcher::CreateIterator返回对象,接口中定义Next方法,用来枚举每级ME的IBMDSwitcherMixEffectBlock接口对象,即对该ME操作的对象。具体代码如下图,此方法将每个IBMDSwitcherMixEffectBlock枚举出来,返回一个枚举对象,需要使用IBMDSwitcherMixEffectBlock的时候,只需要按顺序拿出,默认排序从ME1~ME N。

        当获取到具体IBMDSwitcherMixEffectBlock的对象后,可通过SetPreviewInput、SetProgramInput、PerformAutoTransition等方法,对切换台当前ME进行各项正常操作,具体IBMDSwitcherMixEffectBlock接口下的方法有很多,可参考文档。

    图2.1-IBMDSwitcherMixEffectBlock获取方法

    2.2、获取切换台所有AUX的实例对象

        参考文档内接口IBMDSwitcherInputIterator,此接口通过IBMDSwitcher::CreateIterator返回对象,接口中定义Next方法,用来返回各类IBMDSwitcherInput对象,我们从这些返回input对象中,筛选并转换出AUX对象IBMDSwitcherInputAux,因此需要通过input对象的接口类型来判别,具体代码如下,我把所有返回的AUX对象加入了List列表中。

        当获取到AUX对象IBMDSwitcherInputAux之后,可通过SetInputSource方法设置AUX母线交叉点,详细方法使用可参考文档

    图2.2- IBMDSwitcherInputAux获取方法

    2.3、获取每级ME的上游键实例对象

        BMD ATEM系列切换台每级ME带4个上游键KEY,同时切换台本身还带2个下游键DSK,上游键和下游键的获取方法类似,此次项目中,我只使用了上游键的获取方法。

        参考文档内接口IBMDSwitcherKeyIterator,此接口通过IBMDSwitcherMixEffectBlock::CreateIterator返回对象,接口中定义Next方法,用来返回IBMDSwitcherKey对象,BMDSwitcherKey对象中,可通过setOnAir方法设置KEY键的上下,也可通过getOnAir方法获取目前KEY键的状态,具体代码如下,我使用了枚举器将每级ME的KEY都放进去,再供调用。

    图2.3- IBMDSwitcherKey获取方法

    2.4、获取宏命令控制对象

        BMD ATEM系列切换台可在切换台内存取本地宏命令,也可以供外部调用。参考文档内IBMDSwitcher接口,宏命令控制接口对象IBMDSwitcherMacroControl可通过IBMDSwitcher转换实现,它本身就是IBMDSwitcher接口的一个子接口。具体代码如下图,当获取到IBMDSwitcherMacroControl接口对象时,可通过Run方法运行宏命令,也可通过Record方法记录宏命,详细方法很多,可以参考文档。

    图2.4.1-声明对象 图2.4.2-接口转换 图2.4.3-宏命令调用

    2.5、设置每级ME的转换方式

        ME级的转换指的是Preview到Program的画面转换方式,主要有WIPE、MIX、DVE三种,具体使用IBMDSwitcherTransitionParameters这个接口,此接口对象需要通过IBMDSwitcherMixEffectBlock实例对象进行转换,当获取到IBMDSwitcherTransitionParameters接口对象后,再通过SetNextTransitionStyle方法,设置需要转换的方法,具体代码如下,bmdSwitcherTransitionStyleMix、bmdSwitcherTransitionStyleWipe等为固态参数。

    图2.5.1-设置ME MIX方法 图2.5.2-设置ME WIPE方法

    2.6、设置每级ME内转换帧率

        ME内的转换帧率指的时Preview到Program的画面转换时间,以帧为精确度,WIPE和MIX模式下,有不同的转换帧率设置方式,我们先需要通过IBMDSwitcherTransitionParameters获取当前ME级的转换方式,再通过IBMDSwitcherTransitionMixParameters或者IBMDSwitcherTransitionWipeParameters设置对应的转换帧率。

        IBMDSwitcherTransitionParameters这个接口获取方式上文讲过,需要通过此接口下的GetNextTransitionStyle方法,获取并判定当前时MIX、WIPE、DVE中的哪种;IBMDSwitcherTransitionMixParametersIBMDSwitcherTransitionWipeParameters接口,需要通过IBMDSwitcherMixEffectBlock实例对象进行转换,具体代码如下图,当获取到MIX或者WIPE接口后,再通过SetRate方法,设置帧率。

    图2.6-ME 帧率转换方法

    三、GVG 4000切换台协议分析

    3.1、TCP端口转虚拟串口

        GVG 4000主要是通过串口进行控制,而BMD ATEM切换台是通过TCP端口进行控制,为了方便协议转换上的对接,我通过USR-VCOM这个软件将TCP端口虚拟化为一个串口接入GVG 4000,具体方式如下图,TCP Server端端口20108,映射为虚拟串口COM1,GVG 4000连虚拟COM1端口以后,所有都会被20108这个TCP Server端口接收。

    图3.1TCP端口转虚拟串口软件

    3.2、GVG 4000协议数据说明

        GVG 4000数据结构跟GVG 100/200类似,之前有过之前Syner100的开发案例,分析起来很快,所有数据交互均以16进制显示。

    握手方式:发送-30 02,返回-84 03 00 EC 01。

    ME1-ME4 PGM母线直切:发送-03 (00 01 02 03)C1 XX,其中第二位数据从00~03分别代表ME1~ME4,第四位数据XX表示交叉点。

    ME1-ME4 PST母线直切:发送-03 (00 01 02 03)C2 XX,其中第二位数据从00~03分别代表ME1~ME4,第四位数据XX表示交叉点。

    设定Transform方式位MIX或者WIPE:发送-04 (00 01 02 03)C6 02 (06 08),其中第二位数据从00~03分别代表ME1~ME4,第五位数据06表示MIX方式,08表示WIPE方式。

    设定ME级的帧率:发送-05 (00 01 02 03) CC 80 00 XX,其中第二位数据从00~03分别代表ME1~ME4,第六位数据XX表示设置帧率的数值。

    AUX母线交叉点设置:发送-03 (40 42 44 46 48 4A)C0 XX,其中第二位数据从40~4A分别代表AUX1~AUX6,依次类推,第四位数据XX表示AUX交叉点设置。

    下游键DSK上下键设置:发送-04 00 02 (23 25 27 29),其中第四位数据23~29分别代表DSK1~DSK4的上下键。类似于一个出发按钮。

    宏命令调用:发送-04 00 DB 00 XX,其中第五位数据XX表示需要调取宏命令的号数。

    四、总结

        BMD ATEM系列切换台以其功能强大,性价比高的特点,目前在广电、教育、影视上都有很多应用,而且不管是最便宜的ATEM Mini,还是到ATEM 8K切换台,底层的SDK调用都是一样的,这种开放性也衍生出很多可行性,尤其是在集中控制,未来可以尝试考虑构建一个以BMD ATEM切换台为核心的小型集控播出体系,笔者精力有限,只尝试了SDK开发包中的一小部分功能,以后有机会再补充。

    相关文章

      网友评论

          本文标题:GVG 4000与BMD ATEM系列切换台协议转换

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