趙曉焱 張會芝
(河南師范大學計算機與信息技術學院,河南 新鄉 453007)
基于H.323協議的視頻會議系統
趙曉焱 張會芝
(河南師范大學計算機與信息技術學院,河南 新鄉 453007)
視頻會議系統是一種基于分組交換網絡的多媒體通訊系統,針對多媒體網絡通訊的特點,分析了基于H.323協議的開源項目OpenH 323,提出了一種面向對象的系統架構,對系統中的對象做了詳細的介紹,并給出了終端和多點控制單元(MCU)的詳細實現過程。
視頻會議;分組交換;多點控制單元
隨著計算機通信技術的發展以及互聯網帶寬的不斷增大,分組交換網絡的可視電話和視頻會議系統已廣泛應用于各個領域[1]。為了使得各個不同的可視電話廠商生產的產品互通,國際電信聯盟(ITU)制定了在分組交換網絡上運行的視頻會議通訊標準H.323[2]。H.323包括了H.245、H.225等一系列協議,主要描述了基于分組的多媒體通信系統的概念、結構以及呼叫流程[3]。標準的制定更加促進了視頻會議的發展與普及,因而視頻會議相關技術已經成為業界和學術界的一個研究熱點。
OpenH323項目是澳大利亞的Equivalence Pty Ltd公司組織開發的H323協議框架,實現了一套復雜的H.323通訊系統,主要是免費提供給所有想從事VOIP和網絡視頻傳輸的軟件開發商使用。OpenH323協議庫完全符合H.323協議的,能和任何符合該協議的軟件進行視頻和語音通訊。當兩個終端進行通信時,一端向另一端的H.323端口1 720建立一條連接。然后,兩終端在此連接上發送Q.931包,在這些交換的數據包中,兩終端發送動態的端口用于建立H.245連接。H.245處理所有的呼叫參數協商,例如所要用的編碼解碼算法等。一旦這些參數協商完畢,H.245會話開始執行Open Logical Channel過程,為特定的媒體流(如音頻或視頻)建立邏輯通道。然后,這些媒體流就可以在兩個終端之間進行傳輸,直到會話結束。
OpenH323項目為了兼容不同的操作系統,編寫了能兼容LINUX和WINDOWS系統的類庫PWLIB,PTLIB,使得在這些類庫上層的OpenH323庫能夠跨平臺使用。OpenH323的優勢在于它比較完整的實現了ITU關于H.323的建議,可以實現基于IP的各種電話應用,包括語音、視頻、會議以及傳真等。通過該協議可以定制出自己需要的各種H.323實體,對商業用戶和個人開發者來說都具有很大的吸引力,本文提出的視頻會議系統就是基于OpenH323項目進行開發。
H.323會議系統中傳輸的信息流中包含音頻、視頻、數據和控制信息[4]。所有的信息流均采用H.225協議來進行打包和傳送。為了實現在會議系統中傳輸上述信息流,H.323協議定義的多媒體會議系統主要由終端、網閘(Gatekeeper)、網關(Gateway)、多點控制器(MC)、多點處理器(MP)和多點控制單元(MCU)等組成,如圖1所示。

圖 1 H.323視頻會議系統組成
H.323終端是能夠在分組交換網絡中提供實時、雙向通信的節點設備。網守是H.323系統的一個可選組件,其功能是向H.323終端提供呼叫控制服務。多點控制單元可以用于支持三個以上終端設備的會議。在H.323系統中,一個多點控制單元由一個多點控制器(MC)和幾個多點處理器(MP)組成,但也可以不包含MP。網關是H.323會議系統的一個可選件,網關能提供很多服務,其中包含H.323會議節點設備與其他ITU標準相兼容的終端之間的轉換功能,這種功能包括數據傳輸格式(如H.225.0到H.221)和通信規程的轉換(如H.245到H.242)。
基于OpenH323視頻會議系統的實現主要包含終端的實現和MCU的實現。應用程序一般要建立一個H323EndPoint類的派生類實例。通過H323Endpoint類可以直接或者間接地對整個OpenH323協議的各種主要的類進行調用和處理派生類,H323 Endpoint類封裝了很多的方法。當響應應用程序實現H323Endpoint的類的派生時,通常會定義在H323協議棧中沒有定義的屬性和方法,這些屬性和方法用于設定終端的一些初始化的,或者基本的屬性。例如振鈴時播放的音樂文件的名稱,缺省的呼叫設置,終端的能力集等。
而在每個H323EndPoint類中,一般會創建一個或者多個H323Listener類的派生類的實例,每一個實例對應于后臺處理的守聽線程。當檢測到新的呼入時,就會創建一個H323Transport類的實例,負責信息的網絡傳輸。
4.1 終端實現
OpenH323網站有兩個終端的源代碼:OpenPhone和OhPhone,OhPhone是一個命令行的終端程序,負責傳輸音頻。OpenPhone是一個基于PWLib庫的窗口程序,可以傳輸視頻,但支持的視頻標準只有未能實現完整的H.261標準。由于終端直接面對用戶,所以在一定程度上界面設計要美觀,而基于PWLib圖像庫的界面元素太少,而且界面對象使用起來也不方便,因此本文視頻會議終端使用PWLIB中與GUI無關的類庫,如I/O功能API、多線程API、時間函數API等,而對于與GUI有關的部分,采用MFC類庫進行開發,保證了用戶終端的親和性和美觀性。
OpenPhone本地視頻采集和視頻圖像的顯示效果不理想。視頻采集時效率很低下,視頻采集圖像幀率的最大值為10幀左右。即使視頻解碼器可以計算更高幀率的視頻圖像,但由于視頻采集的瓶頸,還是會使得圖像的幀率變低,停頓比較明顯,降低了圖像的顯示效果,浪費了視頻會議終端的計算能力。為了解決這個問題,新的終端采用了DIRECTSHOW中的視頻采集技術,使得視頻圖像的采集幀率可以達到20幀。對于圖像的顯示,原來的OpenPhone的顯示效率也很低下,所以顯示模塊改為DIRECTDRAW的顯示方式。
圖2描述了視頻會議終端的實現,其中視頻采集模塊由類PVideoInputDevice來實現。由于該實現類的采集效果不理想,本文使用其派生類CVideoInputDevice來實現DIRECTSHOW的視頻采集技術,利用C++語言的多態性,將原來代碼創建PVideoInputDevice對象改變為創建其派生類CVideoInputDevice的對象,可以繼續用基類PVideoInputDevice的指針來指向派生類CVideoInputDevice的對象,使得在程序大框架不改動的情況下,迅速地加入增強功能。同樣,也可以用PVideoOutputDevice的一個新的派生類CVideoOutputDevice來實現性能更好的視頻顯示功能。

圖 2 視頻會議終端的實現框圖
4.2 MCU實現
圖3為MCU的實現框圖,通過與終端的實現框圖比較可以看到,終端的實現和MCU的實現大致一樣,這樣就有利于終端和MCU能共享一個底層的H.323庫,盡量減少重復開發的工作量。圖3中的InComingVideo類繼承于類PVideoChannel,Outgo?ingChannel類繼承于PVideoChannel,現在只需要建立一個視頻數據的混合區,并在視頻圖像混合完成后進行字符疊加,使得InComingVideo類中的視頻數據寫入到視頻混合區,Outgo?ingChannel類從視頻混合區中讀取經過字符疊加后的視頻圖像,而整個程序的大框架無需改動,便可以用類似于視頻會議終端一樣的實現方法,實現MCU的功能以及音頻混音的功能。
當前視頻會議的規模不斷擴大,使得MCU要容納的接入終端數不斷增多,接入終端顯示一般采用多畫面的形式。本文實現的視頻會議系統從原來只支持4畫面擴展為可以支持4畫面,8畫面,9畫面,16畫面,并實現單畫面輪轉等功能。同時,由于視頻會議系統中的MCU和各個終端可能處于不同的地理位置,MCU的位置只可能有一個,如何實現遠程控制并配置MCU是一個急需解決的問題。針對這個問題,本文增加了一個基于瀏覽器的Web服務程序的MCU服務器遠程配置管理系統。它可以使遠程用戶在授權的情況下,遠程進行MCU的配置管理工作。

圖3 視頻會議MCU的實現框圖
視頻會議系統中視頻會議系統是一種基于分組交換網絡的多媒體通訊系統,所有的呼叫信令,控制信令,多媒體數據最終都是打成IP包的形式進行傳輸。本文分析了這種多媒體網絡通訊的特點,提出了一種基于開源的OpenH323項目的視頻會議系統。本文提出的H.323視頻會議系統已成功應用于實際網絡數據處理中, 實踐證明該技術是一項可行的音視頻流捕獲技術。
[1]謝瑩凌,培剛.H.323視頻會議媒體流捕獲技術[J].電信技術研究,2012,42(4):12-16.
[2]ITU-T Recommendation.H.323 Packed-based multimedia communications systems[S].2003,07.
[3]李潔,吳正茂.移動終端實現視頻會議的解決方案研究[J].電視技術,2012,36(19):193-195.
[4]孫少鵬,趙旨忠.基于Asterisk的SIP/H.323視頻網關研究[J].信息系統與網絡,2013,43(6):6-9.
TN949.6
B
1671-0037(2014)04-80-2
國家自然科學基金(U1204609);河南省科學技術重點研究項目(14A510011)。
趙曉焱(1981-),女,講師,碩士,研究方向:多媒體網絡通信。