趙曉焱 張會芝
(河南師范大學(xué)計算機與信息技術(shù)學(xué)院,河南 新鄉(xiāng) 453007)
基于H.323協(xié)議的視頻會議系統(tǒng)
趙曉焱 張會芝
(河南師范大學(xué)計算機與信息技術(shù)學(xué)院,河南 新鄉(xiāng) 453007)
視頻會議系統(tǒng)是一種基于分組交換網(wǎng)絡(luò)的多媒體通訊系統(tǒng),針對多媒體網(wǎng)絡(luò)通訊的特點,分析了基于H.323協(xié)議的開源項目OpenH 323,提出了一種面向?qū)ο蟮南到y(tǒng)架構(gòu),對系統(tǒng)中的對象做了詳細(xì)的介紹,并給出了終端和多點控制單元(MCU)的詳細(xì)實現(xiàn)過程。
視頻會議;分組交換;多點控制單元
隨著計算機通信技術(shù)的發(fā)展以及互聯(lián)網(wǎng)帶寬的不斷增大,分組交換網(wǎng)絡(luò)的可視電話和視頻會議系統(tǒng)已廣泛應(yīng)用于各個領(lǐng)域[1]。為了使得各個不同的可視電話廠商生產(chǎn)的產(chǎn)品互通,國際電信聯(lián)盟(ITU)制定了在分組交換網(wǎng)絡(luò)上運行的視頻會議通訊標(biāo)準(zhǔn)H.323[2]。H.323包括了H.245、H.225等一系列協(xié)議,主要描述了基于分組的多媒體通信系統(tǒng)的概念、結(jié)構(gòu)以及呼叫流程[3]。標(biāo)準(zhǔn)的制定更加促進了視頻會議的發(fā)展與普及,因而視頻會議相關(guān)技術(shù)已經(jīng)成為業(yè)界和學(xué)術(shù)界的一個研究熱點。
OpenH323項目是澳大利亞的Equivalence Pty Ltd公司組織開發(fā)的H323協(xié)議框架,實現(xiàn)了一套復(fù)雜的H.323通訊系統(tǒng),主要是免費提供給所有想從事VOIP和網(wǎng)絡(luò)視頻傳輸?shù)能浖_發(fā)商使用。OpenH323協(xié)議庫完全符合H.323協(xié)議的,能和任何符合該協(xié)議的軟件進行視頻和語音通訊。當(dāng)兩個終端進行通信時,一端向另一端的H.323端口1 720建立一條連接。然后,兩終端在此連接上發(fā)送Q.931包,在這些交換的數(shù)據(jù)包中,兩終端發(fā)送動態(tài)的端口用于建立H.245連接。H.245處理所有的呼叫參數(shù)協(xié)商,例如所要用的編碼解碼算法等。一旦這些參數(shù)協(xié)商完畢,H.245會話開始執(zhí)行Open Logical Channel過程,為特定的媒體流(如音頻或視頻)建立邏輯通道。然后,這些媒體流就可以在兩個終端之間進行傳輸,直到會話結(jié)束。
OpenH323項目為了兼容不同的操作系統(tǒng),編寫了能兼容LINUX和WINDOWS系統(tǒng)的類庫PWLIB,PTLIB,使得在這些類庫上層的OpenH323庫能夠跨平臺使用。OpenH323的優(yōu)勢在于它比較完整的實現(xiàn)了ITU關(guān)于H.323的建議,可以實現(xiàn)基于IP的各種電話應(yīng)用,包括語音、視頻、會議以及傳真等。通過該協(xié)議可以定制出自己需要的各種H.323實體,對商業(yè)用戶和個人開發(fā)者來說都具有很大的吸引力,本文提出的視頻會議系統(tǒng)就是基于OpenH323項目進行開發(fā)。
H.323會議系統(tǒng)中傳輸?shù)男畔⒘髦邪纛l、視頻、數(shù)據(jù)和控制信息[4]。所有的信息流均采用H.225協(xié)議來進行打包和傳送。為了實現(xiàn)在會議系統(tǒng)中傳輸上述信息流,H.323協(xié)議定義的多媒體會議系統(tǒng)主要由終端、網(wǎng)閘(Gatekeeper)、網(wǎng)關(guān)(Gateway)、多點控制器(MC)、多點處理器(MP)和多點控制單元(MCU)等組成,如圖1所示。
圖 1 H.323視頻會議系統(tǒng)組成
H.323終端是能夠在分組交換網(wǎng)絡(luò)中提供實時、雙向通信的節(jié)點設(shè)備。網(wǎng)守是H.323系統(tǒng)的一個可選組件,其功能是向H.323終端提供呼叫控制服務(wù)。多點控制單元可以用于支持三個以上終端設(shè)備的會議。在H.323系統(tǒng)中,一個多點控制單元由一個多點控制器(MC)和幾個多點處理器(MP)組成,但也可以不包含MP。網(wǎng)關(guān)是H.323會議系統(tǒng)的一個可選件,網(wǎng)關(guān)能提供很多服務(wù),其中包含H.323會議節(jié)點設(shè)備與其他ITU標(biāo)準(zhǔn)相兼容的終端之間的轉(zhuǎn)換功能,這種功能包括數(shù)據(jù)傳輸格式(如H.225.0到H.221)和通信規(guī)程的轉(zhuǎn)換(如H.245到H.242)。
基于OpenH323視頻會議系統(tǒng)的實現(xiàn)主要包含終端的實現(xiàn)和MCU的實現(xiàn)。應(yīng)用程序一般要建立一個H323EndPoint類的派生類實例。通過H323Endpoint類可以直接或者間接地對整個OpenH323協(xié)議的各種主要的類進行調(diào)用和處理派生類,H323 Endpoint類封裝了很多的方法。當(dāng)響應(yīng)應(yīng)用程序?qū)崿F(xiàn)H323Endpoint的類的派生時,通常會定義在H323協(xié)議棧中沒有定義的屬性和方法,這些屬性和方法用于設(shè)定終端的一些初始化的,或者基本的屬性。例如振鈴時播放的音樂文件的名稱,缺省的呼叫設(shè)置,終端的能力集等。
而在每個H323EndPoint類中,一般會創(chuàng)建一個或者多個H323Listener類的派生類的實例,每一個實例對應(yīng)于后臺處理的守聽線程。當(dāng)檢測到新的呼入時,就會創(chuàng)建一個H323Transport類的實例,負(fù)責(zé)信息的網(wǎng)絡(luò)傳輸。
4.1 終端實現(xiàn)
OpenH323網(wǎng)站有兩個終端的源代碼:OpenPhone和OhPhone,OhPhone是一個命令行的終端程序,負(fù)責(zé)傳輸音頻。OpenPhone是一個基于PWLib庫的窗口程序,可以傳輸視頻,但支持的視頻標(biāo)準(zhǔn)只有未能實現(xiàn)完整的H.261標(biāo)準(zhǔn)。由于終端直接面對用戶,所以在一定程度上界面設(shè)計要美觀,而基于PWLib圖像庫的界面元素太少,而且界面對象使用起來也不方便,因此本文視頻會議終端使用PWLIB中與GUI無關(guān)的類庫,如I/O功能API、多線程API、時間函數(shù)API等,而對于與GUI有關(guān)的部分,采用MFC類庫進行開發(fā),保證了用戶終端的親和性和美觀性。
OpenPhone本地視頻采集和視頻圖像的顯示效果不理想。視頻采集時效率很低下,視頻采集圖像幀率的最大值為10幀左右。即使視頻解碼器可以計算更高幀率的視頻圖像,但由于視頻采集的瓶頸,還是會使得圖像的幀率變低,停頓比較明顯,降低了圖像的顯示效果,浪費了視頻會議終端的計算能力。為了解決這個問題,新的終端采用了DIRECTSHOW中的視頻采集技術(shù),使得視頻圖像的采集幀率可以達到20幀。對于圖像的顯示,原來的OpenPhone的顯示效率也很低下,所以顯示模塊改為DIRECTDRAW的顯示方式。
圖2描述了視頻會議終端的實現(xiàn),其中視頻采集模塊由類PVideoInputDevice來實現(xiàn)。由于該實現(xiàn)類的采集效果不理想,本文使用其派生類CVideoInputDevice來實現(xiàn)DIRECTSHOW的視頻采集技術(shù),利用C++語言的多態(tài)性,將原來代碼創(chuàng)建PVideoInputDevice對象改變?yōu)閯?chuàng)建其派生類CVideoInputDevice的對象,可以繼續(xù)用基類PVideoInputDevice的指針來指向派生類CVideoInputDevice的對象,使得在程序大框架不改動的情況下,迅速地加入增強功能。同樣,也可以用PVideoOutputDevice的一個新的派生類CVideoOutputDevice來實現(xiàn)性能更好的視頻顯示功能。
圖 2 視頻會議終端的實現(xiàn)框圖
4.2 MCU實現(xiàn)
圖3為MCU的實現(xiàn)框圖,通過與終端的實現(xiàn)框圖比較可以看到,終端的實現(xiàn)和MCU的實現(xiàn)大致一樣,這樣就有利于終端和MCU能共享一個底層的H.323庫,盡量減少重復(fù)開發(fā)的工作量。圖3中的InComingVideo類繼承于類PVideoChannel,Outgo?ingChannel類繼承于PVideoChannel,現(xiàn)在只需要建立一個視頻數(shù)據(jù)的混合區(qū),并在視頻圖像混合完成后進行字符疊加,使得InComingVideo類中的視頻數(shù)據(jù)寫入到視頻混合區(qū),Outgo?ingChannel類從視頻混合區(qū)中讀取經(jīng)過字符疊加后的視頻圖像,而整個程序的大框架無需改動,便可以用類似于視頻會議終端一樣的實現(xiàn)方法,實現(xiàn)MCU的功能以及音頻混音的功能。
當(dāng)前視頻會議的規(guī)模不斷擴大,使得MCU要容納的接入終端數(shù)不斷增多,接入終端顯示一般采用多畫面的形式。本文實現(xiàn)的視頻會議系統(tǒng)從原來只支持4畫面擴展為可以支持4畫面,8畫面,9畫面,16畫面,并實現(xiàn)單畫面輪轉(zhuǎn)等功能。同時,由于視頻會議系統(tǒng)中的MCU和各個終端可能處于不同的地理位置,MCU的位置只可能有一個,如何實現(xiàn)遠程控制并配置MCU是一個急需解決的問題。針對這個問題,本文增加了一個基于瀏覽器的Web服務(wù)程序的MCU服務(wù)器遠程配置管理系統(tǒng)。它可以使遠程用戶在授權(quán)的情況下,遠程進行MCU的配置管理工作。
圖3 視頻會議MCU的實現(xiàn)框圖
視頻會議系統(tǒng)中視頻會議系統(tǒng)是一種基于分組交換網(wǎng)絡(luò)的多媒體通訊系統(tǒng),所有的呼叫信令,控制信令,多媒體數(shù)據(jù)最終都是打成IP包的形式進行傳輸。本文分析了這種多媒體網(wǎng)絡(luò)通訊的特點,提出了一種基于開源的OpenH323項目的視頻會議系統(tǒng)。本文提出的H.323視頻會議系統(tǒng)已成功應(yīng)用于實際網(wǎng)絡(luò)數(shù)據(jù)處理中, 實踐證明該技術(shù)是一項可行的音視頻流捕獲技術(shù)。
[1]謝瑩凌,培剛.H.323視頻會議媒體流捕獲技術(shù)[J].電信技術(shù)研究,2012,42(4):12-16.
[2]ITU-T Recommendation.H.323 Packed-based multimedia communications systems[S].2003,07.
[3]李潔,吳正茂.移動終端實現(xiàn)視頻會議的解決方案研究[J].電視技術(shù),2012,36(19):193-195.
[4]孫少鵬,趙旨忠.基于Asterisk的SIP/H.323視頻網(wǎng)關(guān)研究[J].信息系統(tǒng)與網(wǎng)絡(luò),2013,43(6):6-9.
TN949.6
B
1671-0037(2014)04-80-2
國家自然科學(xué)基金(U1204609);河南省科學(xué)技術(shù)重點研究項目(14A510011)。
趙曉焱(1981-),女,講師,碩士,研究方向:多媒體網(wǎng)絡(luò)通信。