賈 曉 強(qiáng)
(渭南師范學(xué)院 網(wǎng)絡(luò)安全與信息化學(xué)院,陜西 渭南 714099)
?
基于嵌入式中間件TAO的實(shí)時(shí)視屏傳輸系統(tǒng)
賈 曉 強(qiáng)
(渭南師范學(xué)院 網(wǎng)絡(luò)安全與信息化學(xué)院,陜西 渭南 714099)
摘要:分析了實(shí)時(shí)視屏傳輸系統(tǒng)在集群作戰(zhàn)平臺(tái)下的應(yīng)用,提出了利用嵌入式實(shí)時(shí)中間件技術(shù)構(gòu)建異構(gòu)平臺(tái)下的分布式視屏傳輸系統(tǒng)的解決方案。為了驗(yàn)證該方案的可行性和實(shí)時(shí)性,結(jié)合CORBA A/V 服務(wù)和CORBA NanemingService 服務(wù),實(shí)現(xiàn)了基于嵌入式中間件TAO構(gòu)建的實(shí)時(shí)視屏傳輸系統(tǒng)。該系統(tǒng)由客戶(hù)端和服務(wù)器端兩部分組成,客戶(hù)端根據(jù)角色分為發(fā)送方和接收方,并采用MFC和MiniGUI開(kāi)發(fā)用戶(hù)界面,運(yùn)行在Windows系統(tǒng)和Linux系統(tǒng)上,服務(wù)器端構(gòu)建在VxWorks系統(tǒng)之上提供轉(zhuǎn)發(fā)數(shù)據(jù)功能。以100 Mbit/s 帶寬局域網(wǎng)環(huán)境用6臺(tái)測(cè)試機(jī)進(jìn)行了測(cè)試,實(shí)現(xiàn)了視屏的發(fā)布、訂閱、播放、暫停等功能。在實(shí)時(shí)性方面,視屏數(shù)據(jù)從采集到播放端延遲在150 ms 左右。帶寬占用方面,在352 pixel*288 pixel 單張采集畫(huà)面、每秒32 幀的情況下,消耗帶寬僅占用500~540 kbps, 實(shí)現(xiàn)了低帶寬消耗。
關(guān)鍵詞:TAO;異構(gòu)平臺(tái);視屏傳輸;MFC;瘦客戶(hù)機(jī)
近年來(lái),中間件技術(shù)和分布對(duì)象計(jì)算技術(shù)的結(jié)合在軍事、航空、通訊、工業(yè)控制等領(lǐng)域得到了廣泛的應(yīng)用。中間件技術(shù)在分布式實(shí)時(shí)系統(tǒng)中的使用減少了硬件、操作系統(tǒng)、應(yīng)用軟件三者之間的相互依賴(lài)程度,提高了系統(tǒng)的互操作能力。目前主流的中間件產(chǎn)品有OMG CORBA、Sun J2EE、Microsoft DCOM等。OMG CORBA與J2EE、DCOM相比,不僅在事務(wù)處理、安全服務(wù)方面表現(xiàn)良好,而且它的跨語(yǔ)言能力和跨平臺(tái)能力更是后者所不能比擬的。
目前,在實(shí)時(shí)中間件的研究上最為活躍的是華盛頓大學(xué)(Washington University)和加利福尼亞大學(xué)(University of California)Irvine分校,他們研發(fā)的TAO遵循CORBA[1-2]標(biāo)準(zhǔn),它是一個(gè)滿(mǎn)足實(shí)時(shí)CORBA規(guī)范且支持對(duì)應(yīng)用的靜態(tài)QoS要求的高性能分布式中間件平臺(tái)。其研究成果已成功地應(yīng)用到了軍事、航空、工業(yè)控制領(lǐng)域,取得了良好的軍事和經(jīng)濟(jì)效果。
在國(guó)內(nèi),這方面的研究大致始于20世紀(jì)90年代,投入到中間件技術(shù)研究中的單位有國(guó)防科技大學(xué)、中科院軟件所、東南大學(xué)等高校和科研院所,并取得了一定的成果。與此同時(shí),分布式多媒體應(yīng)用在網(wǎng)絡(luò)帶寬和CPU處理能力飛速提高的前提下,需要在網(wǎng)絡(luò)上傳輸如多媒體音頻、視頻流等連續(xù)的、實(shí)時(shí)的數(shù)據(jù)。目前流行的多媒體實(shí)時(shí)傳輸系統(tǒng)包括Real Networks公司的RealVideo Player、 Microsoft公司的Vxtree。在開(kāi)源軟件領(lǐng)域更有Open Meetings,它是一個(gè)多語(yǔ)言可定制的視頻會(huì)議和協(xié)作系統(tǒng)。它支持音頻、視頻,能查看每個(gè)與會(huì)者的桌面,還包含白板,通過(guò)白板可以導(dǎo)入各種格式的圖片和涂鴉。Open H.323提供了全功能的、可交互的 ITU H.323的視頻會(huì)議協(xié)議的開(kāi)源C++實(shí)現(xiàn)。Ekiga是一個(gè)兼容SIP和H.323的視頻會(huì)議程序,兼容VoIP,IP電話(huà)通過(guò)Ekiga,可以與使用任何SIP和H.323軟硬件的遠(yuǎn)程用戶(hù)進(jìn)行視頻和音頻對(duì)話(huà)。
如果采用傳統(tǒng)的分布式系統(tǒng)構(gòu)建技術(shù),需要針對(duì)不同的嵌入式系統(tǒng)和不同的網(wǎng)絡(luò)環(huán)境編寫(xiě)特定的實(shí)現(xiàn)代碼,使得編寫(xiě)的代碼大量重復(fù),開(kāi)發(fā)成本過(guò)高,降低了系統(tǒng)的可靠性、可維護(hù)性和可擴(kuò)展性,而且開(kāi)發(fā)分布式系統(tǒng)面臨跨平臺(tái)、跨操作系統(tǒng)、跨語(yǔ)言、跨協(xié)議等許多問(wèn)題。CORBA提供了一個(gè)公共的框架,它屏蔽了底層硬件平臺(tái)、操作系統(tǒng)以及通信協(xié)議之間的異構(gòu)性,在本地和遠(yuǎn)程對(duì)象之間使用統(tǒng)一的通信接口來(lái)為分布和異構(gòu)計(jì)算機(jī)環(huán)境下開(kāi)發(fā)應(yīng)用程序服務(wù)。這樣,分布式應(yīng)用開(kāi)發(fā)人員不需要關(guān)心和重復(fù)處理與平臺(tái)相關(guān)的底層細(xì)節(jié),可以將精力集中在具有實(shí)際功能的應(yīng)用邏輯開(kāi)發(fā)過(guò)程中,而且會(huì)大大降低系統(tǒng)的開(kāi)發(fā)代價(jià),縮短開(kāi)發(fā)周期,使系統(tǒng)更易于維護(hù)和升級(jí)。
本文的主要目標(biāo)是在分布式異構(gòu)平臺(tái)[3-4]環(huán)境下,利用CORBA中間件[5]技術(shù)實(shí)現(xiàn)一個(gè)多平臺(tái)下的實(shí)時(shí)視屏數(shù)據(jù)傳輸系統(tǒng)。其中涉及視頻傳輸技術(shù)、CORBA中間件技術(shù)在嵌入式和實(shí)時(shí)性操作系統(tǒng)方面的應(yīng)用,對(duì)開(kāi)源CORBA產(chǎn)品ACE+TAO的裁剪[6]和移植等關(guān)鍵內(nèi)容。同時(shí),分析了實(shí)時(shí)視屏傳輸系統(tǒng)在多作戰(zhàn)平臺(tái)下實(shí)現(xiàn)視屏實(shí)時(shí)傳輸?shù)闹饕δ苄枨?,基于ACE/TAO設(shè)計(jì),同時(shí)可實(shí)現(xiàn)一個(gè)分布式的視屏數(shù)據(jù)實(shí)時(shí)傳輸系統(tǒng)。
1.1功能需求分析
根據(jù)異構(gòu)平臺(tái)下嵌入式實(shí)時(shí)視屏數(shù)據(jù)傳輸系統(tǒng)的需求描述。該系統(tǒng)需要發(fā)布視屏、訂閱視屏、查詢(xún)視屏、開(kāi)始接收視屏、暫停視屏、退訂視屏、獲取視屏、獲取系統(tǒng)日志等基本功能,參與者是視屏采集端、視屏訂閱端、系統(tǒng)管理員。該系統(tǒng)的用例圖如圖1所示。系統(tǒng)有3個(gè)參與者,分別是視屏發(fā)送端、管理員、視屏接收端。發(fā)送端首先向系統(tǒng)注冊(cè),注冊(cè)成功之后開(kāi)始發(fā)布視屏,首先修改全局的視屏發(fā)布訂閱數(shù)據(jù)中心,然后通過(guò)數(shù)據(jù)傳輸系統(tǒng)傳輸數(shù)據(jù)。視屏數(shù)據(jù)的采集設(shè)備可以是采集卡、usb 攝像圖、桌面錄制工具等。視屏接收端首先向系統(tǒng)進(jìn)行注冊(cè),然后通過(guò)查詢(xún)視屏列表訂閱相應(yīng)的視屏,訂閱成功之后通過(guò)視屏傳輸模塊接收相應(yīng)的視屏數(shù)據(jù),實(shí)時(shí)播放,在接收視屏之后可以進(jìn)行暫停視屏和取消訂閱操作。系統(tǒng)管理員可以查詢(xún)系統(tǒng)狀態(tài),管理視屏發(fā)布端和接收端的注冊(cè)任務(wù),設(shè)置視屏接收端能接收到的視屏權(quán)限。
1.2性能需求分析
本系統(tǒng)主要解決分布式視屏數(shù)據(jù)的實(shí)時(shí)傳輸,所以在性能方面主要考慮以下幾個(gè)方面:
(1)FPS(Frames PerSecond)幀速率:每秒鐘傳輸畫(huà)面幀的個(gè)數(shù),如果每秒能傳輸?shù)膸瑪?shù)太低,就會(huì)影響整個(gè)視屏傳輸?shù)男Ч?。同時(shí)FPS越高,視屏畫(huà)面延遲越低。
(2)壓縮率:由于原始視屏數(shù)據(jù)量巨大[7-9],所以在視屏傳輸系統(tǒng)中傳輸?shù)臄?shù)據(jù)都是經(jīng)過(guò)視屏壓縮技術(shù)壓縮過(guò)的。壓縮率越高,占用的帶寬就越低。
(3)圖像分辨率:視頻都是由一張張的圖像連續(xù)播放構(gòu)成的,圖像又是由一個(gè)個(gè)連續(xù)的像素點(diǎn)組合而成的。圖像分辨率越高,占用的存儲(chǔ)空間就越大。在固定的壓縮率下,圖像分辨率越大,占用的帶寬就越高。
(4)帶寬:網(wǎng)絡(luò)每秒能傳輸?shù)臄?shù)據(jù)量。由于物理帶寬是固定的,不能改變。當(dāng)系統(tǒng)的最低帶寬需求高于物理帶寬的時(shí)候,系統(tǒng)就不能在該網(wǎng)絡(luò)情況下運(yùn)行,導(dǎo)致看到的畫(huà)面質(zhì)量下降。
1.3數(shù)據(jù)分析
根據(jù)嵌入式實(shí)時(shí)視屏數(shù)據(jù)傳輸系統(tǒng)的業(yè)務(wù)需求,該系統(tǒng)的數(shù)據(jù)流是從視屏采集端發(fā)送給傳輸系統(tǒng)的,傳輸系統(tǒng)根據(jù)視屏接收端的訂閱情況,進(jìn)行視屏數(shù)據(jù)流的分發(fā)、傳遞。數(shù)據(jù)流程圖如圖2所示。視屏發(fā)送端、視屏接收端都可以通過(guò)用戶(hù)ID進(jìn)行系統(tǒng)的注冊(cè)和注銷(xiāo)。注冊(cè)和注銷(xiāo)功能通過(guò)修改系統(tǒng)數(shù)據(jù)記錄進(jìn)行注冊(cè)注銷(xiāo)。管理員可以通過(guò)查詢(xún)命令查詢(xún)系統(tǒng)運(yùn)行狀況,并且通過(guò)權(quán)限控制命令控制各個(gè)視屏訂閱端和發(fā)布端的系統(tǒng)權(quán)限。視屏發(fā)布端通過(guò)輸入發(fā)布命令發(fā)布視屏數(shù)據(jù),視屏數(shù)據(jù)經(jīng)過(guò)壓縮、組包之后存儲(chǔ)在視屏數(shù)據(jù)緩沖區(qū),視屏分發(fā)器根據(jù)注冊(cè)、視屏發(fā)布、視屏訂閱、權(quán)限這些控制信息進(jìn)行數(shù)據(jù)包的分發(fā),接收端接收數(shù)據(jù)包,進(jìn)行視屏解壓,實(shí)時(shí)顯示。同時(shí)接收端可以發(fā)送訂閱命令,以便進(jìn)行視屏訂閱。
圖1 實(shí)時(shí)視屏傳輸系統(tǒng)用例圖
圖2 系統(tǒng)功能結(jié)構(gòu)圖
1.4系統(tǒng)結(jié)構(gòu)分析
集群作戰(zhàn)平臺(tái)上的各種系統(tǒng)幾乎都連接在本地的網(wǎng)絡(luò)中,這樣系統(tǒng)之間可以進(jìn)行交互協(xié)作,并且管理人員可以方便地通過(guò)網(wǎng)絡(luò)向各個(gè)系統(tǒng)發(fā)送命令。同樣,如果開(kāi)發(fā)的實(shí)時(shí)視屏傳輸系統(tǒng)能夠利用本地網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸功能,這樣就能以統(tǒng)一的方式,實(shí)現(xiàn)對(duì)各種桌面系統(tǒng)和嵌入式系統(tǒng)上的多媒體信息進(jìn)行傳輸和控制。
在實(shí)時(shí)視屏傳輸數(shù)據(jù)鏈路中,主要包括前端信息采集和后端接收顯示。如果后端節(jié)點(diǎn)需要接收同一前端節(jié)點(diǎn)的視屏數(shù)據(jù),并且后端節(jié)點(diǎn)能夠?qū)崟r(shí)控制視屏數(shù)據(jù)的傳輸方式和傳輸速率,那么,在前端節(jié)點(diǎn)就需要維護(hù)對(duì)多個(gè)節(jié)點(diǎn)的連接,并且需要將一份數(shù)據(jù)轉(zhuǎn)發(fā)多次。由于分布在網(wǎng)絡(luò)中的計(jì)算機(jī)硬件系統(tǒng)和軟件平臺(tái)種類(lèi)繁多,前端和后端節(jié)點(diǎn)往往都需要保持瘦客戶(hù)機(jī)[10]模式。
基于以上原因,本文提出了一種發(fā)送、轉(zhuǎn)發(fā)、接收的通信框架結(jié)構(gòu),如圖2所示??蛻?hù)端主要負(fù)責(zé)對(duì)視頻信息的采集和監(jiān)控,服務(wù)器負(fù)責(zé)維護(hù)與多個(gè)客戶(hù)端的連接,并完成對(duì)節(jié)點(diǎn)的管理和數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā)?;谠摽蚣荞詈狭艘暺涟l(fā)送端和視屏接收端,發(fā)送端不需要知道接收端的存在,接收端也不需要知道發(fā)送端是誰(shuí),并且可以靈活地在各個(gè)數(shù)據(jù)傳輸通道上使用不同的傳輸協(xié)議,實(shí)現(xiàn)傳輸協(xié)議的可插拔。可以在視屏發(fā)送端和視屏接收端使用不同的網(wǎng)絡(luò)模型和編程模型,并且在轉(zhuǎn)發(fā)服務(wù)器端可以實(shí)現(xiàn)權(quán)限控制、流量控制、轉(zhuǎn)發(fā)策略控制等控制功能。在視屏的發(fā)送端和接收端系統(tǒng)平臺(tái)都不變的情況下,服務(wù)器端可以選擇具有強(qiáng)實(shí)時(shí)性的VxWorks[11-12]系統(tǒng)作為服務(wù)器端,使整個(gè)系統(tǒng)具有更高的橫向擴(kuò)展功能和實(shí)時(shí)性。
首先給出系統(tǒng)的總體設(shè)計(jì),根據(jù)系統(tǒng)要求進(jìn)行分層設(shè)計(jì),最后給出各層具體模塊的詳細(xì)設(shè)計(jì)。按照前面提出的功能需求和性能需求,實(shí)時(shí)數(shù)據(jù)傳輸系統(tǒng)應(yīng)該能夠不依賴(lài)于具體的操作系統(tǒng)和網(wǎng)絡(luò)傳輸協(xié)議。根據(jù)視屏接收端的訂閱情況實(shí)現(xiàn)視屏數(shù)據(jù)的實(shí)時(shí)采集、分發(fā)、顯示等。在視屏接收端能夠進(jìn)行查詢(xún)、訂閱、播放、暫停視屏功能。系統(tǒng)管理員可以在線查閱系統(tǒng)運(yùn)行情況和設(shè)置系統(tǒng)權(quán)限。基于以上需求,該系統(tǒng)設(shè)計(jì)如圖2所示。
系統(tǒng)采用分層設(shè)計(jì),分為操作系統(tǒng)層、中間件層、基礎(chǔ)設(shè)施層、表現(xiàn)層等。
(1)操作系統(tǒng)層:整個(gè)系統(tǒng)運(yùn)行在操作系統(tǒng)層之上;
(2)中間件層:該層使用底層操作系統(tǒng)的具體實(shí)現(xiàn),屏蔽底層多個(gè)操作系統(tǒng)的差異,選用開(kāi)源CORBA 產(chǎn)品TAO 作為基礎(chǔ)中間件,CORBA A/V 服務(wù)實(shí)現(xiàn)流式數(shù)據(jù)服務(wù),CORBA Nameing Service 服務(wù)實(shí)現(xiàn)節(jié)點(diǎn)管理;
(3)基礎(chǔ)設(shè)施層:包括流管理、實(shí)時(shí)數(shù)據(jù)分發(fā)、實(shí)時(shí)數(shù)據(jù)處理模塊、節(jié)點(diǎn)管理等;
(4)表現(xiàn)層:實(shí)現(xiàn)視屏發(fā)布用戶(hù)需要的發(fā)布視屏,視屏接收端需要的查詢(xún)、訂閱、開(kāi)始、暫停視屏功能,管理員需要的查詢(xún)系統(tǒng)運(yùn)行狀況、權(quán)限設(shè)置功能。
上述模塊首先根據(jù)功能進(jìn)行層次劃分,利用ACE+TAO 作為底層的中間件層提供給上層的基礎(chǔ)設(shè)施層基本的CORBA服務(wù)、ACE封裝過(guò)的底層操作系統(tǒng)統(tǒng)一API、CORBA A/V 服務(wù)和CORBA Nameing Service 服務(wù)。在中間件層之上設(shè)計(jì)實(shí)時(shí)視屏數(shù)據(jù)傳輸系統(tǒng)的基礎(chǔ)設(shè)施層,該層由于構(gòu)建在中間件層之上,保證了該層的平臺(tái)獨(dú)立性。在基礎(chǔ)設(shè)施之上實(shí)現(xiàn)業(yè)務(wù)層,該層主要解決需求分析中提到的各種業(yè)務(wù)功能。該分層設(shè)計(jì)方案提高了系統(tǒng)的可移植性,用中間件層保證系統(tǒng)能夠在多個(gè)操作系統(tǒng)下運(yùn)行。[7]把系統(tǒng)的復(fù)雜性進(jìn)行分層,使得復(fù)雜邏輯在基礎(chǔ)設(shè)施層實(shí)現(xiàn)。業(yè)務(wù)層主要關(guān)注具體的業(yè)務(wù)流程,利于業(yè)務(wù)層面的需求變更。
3.1系統(tǒng)運(yùn)行環(huán)境
實(shí)時(shí)視屏傳輸系統(tǒng)運(yùn)行的目標(biāo)系統(tǒng)包括Windows、Linux、VxWorks操作系統(tǒng)等。Windows操作系統(tǒng)作為當(dāng)今使用最為廣泛的操作系統(tǒng),其強(qiáng)大友好的圖形界面極大地方便了用戶(hù)的操作。將Windows系統(tǒng)用作發(fā)送端進(jìn)行數(shù)據(jù)采集,以減少對(duì)硬件采集設(shè)備的驅(qū)動(dòng)開(kāi)發(fā)。VxWorks系統(tǒng)對(duì)圖形界面的支持雖然還不夠友好、操作不夠方便,但是其具有實(shí)時(shí)性、穩(wěn)定性等特點(diǎn),所以用在轉(zhuǎn)發(fā)端作為核心服務(wù)器。接收端采用Windows和Linux操作系統(tǒng)。
根據(jù)以上運(yùn)行環(huán)境分析,系統(tǒng)需要實(shí)現(xiàn)嵌入式系統(tǒng)與普通桌面系統(tǒng)之間的分布式協(xié)作,所以,需要選擇合適的CORBA中間件產(chǎn)品。ACE+TAO是一個(gè)應(yīng)用廣泛的、開(kāi)源的CORBA中間件,并且基本按照OMG提供的CORBA 2.6規(guī)范來(lái)實(shí)現(xiàn)。它提供了對(duì)多種平臺(tái)的支持(包括Window、Linux和VxWorks操作系統(tǒng))。由于ACE+TAO的源碼開(kāi)放,能減少其在嵌入式系統(tǒng)中內(nèi)存的占用,使得用戶(hù)可以根據(jù)系統(tǒng)需求來(lái)裁剪[9]出和優(yōu)化自己需要的CORBA產(chǎn)品。
3.1.1ACE+TAO針對(duì)各個(gè)嵌入式平臺(tái)的定制化裁剪
在嵌入式系統(tǒng)中,存儲(chǔ)資源是非常有限的。要求基于嵌入式系統(tǒng)開(kāi)發(fā)的程序盡量占用較小的內(nèi)存和較小的程序本身的存儲(chǔ)空間。較小的內(nèi)存占用可以對(duì)程序進(jìn)行優(yōu)化,但是較小的程序存儲(chǔ)空間占用,一直是個(gè)難點(diǎn)?;谝陨显颍O(shè)計(jì)了一個(gè)針對(duì)ACE+TAO 動(dòng)態(tài)庫(kù)裁剪的程序,使用該程序可以對(duì)ACE+TAO進(jìn)行裁剪,裁剪的粒度達(dá)到.cpp 級(jí)別,也就是說(shuō)如果應(yīng)用程序里面使用了.cpp文件里面的函數(shù),就編譯該.cpp文件對(duì)應(yīng)的.o 文件到庫(kù)文件里面。
這個(gè)工具的目的是優(yōu)化基于ACE+TAO開(kāi)發(fā)的多個(gè)應(yīng)用程序的動(dòng)態(tài)鏈接庫(kù)的存儲(chǔ)空間占用?,F(xiàn)有的解決方案是,基于靜態(tài)鏈接的程序,程序只連接需要的對(duì)象文件模塊,但是多個(gè)程序的靜態(tài)鏈接會(huì)造成對(duì)象文件的冗余。動(dòng)態(tài)鏈接的程序,多個(gè)程序共享地使用一個(gè)完整的庫(kù)文件,需要安裝整個(gè)動(dòng)態(tài)鏈接庫(kù)。針對(duì)一個(gè)特殊的應(yīng)用程序,該應(yīng)用程序并不是把該動(dòng)態(tài)庫(kù)里面所有的對(duì)象文件都使用了。該程序只是需要一個(gè)對(duì)象文件的子集。具體裁剪原理如圖3所示。
圖3 ACE+TAO的定制化裁剪程序流程圖
3.1.2TAO在多平臺(tái)上編譯安裝
TAO支持多種平臺(tái),如Windows、Unix、Linux、VxWorks、LynxOS等。本文所述的系統(tǒng)需要運(yùn)行在多個(gè)平臺(tái)之上,包括Window、Linux、VxWorks操作系統(tǒng)。在這些操作系統(tǒng)上編譯和安裝ACE+TAO時(shí),方法各不相同而且配置煩瑣,因此,需根據(jù)具體的應(yīng)用需要修改相應(yīng)的宏和選項(xiàng)。
3.2系統(tǒng)IDL接口定義
該系統(tǒng)使用CORBA A/V Stream 服務(wù)作為底層的數(shù)據(jù)傳輸和控制功能,但是A/V 服務(wù)提供的控制功能不能滿(mǎn)足所有功能,一部分功能需要用標(biāo)準(zhǔn)的CORBA IDL 接口定義實(shí)現(xiàn)。IDL接口是客戶(hù)通過(guò)其發(fā)送請(qǐng)求對(duì)象中所定義的一系列操作的描述。接口闡明了由支持接口的對(duì)象所提供的服務(wù)是如何通過(guò)這組操作被訪問(wèn)的語(yǔ)法描述。其中,A/V 服務(wù)接口存在A、B兩種截然不同的端類(lèi)型IDL接口。接口定義已在OMG A/V stream規(guī)范中表述,這里不需要再對(duì)此進(jìn)行設(shè)計(jì)。只需要在應(yīng)用層調(diào)用接口中定義一個(gè)MediaCtrl接口,調(diào)用流式服務(wù)來(lái)完成對(duì)流的控制。每個(gè)模塊接口中定義的操作對(duì)應(yīng)一個(gè)CORBA對(duì)象請(qǐng)求調(diào)用的操作??蛻?hù)端和服務(wù)器端通過(guò)這些操作相互通信。
3.3命名服務(wù)實(shí)現(xiàn)
服務(wù)器端需要解決客戶(hù)端獲得對(duì)象引用這個(gè)問(wèn)題,而讓客戶(hù)端獲取對(duì)象引用的過(guò)程包括3個(gè)步驟:
第一步,服務(wù)器端提供要公布的對(duì)象給對(duì)象目錄,并以一些有意義的方式來(lái)提供要識(shí)別的對(duì)象屬性;
第二步,客戶(hù)端將需要的對(duì)象屬性提交給對(duì)象目錄,目錄將匹配的對(duì)象返回給客戶(hù)端;
第三步,客戶(hù)端使用獲得的對(duì)象引用,服務(wù)器端完成相應(yīng)的操作。
在本系統(tǒng)中主要用CORBA命名服務(wù)實(shí)現(xiàn)對(duì)象的定位。服務(wù)器端將伺服對(duì)象注冊(cè)到命名服務(wù)器上,客戶(hù)程序可以通過(guò)命名服務(wù)器上提供的對(duì)象名稱(chēng)將其解析成對(duì)象引用,然后客戶(hù)端發(fā)送請(qǐng)求到服務(wù)器,服務(wù)器處理請(qǐng)求并返回結(jié)果給客戶(hù)端程序。命名服務(wù)實(shí)現(xiàn)原理如圖4所示。
圖4 命名服務(wù)原理圖
在系統(tǒng)啟動(dòng)前,需要先開(kāi)啟命名服務(wù)。命名服務(wù)程序可以分布在局域網(wǎng)內(nèi)的任何計(jì)算機(jī),但是其IP地址和端口號(hào)需要對(duì)引用命名服務(wù)的程序公開(kāi)。
啟動(dòng)命名服務(wù)的方式:打開(kāi)一個(gè)控制臺(tái)窗口,鍵入-m1。
參數(shù)說(shuō)明:
-m1采用multicast(多播)方式,這樣啟動(dòng)服務(wù)器程序的時(shí)候就不用再指定主機(jī)的IP地址了。
-ORBEndPoint iiop://192.168.0.100:8000:采用IIOP通信協(xié)議,并指定啟動(dòng)命名服務(wù)主機(jī)的IP地址和端口號(hào)。
3.4服務(wù)器啟動(dòng)
服務(wù)器端需首先啟動(dòng),這樣才能將伺服對(duì)象綁定到命名服務(wù)上,客戶(hù)端通過(guò)corbaloc獲取服務(wù)對(duì)象引用。
根據(jù)節(jié)點(diǎn)管理模塊的設(shè)計(jì),每一個(gè)節(jié)點(diǎn)控制類(lèi)對(duì)象中都包含了一個(gè)連接器對(duì)象CConnetor,而CConnector對(duì)象中包含了一個(gè)服務(wù)器對(duì)象的對(duì)象引用。因此,在注冊(cè)節(jié)點(diǎn)之前,需初始化與服務(wù)器的CORBA連接,這包括ORB的初始化以及服務(wù)器對(duì)象引用的獲取。初始化代碼處于CConnector的Login接口中。
首先開(kāi)啟一個(gè)后臺(tái)任務(wù)運(yùn)行naming 程序,VxWorks 5.5下開(kāi)啟naming服務(wù),該程序監(jiān)聽(tīng)的網(wǎng)卡是VxWorks本機(jī)的網(wǎng)卡。然后分別開(kāi)啟任務(wù)server和client,并指定了命名服務(wù)開(kāi)啟的地址。
4.1測(cè)試環(huán)境
測(cè)試環(huán)境包括6臺(tái)PC機(jī)、100 M網(wǎng)卡、1個(gè)攝像頭、1個(gè)視頻采集卡。其中,發(fā)送端上裝有攝像頭和視頻采集卡,運(yùn)行在Windows XP系統(tǒng)上。轉(zhuǎn)發(fā)服務(wù)器端運(yùn)行在VxWorks系統(tǒng)上。4臺(tái)接收端計(jì)算機(jī)有2臺(tái)運(yùn)行在Windows XP上,2臺(tái)運(yùn)行在linux Red Hat 9.0上??蛻?hù)端和服務(wù)器端通過(guò)一個(gè)局域的以太網(wǎng)相互連接起來(lái),構(gòu)成了一個(gè)網(wǎng)絡(luò)環(huán)境。
4.2功能測(cè)試
由于本系統(tǒng)涉及客戶(hù)端和服務(wù)器端之間的通信,所以在測(cè)試過(guò)程中需要先啟動(dòng)服務(wù)器端上的程序,然后啟動(dòng)客戶(hù)端上的程序,并對(duì)每一個(gè)系統(tǒng)功能通過(guò)客戶(hù)端的相應(yīng)調(diào)用操作進(jìn)行測(cè)試,這樣不但測(cè)試了客戶(hù)端相應(yīng)模塊的準(zhǔn)確性和對(duì)異常的處理,也測(cè)試了各個(gè)功能模塊在服務(wù)器端的操作實(shí)現(xiàn)。在整個(gè)測(cè)試過(guò)程中,主要是采用黑盒測(cè)試方法,調(diào)用過(guò)程是否正確可根據(jù)調(diào)用返回值是否符合預(yù)期值、操作功能實(shí)現(xiàn)是否正確進(jìn)行判斷。分別對(duì)節(jié)點(diǎn)管理、流管理進(jìn)行了測(cè)試,測(cè)試過(guò)程符合期望值。
4.3性能分析
在系統(tǒng)通信鏈路上,分別接入1臺(tái)接收端、2臺(tái)接收端、3臺(tái)接收端和4臺(tái)接收端。這里只給出2臺(tái)和4臺(tái)接收端的情況測(cè)試,通過(guò)對(duì)以上傳輸速率方面的研究,選取分辨率為352 pixel×288 pixel進(jìn)行比較,當(dāng)一個(gè)數(shù)據(jù)包的大小是1 500字節(jié)時(shí),傳輸速率大約在1 Mbps左右。當(dāng)一個(gè)數(shù)據(jù)包的大小是3 050字節(jié)時(shí),傳輸速率大約為1.5 Mbps。這是緩存的利用率提高所導(dǎo)致的。通過(guò)對(duì)實(shí)驗(yàn)數(shù)據(jù)分析可以看到,總的傳輸率隨著連接的接收端數(shù)量增多而變大。這是由于當(dāng)傳輸?shù)目偤筒怀^(guò)網(wǎng)絡(luò)最大傳輸率時(shí),網(wǎng)絡(luò)帶寬的利用率提高了。多個(gè)接收端之間的傳輸速率不同,與客戶(hù)端操作系統(tǒng)有關(guān)。在實(shí)時(shí)性方面,在連接4臺(tái)接收端服務(wù)器的時(shí)候,依然能保證100 ms左右的延遲,符合系統(tǒng)所提出的120 ms 延遲。關(guān)于圖像質(zhì)量方面,當(dāng)前視頻壓縮標(biāo)準(zhǔn)選擇MPEG-4壓縮算法,視頻幀由I幀、P幀和B幀組成。
實(shí)時(shí)視屏傳輸系統(tǒng)是基于CORBA技術(shù)實(shí)現(xiàn)的,和傳統(tǒng)方式開(kāi)發(fā)的分布式系統(tǒng)相比,系統(tǒng)中各個(gè)應(yīng)用對(duì)象之間的互操作更加透明,有效地實(shí)現(xiàn)了系統(tǒng)所需的各種傳輸和遠(yuǎn)程服務(wù)功能,方便系統(tǒng)的升級(jí)和維護(hù),極大地提高了系統(tǒng)開(kāi)發(fā)效率。同時(shí),由于對(duì)開(kāi)源的CORBA產(chǎn)品TAO進(jìn)行了裁剪,保證了系統(tǒng)的嵌入式應(yīng)用特性,數(shù)據(jù)分發(fā)服務(wù)器使用了實(shí)時(shí)操作系統(tǒng)VxWorks和實(shí)時(shí)CORBA的結(jié)合,使得系統(tǒng)的實(shí)時(shí)性得到很大的提高。當(dāng)前實(shí)現(xiàn)的系統(tǒng)轉(zhuǎn)發(fā)服務(wù)器端不能主動(dòng)通知各個(gè)節(jié)點(diǎn)相應(yīng)的系統(tǒng)管理信息。接收端只能通過(guò)每次調(diào)用查詢(xún)節(jié)點(diǎn)信息來(lái)獲取服務(wù)器所管理的節(jié)點(diǎn)信息。由于音視頻的采集使用不同的設(shè)備,并且采集頻率不相同,所以還需要解決音視頻數(shù)據(jù)的同步問(wèn)題。
參考文獻(xiàn):
[1] 彭艦.基于CORBA的分布式系統(tǒng)中實(shí)時(shí)容錯(cuò)性的研究——分布式系統(tǒng)中動(dòng)態(tài)調(diào)度的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué)碩士學(xué)位論文,2004.
[2] 朱其亮,鄭斌.CORBA原理及應(yīng)用[M].北京:北京郵電大學(xué)出版社,2001.101-156.
[3] 余臘生,李徐.基于Web服務(wù)的跨網(wǎng)絡(luò)異構(gòu)數(shù)據(jù)交換技術(shù)[J].計(jì)算機(jī)應(yīng)用,2005,25(12):9-11.
[4] 李長(zhǎng)河,趙潔,張亞玲,等.一種安全異構(gòu)數(shù)據(jù)交換技術(shù)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2007,(2):91-93.
[5] 蘇志剛,郝敬堂,屈景怡,等.基于中間件的可修復(fù)分布式系統(tǒng)可靠性分析[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(5):1669-1672.
[6] 郭長(zhǎng)濱,孫超,鹿欽鶴.基于USB GRUB引導(dǎo)及CF卡Linux系統(tǒng)剪裁的嵌入式系統(tǒng)構(gòu)建[J].工業(yè)控制計(jì)算機(jī),2012,25(3):55-57.
[7] 劉曉輝,金志剛,衛(wèi)津津,等.P2P網(wǎng)絡(luò)多視點(diǎn)立體視頻傳輸?shù)臄?shù)據(jù)塊調(diào)度策略[J].計(jì)算機(jī)工程與應(yīng)用,2013,(3):1-6.
[8] 劉丁瑜,楊堅(jiān),冉泳屹.基于客戶(hù)端下溢概率估計(jì)的可伸縮視頻傳輸算法[J].小型微型計(jì)算機(jī)系統(tǒng),2013,34(4):739-742.
[9] 任浩,王勁林,尤佳莉.一種分階段的P2P流媒體數(shù)據(jù)調(diào)度算法[J].計(jì)算機(jī)工程與應(yīng)用,2011,(23): 1-4.
[10] 徐志穎.瘦客戶(hù)機(jī)在書(shū)目檢索中的應(yīng)用[J].圖書(shū)館工作與研究,2012,(6):119-124.
[11] 孔祥營(yíng),張保山,俞烈彬. VxWorks驅(qū)動(dòng)及分布式編程[M].北京:中國(guó)電力出版社,2007.45-55.
[12] 王煊.基于VxWorks的BMK卡的軟件測(cè)試系統(tǒng)研究[J].電子設(shè)計(jì)工程,2014,22(2):38-40.
【責(zé)任編輯牛懷崗】
中圖分類(lèi)號(hào):TP311.5
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1009-5128(2016)16-0051-08
收稿日期:2016-01-22
基金項(xiàng)目:渭南師范學(xué)院(省)扶持學(xué)科數(shù)學(xué)學(xué)科基金資助項(xiàng)目:方程思想在文本分類(lèi)中的應(yīng)用(14SXZD010);渭南師范學(xué)院特色學(xué)科建設(shè)項(xiàng)目:數(shù)學(xué)方法在秦東經(jīng)濟(jì)社會(huì)發(fā)展中的應(yīng)用(14TSXK02);渭南師范學(xué)院教育教學(xué)改革研究項(xiàng)目:計(jì)算機(jī)專(zhuān)業(yè)學(xué)生系統(tǒng)能力培養(yǎng)和系統(tǒng)課程體系設(shè)置研究(JG201557);渭南師范學(xué)院科研計(jì)劃項(xiàng)目:渭南市智慧城市建設(shè)中關(guān)聯(lián)政府?dāng)?shù)據(jù)的組織與應(yīng)用研究(16YKS004)
作者簡(jiǎn)介:賈曉強(qiáng)(1977—),男,陜西鳳翔人,渭南師范學(xué)院網(wǎng)絡(luò)安全與信息化學(xué)院副教授,軟件工程碩士,主要從事基于WEB的數(shù)據(jù)挖掘研究。
The Real-time Video Transmission System Based on Embedded Middleware TAO
JIA Xiao-qiang
(School of Network Security and Informationization, Weinan Normal University, Weinan 714099, China)
Abstract:The application of real-time video transmission system is analyzed in the cluster operation platform. Proposed solutions which use the embedded real-time middleware technology to construct distributed heterogeneous video transmission system. In order to verify the feasibility of the scheme and real-time, CORBA A/V services and CORBA Naneming Service are combined with, and the real-time video transmission system of Embedded Middleware based on TAO is realized. The system is composed of client and server, and the client is composed of two parts and divided into sender and receiver according to the role. Using MFC and MiniGUI to develop user interface, running on Windows system and Linux system, the server is in VxWorks system for data forwarding function. With a 100Mbit/s bandwidth LAN environment, with six test machines testing, video of the subscription, the release, playing and pausing function have been realized. In the aspect of real-time, video data, from collecting to playing with about 150ms is delayed. Bandwidth in 352 pixel*288 pixel single collection of pictures, in case of 32 frames per second, the bandwidth consumption occupies only 500~540kbps, and realizes the low bandwidth consumption.
Key words:TAO; heterogeneous platform; video transmission; MFC; thin client
【現(xiàn)代應(yīng)用技術(shù)研究】