摘要:VDCP和AMP作為廣電業(yè)內(nèi)視頻服務(wù)器專有的播控協(xié)議,目前已經(jīng)得到了廣泛應(yīng)用。兩種協(xié)議都具有標準化、實時、開放的特點,方便各類播控端對視頻服務(wù)器進行連接、播出、預(yù)卷、暫停、錄制等操作。本文的目的在于,探究這兩種協(xié)議各自的特點及相似處,并通過轉(zhuǎn)換,實現(xiàn)通過VDCP協(xié)議對支持AMP協(xié)議設(shè)備的各類控制。
關(guān)鍵詞:VDCP協(xié)議,AMP協(xié)議,Mosart集控
一、VDCP和AMP協(xié)議原理及特點
1.1、VDCP協(xié)議原理和特點
VDCP協(xié)議,全稱VideoDisk Communications Protocol,視頻磁盤通訊協(xié)議,該協(xié)議實時性強,能夠支持RS422、TCP/IP等多種傳輸方式。
VDCP協(xié)議數(shù)據(jù)格式如下:

STX:表示數(shù)據(jù)包的開始位,固定位0x02.
BC:Byte Count,統(tǒng)計BC位之后到CHECKSUM位之前總的數(shù)據(jù)位數(shù)。
TYPE/CMD-1:包含一部分命令類型和設(shè)備地址。
CMD-2:對應(yīng)CMD-1后的補充命令,和CMD-1共同確定該條命令的功能和定義。
DATA-1~DATA-N:需要操作的命令數(shù)據(jù)。
CHECKSUM:數(shù)據(jù)校驗位,BC位到CHECKSUM位之間數(shù)據(jù)總和的二進制補碼,取二進制補碼的低8位。
VDCP針對不同的發(fā)送命令有不同的回復(fù)方式,VDCP命令具有實時性的特點,如果發(fā)送的命令沒有收到答復(fù),或者答復(fù)錯誤,則發(fā)送端就會報錯,等待重新建立連接。如應(yīng)答式的命令,則需要回復(fù)ACK(0x04)或者NAK(0x05),如非應(yīng)答式命令,需按照協(xié)議標準數(shù)據(jù)格式,回復(fù)對應(yīng)的數(shù)據(jù)命令。
1.2、AMP協(xié)議原理和特點
AMP協(xié)議,全稱Advanced Media Protocol,最早由GV公司開發(fā)定制,主要應(yīng)用在GV相關(guān)產(chǎn)品,如K2、T2視頻服務(wù)器上,最大支持64k長度的字符串,支持RS422、TCP/IP等多種從傳輸方式。

CMD-1:發(fā)送數(shù)據(jù)命令的類型。
CMD-2:對CMD-1命令的補充,和CMD-1共同確定該條命令的功能和定義。
Actual BC1:統(tǒng)計BC1后面到CHECKSUM之前所有數(shù)據(jù)的長度。
Actual BC2:統(tǒng)計BC2后面到CHECKSUM之前所有數(shù)據(jù)的長度,Actual BC2=Actual BC1-2.
DATA-1~DATA-N:需要操作的命令數(shù)據(jù)。
CHECKSUM:數(shù)據(jù)校驗位,校驗方式同VCDP校驗一樣。
當使用TCP/IP方式進行AMP命令傳輸時,協(xié)議內(nèi)規(guī)定TCP或者UDP連接端口號是3811,命令數(shù)據(jù)發(fā)送時省去校驗位,并添加命令行前綴,如“CRAT“、”CMDS“,”STOP“,命令前綴說明如下:
CRAT:建立和打開視頻服務(wù)器通道的連接,對應(yīng)發(fā)送命令語句格式為“string.Format(“CRAT{0:0000}{1}{2:00}{3}\n”,channel.Length+3,2,channel.Length,channel)“,支持AMP協(xié)議的設(shè)備中,channel通道名對應(yīng)為vtr0~vtrn,vtr0是錄制通道,vtr1~vtrn是播出通道,當需要對視頻服務(wù)器的通道進行操作時,首先需要的是打開通道。例如“CRAT0007204vtr1“,表示打開vtr1播出通道。
CMDS:播控命令,對應(yīng)CRAT命令打開播出端口之后,發(fā)送CMD-1~DATA-N的數(shù)據(jù),對應(yīng)發(fā)送命令格式是“string.Format(“CMDS{0:0000}{1}\n”,command.Length,command)“。例如“CMDS000a4a140006000432353133“,表示預(yù)卷素材名字為”2531“的視頻文件。
STOP:斷開和播出通道的連接,命令語句為“STOP0000\n“.
AMP協(xié)議在TCP/IP的傳輸上,省去了校驗位計算,并且發(fā)送命令不限制字符長度和格式,提高了內(nèi)部運算處理速度和效率。
二、VDCP和AMP協(xié)議比較
2.1、打開/選擇播出端口
VDCP協(xié)議內(nèi),播出端口范圍是1~n,錄制端口范圍是-1~-n,不存在端口號為0的端口,AMP協(xié)議端口號從1~n,其中1是錄制端口,2~n是播出端口,因此在對應(yīng)AMP協(xié)議的時候,VDCP播出端口號比AMP播出端口號小1,錄制端口號對應(yīng)AMP內(nèi)端口號1。舉例如下:
VDCP-Open Port,打開端口號1,接收正常:
發(fā)送-020430010100ce
接收-02033081015e
AMP-Open Port,對應(yīng)打開端口號2,接收正常
發(fā)送-CRAT0007204vtr2
接收-100111
2.2、心跳連接
VDCP播控中可設(shè)置心跳連接,每隔固定時間發(fā)送請求,獲取目的設(shè)備ID,如果ID正常,則在返送數(shù)據(jù)的第一位用01表示,如果不正常,則用00表示,AMP協(xié)議中不存在心跳連接檢測的機制。舉例如下:
VDCP-Active ID Request,連接設(shè)備正常,且ID為”vtr2”
發(fā)送-0203300701c8
接收-020B30870176747231202020206c
AMP-無心跳命令對應(yīng)
2.3、獲取視頻ID
VDCP命令會返回ID狀態(tài),狀態(tài)數(shù)據(jù)01表示ID正常,00表示錯誤,每個視頻在播出服務(wù)器里都對應(yīng)有ID信息,AMP協(xié)議支持的設(shè)備中,視頻ID即表示視頻名稱,VDCP協(xié)議中視頻ID長度固定和可變分別對應(yīng)一種命令類型,為了方便說明,命令實例中采用的是長度可變的命令方式。舉例如下:
VDCP-ID Request,獲取指定ID名為”1234”的素材,放到播出緩存中
發(fā)送-0206b0163132333470
接收-0203b0960139
AMP-Preview In Preset,將指定ID名的文件放入緩存
發(fā)送-CMDS0020aa040006000431323334
接收-100111
2.4、獲取視頻長度
VDCP和AMP返回視頻的時長的數(shù)據(jù)位為4位,由低到高分別是小時、分鐘、秒、幀,數(shù)據(jù)的存儲方式是BCD碼。舉例如下:
VDCP-ID Size Request,獲取ID名為“1234”的素材時長,時長是3分01秒20幀,精確到幀。
發(fā)送-0206b014313233346e
接收-0206309420010300eb
AMP-ID Duration Request
發(fā)送-CMDS0020a2170006000431323334
接收-841720010300
2.5、獲取素材列表
VDCP命令中,返回的ID列表數(shù)據(jù)中,包含返回ID的數(shù)量,以及每個ID的名稱,ID數(shù)量占位2byte,ID名稱占位8byte,最多單次返回的ID數(shù)量是10,到VDCP服務(wù)器中ID數(shù)量超過10的時候,需要發(fā)送繼續(xù)查詢命令,以進一步獲取ID信息;AMP協(xié)議的ID列表機制跟VDCP略有區(qū)別,首先AMP命令回去查詢第一條素材的ID,當返回正確后,再去查詢之后的素材,并可指定需要單詞查詢素材的數(shù)量,因此查詢效率上會比VDCP高,因為對單次查詢獲得的ID數(shù)量沒有限制。舉例如下:
VDCP-ID List,例舉返回10條素材的命令
發(fā)送-02023011bf
接收-02543091000a31323334352020203637383920202020…[checksum]
VDCP-Next,最多每次返回素材數(shù)量是10個,因此需要next命令繼續(xù)查詢
發(fā)送-02023002ce
接收-02543082000a…[checksum]
AMP-List First ID,只有先例舉出第一條ID以后,才能繼續(xù)往下查詢剩下的ID
發(fā)送-CMDS0008a2140000
接收-8a14000700053132333435
AMP-List Next ID,可以指定獲取ID數(shù)量,例子中舉例20條
發(fā)送-CMDS0006a11514
接收-8a140035000436373839000431323334…
2.6、刷新素材
VDCP協(xié)議通過發(fā)送命令獲取添加或者刪除ID列表的方式,來對自身ID緩存列表中的ID進行比對,如果有新的添加ID,就加入緩存,如果有需要刪除的ID,就從緩存信息中去掉;AMP協(xié)議在刷新ID列表上更簡潔,有單挑命令專門負責(zé)查詢。舉例如下:
VDCP-ID’s Added List/ID’s Deleted List,發(fā)送請求后,返回的是新增或者刪除的ID列表
(Add)發(fā)送-02023018b6,(Delete)發(fā)送-02023019b5
(Add)接收-02xx3098…[checksum],(Delete)接收-02xx3099…[checksum]
AMP-ID Changed List Request,返回的數(shù)據(jù)中,會包含ID Changed類型,包括重命名、刪除、增加、變換目錄、變換元數(shù)據(jù)等,想較VDCP而言,會精確很多。
發(fā)送-CMDS0004a012
接收-821300250002563a000764656661756c74…,AMP協(xié)議在接收的ID變換列表時,還包含一些ID所在目錄、盤符、長度等信息。
2.7、預(yù)卷,播出,停止,錄制
這些是視頻服務(wù)器內(nèi)基礎(chǔ)功能性的控制語句,VDCP協(xié)議和AMP在這些基礎(chǔ)控制命令上有著相似的結(jié)構(gòu)。舉例如下:
a.VDCP-Play Cue,預(yù)卷素材ID位“2517“的素材
發(fā)送-020a202432353137202020206d
接收-04
b.AMP-In Preset,對應(yīng)VDCP內(nèi)Play Cue命令
發(fā)送-CMDS00204a140006000432353137
接收-100111
c.VDCP-Play,播出當前素材,播出前需要先預(yù)卷好素材
發(fā)送-02021001
接收-04
d.AMP-Play
發(fā)送-CMDS00042001
接收-10011
e.VDCP-Stop,暫停當前播出素材
發(fā)送-02021000
接收-04
f.AMP-Stop
發(fā)送-CMDS00042000
接收-100111
g.VDCP-Record,錄制對應(yīng)通道的素材,在AMP協(xié)議中,首先要切換到對錄制通道的操作上。
發(fā)送-02021002
接收-04
h.AMP-Record
發(fā)送-CMDS00042002
接收-100111
三、VDCP和AMP協(xié)議轉(zhuǎn)換應(yīng)用
我臺新聞演播室采用Mosart集控化的操作方式,通過集控服務(wù)器連接演播室內(nèi)各類設(shè)備,并和新聞文稿流程深度融合,實現(xiàn)一鍵化、精準化的操作。雖然演播室內(nèi)大部分設(shè)備已經(jīng)接入集控系統(tǒng),但是由于Mosart集控不支持AMP播控協(xié)議,無法打通對GV T2硬盤服務(wù)器的控制。因此,為了方便節(jié)目部門使用,筆者嘗試通過將Mosart輸出的VDCP協(xié)議,轉(zhuǎn)換成AMP協(xié)議,達到控制T2的目的。
3.1、系統(tǒng)內(nèi)硬件連接方式
集控和T2的硬件連接框圖如圖所示,集控服務(wù)器、協(xié)議轉(zhuǎn)換軟件、T2硬盤服務(wù)器在演播室內(nèi)同一網(wǎng)段,都進入業(yè)務(wù)網(wǎng)交換機。VDCP和AMP協(xié)議的連接,均采用TCP/IP方式,協(xié)議轉(zhuǎn)換軟件作為協(xié)議匯聚核心,即是服務(wù)端,也是客戶端;作為服務(wù)端,協(xié)議轉(zhuǎn)換軟件和集控服務(wù)器進行對接,端口號是5010,接收VDCP命令,并進行轉(zhuǎn)換和回復(fù),作為客戶端,協(xié)議轉(zhuǎn)換軟件和T2硬盤服務(wù)器進行連接,端口號是3811,接收AMP命令,并進行轉(zhuǎn)換和回復(fù)。

3.2、系統(tǒng)內(nèi)軟件配置方式
3.2.1、集控系統(tǒng)的配置
a.打開VDCP(tcp)控制協(xié)議,端口號設(shè)置為5010,由于協(xié)議轉(zhuǎn)換軟件作為服務(wù)端,直接運行在集控服務(wù)器的機器上,因此Server地址設(shè)定為“127.0.0.1”.

b.配置播控端口,端口號1對應(yīng)控制T2上P1播出通道,端口號2對應(yīng)控制T2上P2播出通道。
c.其他配置,在集控服務(wù)器相關(guān)VDCP的配置中,再打開心跳監(jiān)測、素材自動刷新功能,并設(shè)定對應(yīng)的時間。
3.2.2、T2硬盤服務(wù)器的配置
a.在配置中,打開P1、P2播出通道的AMP協(xié)議功能,并指定通過AMP遙控的同時,能夠?qū)崿F(xiàn)本地操作。

b.回到主界面,選擇每個通道的控制模式為“遙控”。

c.指定默認視頻素材路徑“YJBJ”,T2內(nèi)可以新建多個文件夾存放素材,為了方便操作,防止播出時出現(xiàn)素材查詢錯誤,在連接上T2硬盤服務(wù)器后,應(yīng)指定專門目錄并初始化,該目錄下的素材能夠被協(xié)議轉(zhuǎn)換軟件讀取并控制。

3.3、Mosart集控服務(wù)器內(nèi)VDCP播控流程分析
集控服務(wù)器內(nèi)對VDCP的操作包含在連個服務(wù),MediaSerach(MMMediaAdministrator)服務(wù)和MediaPlayout(MMAVAutomation)服務(wù),MediaSearch服務(wù)視頻ID的查詢、更新,以及獲取對應(yīng)視頻的時長;Media Playout服務(wù)主要負責(zé)VDCP心跳監(jiān)測、視頻的預(yù)卷、播出、暫停等的控制命令,兩個服務(wù)同時打開,才能保證集控服務(wù)器對VDCP視頻服務(wù)器的正常查詢和操作。
3.3.1、MediaSearch服務(wù)的流程框圖

通過讀取ClipServerVDCP.xml配置文件,和視頻服務(wù)器進行連接,當連接成功并打開“LoadDatabase”選項后,同步進行查詢素材和更新素材兩項操作。
查詢素材通過ListIds(0x11)命令,當返回素材ID數(shù)量等于10的時候,繼續(xù)使用Next(0x02)命令查詢,知道查詢獲取完所有素材ID,之后根據(jù)素材ID,通過SizeRequest(0x14)命令,獲取視頻素材時長,并存入緩存。
更新素材通過ListIdsAdded/ListIdsDeleted(0x18/0x19),通過返回的命令獲取添加/刪除素材的ID,當添加/刪除素材的ID數(shù)等于10的時候,繼續(xù)發(fā)送Next(0x11)查詢命令,直到所有素材查詢完畢,最后再更新緩存中的視頻素材。
3.3.2、Media Playout服務(wù)流程框圖
包含選擇播出端口、預(yù)卷素材、播出素材。選擇播出端口,Mosart服務(wù)器的播出端口配置中,打開了Port1和Port2兩個播控端口,當VDCP協(xié)議需要通過端口發(fā)送命令時,首先需要確定播出端口,即SelectPort(0x22),當選擇的端口沒有打開時,重新返回OpenPort(0x01),直到對應(yīng)端口打開,然后繼續(xù)接下來的播控操作。

預(yù)卷指定ID的視頻,集控服務(wù)器內(nèi)部提供了多種預(yù)卷素材的方法,可以預(yù)卷默認的素材(IgnoreClipExistence=true),也可以選擇預(yù)卷到素材指定幀(IgnoreClipExistence=false),當選擇預(yù)卷指定素材后,先要獲取素材并放到播出緩存中(RequestID),然后再次確認素材長度(SizeRequest),最后選擇指定預(yù)卷素材端口(SelectPort),并對素材進行預(yù)卷。我們演播室應(yīng)用中一般都是預(yù)卷到視頻素材的開頭,因此“StartFrame=0”并直接使用CuePlay命令。

播出素材,首先選擇播出端口(SelectPort),然后選擇參照的播出速率,演播室內(nèi)素材按照正常速率播出,即“Playing rate=1”,在播出命令上直接使用Play命令。

3.4、協(xié)議轉(zhuǎn)換軟件程序設(shè)計
3.4.1、程序流程框圖

協(xié)議轉(zhuǎn)換軟件接收Mosart集控發(fā)送的VDCP播控命令,轉(zhuǎn)換成AMP播控命令,再發(fā)送給T2硬盤服務(wù)器,同時接收T2硬盤服務(wù)器內(nèi)AMP命令的返送,轉(zhuǎn)換成VDCP命令,再發(fā)送給Mosart服務(wù)器,協(xié)議轉(zhuǎn)換軟件的設(shè)計流程如下,VDCP和AMP的收發(fā)同時進行,不存在延時,這樣能夠保持播控命令的高效實時性。
3.4.2、關(guān)鍵代碼部分
初始化播出目錄
AMP協(xié)議中規(guī)定播出素材需要指定目錄,在T2或者K2中,默認素材目錄是”Default”,可以通過AMP協(xié)議中相關(guān)命令指定默認目錄,并且當有素材需要預(yù)卷的時候,AMP協(xié)議規(guī)定,必須打開“AutoMode”模式,因此,我們在第一次打開AMP播出通道的端口后,需要對默認目錄和工作模式也做相應(yīng)的初始化,代碼如下:

心跳連接
AMP協(xié)議中不存在心跳命令,當VDCP協(xié)議發(fā)送心跳命令時,程序直接返回心跳給VDCP,而不再查詢AMP設(shè)備的連接狀態(tài),代碼如下:

]獲取素材ID列表
AMP和VDCP協(xié)議獲取ID列表的方式不一樣,VDCP協(xié)議直接發(fā)查詢命令(ID List),返回最多10條ID信息,AMP協(xié)議首先獲取第一條ID(First ID List),然后通過查詢獲取剩余的ID信息,程序中為了協(xié)議轉(zhuǎn)換的順利,當VDCP協(xié)議發(fā)送查詢命令時,AMP先查詢第1條,之后再查詢9條,把總的10條ID信息返回給VDCP設(shè)備,代碼如下:

3.4.3、程序連接測試
此次測試以我臺3號全媒體演播室為準,3號演播室集成有Mosart集控系統(tǒng)以及T2硬盤服務(wù)器,T2硬盤服務(wù)器作為信號錄制和播出的備份通道,之前由于Mosart集控不支持AMP協(xié)議,一直沒有跟T2對接。此次測試,我們在Mosart集控服務(wù)器本地安裝VDCP轉(zhuǎn)AMP軟件,并進行了相關(guān)配置操作。
Mosart集控本地對接VDCP轉(zhuǎn)AMP軟件,端口號5010,T2映射到集控對應(yīng)的虛擬通道時C和D,如圖所示,當Mosart集控中Media Playout(MMAVAutomation)服務(wù)連上VDCP轉(zhuǎn)AMP后,每隔10秒發(fā)送心跳測試,當收到回復(fù)以后,C和D通道狀態(tài)顯示正常。

當Mosart集控中MediaSerach(MMMediaAdministrator)服務(wù)連接上VDCP轉(zhuǎn)AMP后,首先發(fā)送VDCP命令,獲取T2硬盤服務(wù)器內(nèi)所有素材ID,然后根據(jù)每條ID查詢素材長度,最后每隔25秒發(fā)送素材更新查詢(ID’s Added List/ID’s Deleted List),查詢狀態(tài)和命令如下:

當查詢到T2素材并獲取到時長后,Mosart集控服務(wù)器內(nèi)顯示素材狀態(tài)正常,并可以播出。

四、總結(jié)
此次VDCP到AMP協(xié)議的探索和應(yīng)用,打通了我臺演播室內(nèi)集控服務(wù)器和T2硬盤服務(wù)器的連接,將T2的播放融入全媒體節(jié)目的制作應(yīng)用中,減少了操作人員,并提高了安全性。
同時,此次探究過程中,筆者也深入了解了VDCP和AMP兩大播控協(xié)議的優(yōu)劣,VDCP協(xié)議再素材的刷新上每次最多只能遍歷10個素材,相較于AMP協(xié)議的自定義刷新數(shù)量,效率上會低一點;AMP協(xié)議在素材的ID的長度、格式上不做限制,VDCP需要根據(jù)素材長度是固定還是可變,設(shè)置不同的收發(fā)命令,因此在傳輸上,AMP協(xié)議會顯得更加靈活;VDCP對比AMP協(xié)議,在操控命令上更加多樣,并且能支持更多視音頻的相關(guān)操作,在廣度和功能性上比AMP協(xié)議更強大。
VDCP和AMP兩大播控協(xié)議已經(jīng)誕生很長一段時間,并且還在不斷發(fā)展修改,它們各有特點,都能提供標準化的播控解決方案,這給廣電在融媒發(fā)展上提供了更多可能性。