張 平
(株洲中車時(shí)代電氣股份有限公司,湖南 株洲 412001)
在進(jìn)行復(fù)雜視頻監(jiān)控系統(tǒng)的設(shè)計(jì)、構(gòu)建和維護(hù)過程中,經(jīng)常面臨部件的兼容性問題。復(fù)雜視頻監(jiān)控系統(tǒng)往往需要兼容不同類型的底層非自研部件,以實(shí)現(xiàn)良 好的互換性[1]。但是,由于不同供應(yīng)商對(duì)于同一部件的設(shè)計(jì)思路存在差異,而且將其內(nèi)部的實(shí)現(xiàn)原理作為商 業(yè)機(jī)密進(jìn)行保密,這就不可避免地造成視頻編碼板在 應(yīng)用層與不同供應(yīng)商所提供的底層軟、硬件不兼容。
成熟的產(chǎn)品一般通過起草產(chǎn)品標(biāo)準(zhǔn)的方式來實(shí)現(xiàn)接口和協(xié)議的統(tǒng)型,但在產(chǎn)品的實(shí)際應(yīng)用過程中,難以達(dá)到部件級(jí)的統(tǒng)型和互換[2-3]。而直接對(duì)上層軟、硬件 設(shè)計(jì)進(jìn)行改動(dòng),可能會(huì)降低整個(gè)產(chǎn)品的穩(wěn)定性,大大增加技術(shù)風(fēng)險(xiǎn),尤其是在檢修過程中,無法進(jìn)行部件級(jí)替換,整體替換則會(huì)帶來高昂的檢修成本[4]。因此,盡可能利用軟件方式來處理底層軟、硬件設(shè)計(jì)差異,是最有優(yōu)勢(shì)的方案。為此,針對(duì)機(jī)車車載安全防護(hù)系統(tǒng)機(jī)車自動(dòng)視頻監(jiān)控及記錄子系統(tǒng)(簡(jiǎn)稱“6A 視頻子系統(tǒng)”)編碼板的兼容性問題,本文提出基于軟件中間件的多類型視頻編碼板兼容性設(shè)計(jì)方案,從板卡識(shí)別、視頻碼流獲取、關(guān)系解耦、差異注冊(cè)以及動(dòng)態(tài)庫(kù)加載等方面分析研究,設(shè)計(jì)了一個(gè)獨(dú)立的軟件中間件,在上層軟、硬件無改動(dòng)的情況下,實(shí)現(xiàn)多個(gè)類型視頻編碼板的兼容。
6A 視頻子系統(tǒng)主要實(shí)現(xiàn)機(jī)車各個(gè)監(jiān)控區(qū)域的視 頻數(shù)據(jù)采集、傳輸、存儲(chǔ)和顯示等功能。該系統(tǒng)通過記 錄司機(jī)室、機(jī)械間等位置及前方路況的視頻信息,并關(guān)聯(lián)機(jī)車運(yùn)行狀態(tài)數(shù)據(jù),為機(jī)車運(yùn)用過程中的故障和事故分析提供重要依據(jù)。
6A視頻子系統(tǒng)主要由視頻采集模塊、視頻編碼模塊、視頻處理模塊和視頻顯示終端組成[5-6]。視頻采集模塊通過同軸模擬信號(hào)與視頻編碼模塊連接,視頻編碼模塊、視頻處理模塊和視頻顯示終端通過以太網(wǎng)交換機(jī)建立局域網(wǎng)鏈路。6A 視頻子系統(tǒng)的架構(gòu)如圖1所示。
圖1 6A 視頻子系統(tǒng)架構(gòu)Fig.1 Architecture of 6A video subsystem
視頻采集模塊包括前端攝像機(jī)系統(tǒng)及接口,為視 頻編碼模塊提供實(shí)時(shí)視頻信號(hào)。為了覆蓋機(jī)車各個(gè)關(guān)鍵監(jiān)測(cè)部位,視頻采集模塊支持14路攝像機(jī)和2路音頻。攝像機(jī)采用同軸電纜與視頻編碼模塊連接。
視頻編碼模塊由一塊或者多塊視頻編碼板組成,接收來自視頻采 集模塊獲取的視頻信號(hào),并對(duì)其按指定格式(如 H.264、MPEG等)進(jìn)行編碼,同時(shí)將信息疊加和編碼壓縮后的碼流通過以太網(wǎng)發(fā)送至視頻處理設(shè)備,如視頻處理模塊和視頻顯示終端。
視頻處理模塊由板載計(jì)算機(jī)系統(tǒng)和大容量存儲(chǔ)單元構(gòu)成,主要完成視頻碼流的處理和記錄存儲(chǔ),并為視頻系統(tǒng)的控制和參數(shù)設(shè)置提供相應(yīng)的服務(wù);視頻顯示終端通過以太網(wǎng)接收來自視頻編碼模塊的視頻碼流,對(duì)視頻碼流進(jìn)行解碼后,將實(shí)時(shí)的視頻圖像顯示在視頻顯示終端上[7]。
在設(shè)計(jì)視頻編碼模塊時(shí),各廠商通常會(huì)對(duì)視頻采集端攝像頭進(jìn)行兼容性設(shè)計(jì),確保輸出 PAL 或 NTSC 制 式的標(biāo)準(zhǔn)信號(hào),兼容常規(guī)的視頻編碼格式(如H.264、MPEG),實(shí)現(xiàn)攝像頭的互換性[8]。但不同品牌的視頻編碼模塊、視頻處理模塊和視頻顯示終端往往根據(jù)自定義私有協(xié)議進(jìn)行通信,形成了各模塊間的交叉依賴和綁定關(guān)系。當(dāng)需要替換其中一部分模塊時(shí),必須采購(gòu)?fù)黄放频漠a(chǎn)品才能進(jìn)行替換。解耦這種綁定關(guān)系并實(shí)現(xiàn)各個(gè)部件之間的完全兼容替代,是視頻監(jiān)控系統(tǒng)持續(xù)走向標(biāo)準(zhǔn)化和互聯(lián)互通的關(guān)鍵[9-10]。
完全的兼容意味著可以實(shí)現(xiàn)任意部件的動(dòng)態(tài)更換,這就要求視頻編碼板在系統(tǒng)運(yùn)行過程中,可以通過熱拔 插的方式進(jìn)行更換,并確保系統(tǒng)的功能得到立即的恢 復(fù)[11]。通過分析6A視頻子系統(tǒng)的架構(gòu)和關(guān)聯(lián)關(guān)系可以發(fā)現(xiàn),要實(shí)現(xiàn)部件級(jí)的替代,主要的困難就是在如何實(shí)現(xiàn)視頻處理模塊與不同類型的編碼板之間的兼容。
由于設(shè)計(jì)思路和理念的不同,不同類型的視頻編 碼板在硬件上和軟件的實(shí)現(xiàn)原理上通常都有著較大的差異。為了保證6A視頻子系統(tǒng)在多塊不同類型視頻編碼板的情況下能正常工作,首先需要對(duì)不同類型的編碼板進(jìn)行識(shí)別;其次,需要對(duì)這些視頻編碼板分別進(jìn)行資源加載、初始化以及視頻碼流獲取,以實(shí)現(xiàn)不同視頻編碼板關(guān)系上的解耦。
為了達(dá)到視頻編碼板的兼容,在視頻系統(tǒng)設(shè)計(jì)時(shí) 可以從電氣接口、通信協(xié)議和軟件調(diào)用接口等方面直 接進(jìn)行嚴(yán)格約定來實(shí)現(xiàn);但實(shí)際操作上,受限于市場(chǎng)中各個(gè)互相競(jìng)爭(zhēng)廠家可以接受的開放程度及項(xiàng)目已經(jīng)大量投入使用并進(jìn)入維護(hù)檢修周期的現(xiàn)狀,這些方案難 以被推動(dòng)。而另一種方式,就是在軟件層面上構(gòu)建一個(gè)中間件,將已經(jīng)定型和應(yīng)用的軟硬件、接口和協(xié)議上的差異進(jìn)行屏蔽,提供統(tǒng)一的操作接口。為此,本文所設(shè)計(jì)的方案中開發(fā)了一個(gè)名為Midware.dll 的軟件中間件動(dòng)態(tài)庫(kù)。
6A 視頻子系統(tǒng)中,視頻編碼板通過以太網(wǎng)交換機(jī)與視頻處理模塊連接,使用用戶數(shù)據(jù)報(bào)協(xié)議(user datagram protocol,UDP)建立通信鏈路,模塊間的通信機(jī)制如圖2所示。
圖2 編碼板與視頻處理模塊/視頻顯示終端間的通信機(jī)制Fig.2 Communication mechanism between encoding boards and video processing module/display
首先,視頻處理模塊或者視頻顯示終端程序通過 socket 與視頻編碼板建立UDP 連接,并向視頻編碼板 發(fā)送請(qǐng)求報(bào)文;然后,視頻編碼板周期性地向視頻處理模塊或者視頻顯示終端發(fā)送編碼板類型信息報(bào)文;最后視頻編碼板收到應(yīng)答報(bào)文后停止發(fā)送編碼板類型信息報(bào)文。若視頻編碼板無法收到應(yīng)答報(bào)文,則會(huì)在連續(xù)發(fā)送10個(gè)周期(每個(gè)周期1 s)后,停止發(fā)送編碼板類型報(bào)文,并將故障指示燈點(diǎn)亮,提示需要重新拔插板卡以恢復(fù)正常功能。
經(jīng)過一個(gè)完整的通信流程,視頻處理模塊或視頻顯示終端可以獲取當(dāng)前接入系統(tǒng)的視頻編碼板的類型信息,為后續(xù)對(duì)板卡進(jìn)行視頻通道初始化和動(dòng)態(tài)庫(kù)的調(diào)用提供依據(jù)。
通過視頻編碼板與視頻處理模塊和視頻顯示終端的通信,6A視頻子系統(tǒng)可以獲取到當(dāng)前接入系統(tǒng)的視頻編碼板類型信息。當(dāng)視頻編碼模塊只由一種類型編碼板組成時(shí),為便于對(duì)多塊視頻編碼板在軟件上進(jìn)行統(tǒng)一的管理,通常視頻處理軟件對(duì)多塊板卡的操作是同時(shí)進(jìn)行的,比如,對(duì)視頻編碼板進(jìn)行視頻通道初始化和視頻碼流獲取等操作。但隨著6A視頻子系統(tǒng)的長(zhǎng)期應(yīng)用和維護(hù),可能會(huì)存在多種類型編碼板混用的需求,在這種情況下,需要對(duì)不同類型的視頻編碼板進(jìn)行獨(dú)立的操作,以避免出現(xiàn)沖突。
從系統(tǒng)集成的需求層面,各編碼板提供的基本功 能是沒有差別的,在硬件接口上也容易保持一致。在既要保證當(dāng)前系統(tǒng)能夠同時(shí)兼容多個(gè)類型的編碼板,又要盡可能減少軟、硬件修改工作量的情況下,可以在 程序中涉及針對(duì)不同板卡需要獨(dú)立進(jìn)行操作的函數(shù)中引入enc變量。其中,enc=1,代表編碼板1;enc=2,代表編碼板2;多塊編碼板存在時(shí),可以依次類推。將此值保存在各不同類型編碼板中,建立一一對(duì)應(yīng)的規(guī)則,以后在每次對(duì)編碼板進(jìn)行操作時(shí),均需提前判斷該變量的值。如此,在進(jìn)行故障替換和檢修維護(hù)時(shí),可以做到6A視頻子系統(tǒng)中不同類型編碼板混插的完全解耦,解耦前后差異如圖3所示。
圖3 不同類型編碼板關(guān)系解耦前后對(duì)比Fig.3 Comparison of different types of encoding boards before and after relationship decoupling
圖4 動(dòng)態(tài)庫(kù)調(diào)用機(jī)制Fig.4 Dynamic library call mechanism
6A 視頻子系統(tǒng)中只有唯一的編碼板類型時(shí),對(duì)相應(yīng)類型編碼板提供的動(dòng)態(tài)庫(kù)av_codec.dll 加載只需直接進(jìn)行即可,甚至可以將動(dòng)態(tài)庫(kù)av_codec.dll在編譯時(shí)進(jìn)行無需指定的隱式加載,接口函數(shù)通過av_codec.h頭文件進(jìn)行聲明引入視頻處理程序中。當(dāng)存在多種類型的板卡時(shí),就需要按照不同類型的板卡來加載對(duì)應(yīng)的動(dòng)態(tài)庫(kù)。為滿足各編碼板為不同類型的板卡時(shí)的情況,還需要對(duì)所有視頻編碼板的動(dòng)態(tài)庫(kù)進(jìn)行分別加載,這個(gè)加載的過程都由Midware.dll中間件來完成。
類型數(shù)量的增加也意味著動(dòng)態(tài)庫(kù)數(shù)量的增加,為 了便于維護(hù)并保持程序調(diào)用結(jié)構(gòu)的清晰,只將 Midware.dll.存放于程序當(dāng)前目錄。如:將針對(duì)3種類型的動(dòng)態(tài)庫(kù)分別存放在程序當(dāng)前目錄下的01、02和03目錄,動(dòng)態(tài)庫(kù)分別命名為av_codec1.dll、av_codec2.dll 和 av_codec3.dll。Midware.dll 根據(jù)對(duì)板卡類型信息的識(shí)別結(jié)果,決定調(diào)用哪一類型視頻編碼板所對(duì)應(yīng)的動(dòng)態(tài)庫(kù),動(dòng)態(tài)庫(kù)的調(diào)用機(jī)制如圖 4 所示。
經(jīng)過類型識(shí)別和編碼板關(guān)聯(lián)關(guān)系的解耦,再對(duì)視 頻編碼板分別按照對(duì)應(yīng)類型編碼板的接口動(dòng)態(tài)庫(kù)進(jìn)行加載,調(diào)用對(duì)應(yīng)的視頻通道初始化函數(shù),最終通過不同的函數(shù)接口,實(shí)現(xiàn)不同類型編碼板的視頻碼流獲取。在實(shí)際運(yùn)用中,為了保證數(shù)據(jù)記錄的連續(xù)性,通常不允許對(duì)系統(tǒng)進(jìn)行斷電,只有支持直接對(duì)視頻編碼板進(jìn)行 帶電拔插和替換,才能達(dá)到上層應(yīng)用與底層軟、硬件的完全兼容。
在視頻編碼板上電之后,需要對(duì)視頻通道進(jìn)行初始化,準(zhǔn)備好系統(tǒng)緩存和操作句柄資源,以及對(duì)視頻通道號(hào)、分辨率、碼率、幀率等關(guān)鍵初始的設(shè)置參數(shù)進(jìn)行賦值,最后才可以調(diào)用匹配的動(dòng)態(tài)庫(kù)函數(shù)獲取視頻碼流。不同類型的視頻編碼板,其視頻通道初始化操作可能會(huì)不一樣,因此,需要進(jìn)行不同的視頻通道初始化處理。以A、B兩種類型的視頻編碼板為例,在進(jìn)行6A視頻子系統(tǒng)統(tǒng)型的過程中,A 類型的視頻編碼板采用一次調(diào)用同時(shí)對(duì)所有編碼板初始化的方式,而另B 類型則采用分別初始化的方式。此前的系統(tǒng)是對(duì)所有編碼板一次性初始化,新增B類型編碼板之后,如果系統(tǒng)中編碼板1 和2 分別是A、B 不同類型的編碼板,系統(tǒng)還是認(rèn)為只初始化一次即可,不再對(duì)編碼板2 進(jìn)行初始化,這就將導(dǎo)致編碼板2 未初始化,無法正常工作;為了適配新增類型編碼板,系統(tǒng)增加對(duì)B 類型編碼板的初始化支持,但新的問題是:如果編碼板1是B類型的板卡,編碼板2是A類型的板卡,正常運(yùn)行過程中重新拔插編碼板1(B類型),系統(tǒng)在完成編碼板1初始化后將編碼板2 再次初始化,這就會(huì)出現(xiàn)兩次初始化編碼板2的問題,導(dǎo)致視頻信號(hào)中斷。
為了解決以上所述問題,在初始化板卡視頻通道時(shí),利用獲取到各個(gè)板卡的類型信息,為每個(gè)類型板卡增加一個(gè)表示初始化狀態(tài)的靜態(tài)變量標(biāo)識(shí)。初始化狀態(tài)初始值設(shè)置為0,首先對(duì)編碼板1視頻通道進(jìn)行初始化操作,完成編碼板1的視頻通道初始化后,將該靜態(tài)變量自增1。編碼板2的視頻通道初始化在進(jìn)行視頻處理模塊或視頻顯示終端與編碼板2 的UDP 通信之后,系統(tǒng)獲取到編碼板2 的類型信息,如果該板卡與編碼板1相同類型,靜態(tài)變量保持為1,不再進(jìn)行初始化;如果該板塊與編碼板1不同類型,則使用新的靜態(tài)變量,其值為0,系統(tǒng)對(duì)編碼板2 進(jìn)行單獨(dú)的視頻通道初始化;每塊編碼板根據(jù)靜態(tài)變量的狀態(tài)單獨(dú)初始化,并進(jìn)行狀態(tài)保持,避免多次實(shí)現(xiàn)不同類型的編碼板導(dǎo)致的重復(fù)初始化問題,達(dá)到完全的初始化操作解耦目的。其流程圖如圖5所示。
圖5 改進(jìn)后的視頻通道初始化流程Fig.5 Flowchart of improved video channel initialization
完成視頻通道的初始化之后,直接調(diào)用加載后的 視頻碼流獲取函數(shù),此時(shí)加載的函數(shù)均可以與不同類 型編碼板實(shí)現(xiàn)一一對(duì)應(yīng),視頻碼流可以被正確獲取。后續(xù)對(duì)視頻碼流的存儲(chǔ)和處理均只在視頻處理模塊內(nèi)進(jìn)行,不再因視頻編碼板類型的不同而出現(xiàn)兼容性問題。
對(duì)于6A視頻子系統(tǒng)所使用的各品牌的編碼板,當(dāng)新的板卡被插入機(jī)箱接入系統(tǒng)時(shí),視頻處理模塊上運(yùn) 行的視頻處理軟件會(huì)檢測(cè)到該動(dòng)作,并調(diào)用相關(guān)函數(shù)進(jìn)行板卡識(shí)別,然后對(duì)視頻通道進(jìn)行初始化,加載對(duì)應(yīng)類型的動(dòng)態(tài)庫(kù)。
在對(duì)編碼板進(jìn)行動(dòng)態(tài)混插替換時(shí)可以發(fā)現(xiàn),當(dāng)視 頻編碼板被帶電拔出、換成另一塊視頻編碼板時(shí),視頻處理模塊和視頻顯示終端都無法獲取那塊新插入的視頻編碼板的數(shù)據(jù)流。對(duì)該板卡進(jìn)行ping操作,可以發(fā)現(xiàn)網(wǎng)絡(luò)也是不通的;但實(shí)際上,網(wǎng)絡(luò)硬件鏈路上沒有任何問題。如果此時(shí)對(duì)整個(gè)系統(tǒng)斷電重啟,所有不同類 型的編碼板都可以正常運(yùn)行,且網(wǎng)絡(luò)沒有異常的情況。進(jìn)一步進(jìn)行測(cè)試可以發(fā)現(xiàn),此現(xiàn)象與所采用的視頻編 碼板的廠家無關(guān),因此懷疑為網(wǎng)絡(luò)協(xié)議上的問題。
經(jīng)過反復(fù)重現(xiàn)該問題,發(fā)現(xiàn)在換掉視頻編碼板時(shí),接入網(wǎng)絡(luò)的視頻處理模塊和視頻顯示終端對(duì)視頻編碼板的IP 和介質(zhì)訪問控制(media access control address,MAC)地址進(jìn)行了緩存,地址解析協(xié)議(address resolution protocol,ARP)將有限數(shù)量的IP 地址映射到了它們的物理適配器地址的計(jì)算機(jī)內(nèi)存的表中。即當(dāng)編碼板進(jìn)行動(dòng)態(tài)移除,新板卡又在帶電狀態(tài)下接入系統(tǒng)時(shí),由于新板卡的IP地址與被替換的板卡的IP地址相同,而MAC地址卻是不同的,這就會(huì)導(dǎo)致在進(jìn)行網(wǎng)絡(luò)通信時(shí)地址綁定不成功,出現(xiàn)無法接入網(wǎng)絡(luò)的現(xiàn)象。文獻(xiàn)[12]對(duì)該問題進(jìn)行了討論,并提供了多種清理ARP緩存的方法。
鑒于此,解決該問題的思路就是要在檢測(cè)到編碼 板進(jìn)行動(dòng)態(tài)替換動(dòng)作時(shí),清除視頻處理模塊和視頻顯 示終端中的ARP緩存,使得新接入的板卡能夠被正確 地識(shí)別。ARP緩存清理的流程如圖6所示。
圖6 ARP 緩存清理流程Fig.6 Flowchart of ARP cache cleanup
以本文所述6A視頻子系統(tǒng)為例,視頻處理模塊和視頻顯示終端均采用XPE嵌入式操作系統(tǒng),XPE 操作系統(tǒng)自帶了一個(gè)arp.exe 的命令行工具,可以在檢測(cè)到新板卡接入系統(tǒng)時(shí)在視頻處理程序和視頻顯示終端插件程序中調(diào)用命令“arp-d IP地址”,清除系統(tǒng)中對(duì)應(yīng)IP地址的ARP 緩存。但是直接調(diào)用命令行程序時(shí),會(huì)出現(xiàn)命令行界面彈窗,這在視頻顯示終端中是絕對(duì)不允許的。為此,采用了文獻(xiàn)[13]中所述的靜默調(diào)用方法,以后臺(tái)運(yùn)行的方式避免命令行界面的彈出,通過系統(tǒng)函數(shù)CreateProcess 創(chuàng)建新的進(jìn)程,以無窗口顯示的方式執(zhí)行命令行指令,可實(shí)現(xiàn)板卡動(dòng)態(tài)替換時(shí),在板卡識(shí)別通信之前進(jìn)行一次ARP緩存的清理,解決了更換板卡后因網(wǎng)絡(luò)連接失敗而無法獲取碼流的問題。
視頻編碼板的兼容性在產(chǎn)品上主要體現(xiàn)在兩個(gè)方面:其一是不同編碼板與視頻處理模塊和顯示終端之間混合運(yùn)行的兼容,其二是視頻編碼模塊之間動(dòng)態(tài)替換的兼容。為驗(yàn)證所提技術(shù)方案的可行性,本文設(shè)計(jì)了兩項(xiàng)不同的驗(yàn)證試驗(yàn),以確認(rèn)該方案的實(shí)際效果,并選取在業(yè)內(nèi)最具備代表性的3 個(gè)品牌(海康HK、大華DH、宇視YS)的視頻編碼板和2套不同品牌的視頻處理模塊、顯示終端進(jìn)行試驗(yàn)。
本文對(duì)3 個(gè)品牌的視頻編碼板進(jìn)行交叉分組,以確保不同組合形式的視頻系統(tǒng)均可以得到驗(yàn)證測(cè)試;同時(shí),設(shè)置只含一個(gè)品牌編碼板的對(duì)照組。試驗(yàn)時(shí),根據(jù)各個(gè)不同組合的順序,按照?qǐng)D1 的架構(gòu)搭建視頻系統(tǒng),并使所有模塊同時(shí)上電運(yùn)行。
通過視頻處理模塊和顯示終端對(duì)系統(tǒng)中各個(gè)編碼板的視頻取流、存儲(chǔ)顯示、板卡啟動(dòng)時(shí)長(zhǎng)差異(重復(fù)10 次取平均值)進(jìn)行測(cè)試,各測(cè)試組合的測(cè)試結(jié)果如表1所示??梢钥闯觯缓? 個(gè)品牌編碼板的對(duì)照組,由于兩塊編碼板一次初始化就可以完成啟動(dòng),幾乎不存在啟動(dòng)時(shí)長(zhǎng)的差異,各視頻通道可以同時(shí)開始記錄和顯示;混合運(yùn)行情況下,各不同組合的混合編碼板均能夠被正確識(shí)別,并正常實(shí)現(xiàn)取流和存儲(chǔ)顯示功能,但交叉混合的視頻編碼板測(cè)試組各板卡在加載時(shí)間上略有增加,其中,不同視頻編碼板混合運(yùn)行時(shí),加載時(shí)間有較為明顯的增加,造成了一定的啟動(dòng)延遲,啟動(dòng)時(shí)差達(dá)到了2 s,部分視頻通道會(huì)表現(xiàn)出稍晚開始記錄和顯示的現(xiàn)象。
表1 混合運(yùn)行兼容測(cè)試結(jié)果Table 1 Compatibility test results in mixed operation
試驗(yàn)分別測(cè)試了視頻編碼板在只含一個(gè)品牌編碼板的對(duì)照組以及混插模式下的動(dòng)態(tài)替換效果。通過對(duì)上電狀態(tài)下動(dòng)態(tài)替換板卡后視頻處理模塊和顯示終端對(duì)系統(tǒng)中各個(gè)編碼板的系統(tǒng)恢復(fù)所需時(shí)長(zhǎng)(重復(fù)10次取平均值)進(jìn)行測(cè)試,并設(shè)置同品牌兩個(gè)視頻編碼板的對(duì)照測(cè)試組,各個(gè)測(cè)試組合 的測(cè)試結(jié)果見表2。
表2 動(dòng)態(tài)替換測(cè)試結(jié)果Table 2 Dynamic replacement test results
動(dòng)態(tài)替換測(cè)試的結(jié)果顯示,只含1 個(gè)品牌編碼板的對(duì)照組進(jìn)行動(dòng)態(tài)替換時(shí),其恢復(fù)時(shí)長(zhǎng)與動(dòng)態(tài)檢測(cè)板卡插入的周期(每秒檢測(cè))接近;而在混插模式下,在上電狀態(tài)下的各種動(dòng)態(tài)混插操作,不同品牌的視頻編碼板重新加載所需時(shí)間有所不同,但均可以在3 s內(nèi)實(shí)現(xiàn)對(duì)新替換的視頻編碼板的識(shí)別、視頻取流和顯示存儲(chǔ),滿足現(xiàn)場(chǎng)在不斷電狀態(tài)下的視頻編碼板動(dòng)態(tài)更換要求。
當(dāng)前6A 視頻子系統(tǒng)在國(guó)內(nèi)“和諧號(hào)”機(jī)車上裝車超過8 000 套,超過6 家供應(yīng)商提供不同類型的6A 視頻子系統(tǒng),往往在同一個(gè)鐵路局就存在多種類型6A視頻子系統(tǒng)。在沒有實(shí)現(xiàn)編碼板部件級(jí)兼容替換時(shí),因混插使用導(dǎo)致的故障十分常見,現(xiàn)場(chǎng)維護(hù)工作量大[14]。實(shí)際上,最好的情況仍然是在產(chǎn)品設(shè)計(jì)的前期,從統(tǒng)一技術(shù)規(guī)范的角度限定方案的設(shè)計(jì)思路,并在板卡替換的層面上實(shí)現(xiàn)統(tǒng)型。對(duì)于已經(jīng)裝車應(yīng)用的產(chǎn)品,采用本文所述的技術(shù)方案,則是當(dāng)前情況下一種相對(duì)較好的應(yīng)對(duì)方式。
通過采用本文所提出的多類型視頻編碼板兼容性設(shè)計(jì),可以完全消除混插帶來的不利影響,且為各鐵路局在應(yīng)用過程中備品的采購(gòu)提供更多的選擇。
由于采用了完全獨(dú)立的編碼動(dòng)態(tài)接口函數(shù)加載機(jī)制,所有編碼板在運(yùn)行過程中處于獨(dú)立的狀態(tài),即使個(gè)別編碼板出現(xiàn)故障,其故障范圍可只局限于所轄范圍內(nèi)少數(shù)的視頻通道,這就大幅提升了系統(tǒng)的可用性和穩(wěn)定性。此外,得益于本文所設(shè)計(jì)的動(dòng)態(tài)熱拔插加載技術(shù),在檢修過程中,對(duì)故障板卡的更換可以在不斷電的情況下進(jìn)行,保證了數(shù)據(jù)記錄的完整性。
統(tǒng)計(jì)蘭州鐵路局所有6A 視頻子系統(tǒng)應(yīng)用視頻編碼板兼容性設(shè)計(jì)前后1年時(shí)間周期的故障率和平均單臺(tái)車故障處理時(shí)長(zhǎng),結(jié)果如表3 所示??梢钥闯觯收下食霈F(xiàn)了較大幅度的下降,單臺(tái)車故障處理時(shí)間由3 h縮減為1 h。
表3 視頻編碼板兼容性設(shè)計(jì)的應(yīng)用效果Table 3 The application effect of compatibility design for video encoding board
視頻編碼板的兼容性設(shè)計(jì),可為機(jī)車C5/C6 修程 下的6A 視頻子系統(tǒng)部件檢修更換節(jié)省大量成本[15]。視頻編碼板成本約占據(jù)整個(gè)6A 視頻子系統(tǒng)的四分之一,在未采用部件級(jí)替換的兼容性設(shè)計(jì)前,為了適配視頻編碼板和視頻處理模塊,不得不大量成套更換6A視頻子系統(tǒng)的插件板卡;而采用視頻編碼板兼容性設(shè)計(jì)后,視頻編碼板將可以匹配全部的視頻處理模塊,且可以混合使用,這就實(shí)現(xiàn)了檢修成本的大幅下降。
本文以視頻系統(tǒng)的部件級(jí)兼容替換難題為切入 點(diǎn),針對(duì)機(jī)車6A視頻子系統(tǒng),從板卡識(shí)別、視頻碼流獲取、關(guān)系解耦和差異注冊(cè)以及動(dòng)態(tài)庫(kù)加載等方面,設(shè)計(jì)了一種獨(dú)立的軟件中間件,其在上層軟、硬件無須進(jìn)行任何改動(dòng)的情況下,可實(shí)現(xiàn)多個(gè)類型視頻編碼板產(chǎn)品的便捷互換。本文所提出的技術(shù)在國(guó)內(nèi)“和諧號(hào)”機(jī)車6A 視頻子系統(tǒng)中的應(yīng)用,大幅地提升了維護(hù)的便捷性,避免了混插應(yīng)用帶來的兼容性問題,并在檢修維保中達(dá)到了降本增效的目標(biāo)。
根據(jù)試驗(yàn)得到的結(jié)果和實(shí)際應(yīng)用經(jīng)驗(yàn),混合運(yùn)行兼容場(chǎng)景下板卡的加載所需時(shí)長(zhǎng)仍有進(jìn)一步壓縮的空間,通過并行多線程的方式來處理加載過程,這是后續(xù)優(yōu)化完善的方向。本文所提出的基于軟件中間件的編 碼板兼容性思路,可以應(yīng)用于同類其他軟、硬件部件級(jí)替代的兼容性設(shè)計(jì)中。