2 H.323系統(tǒng)及終端結(jié)構(gòu)
H.323是國際電信聯(lián)盟電信標準部(ITU-T)制定的標準,用來在基于包交換的網(wǎng)絡(luò)上傳輸音頻、視頻和數(shù)據(jù)[1]。它描述了呼叫信令和控制、多媒體傳輸和控制、帶寬控制以及多點會議等業(yè)務(wù),主要由終端(Terminal)、網(wǎng)關(guān)(Gateway)、網(wǎng)守(Gatekeeper)和多點控制單元(MCU)4部分組成。H.323系統(tǒng)的基本組成單位是“域”(Zone),一個域至少包括一個終端,而且必須有一個且只有一個GK。圖1是一個典型的H.323系統(tǒng)。
H.323終端是提供單向或雙向?qū)崟r通信的客戶端,具有對視頻和音頻信號的編解碼及顯示功能,還具有傳送靜止圖像、文件、共享應(yīng)用程序等數(shù)據(jù)通信功能[2]。H.323終端允許不對稱的視頻傳輸,即通信雙方可以以不同的圖像格式、幀頻和速率進行傳輸,這給參會者帶來了很大的靈活性。本系統(tǒng)采用的終端結(jié)構(gòu)和相應(yīng)的協(xié)議,其中涉及的協(xié)議如下:
(1)H.225:基于分組的多媒體通信系統(tǒng)中的呼叫信令和媒體流打包協(xié)議,定義通信中的具體信令和RTP/RTCP的用法;
(2)RAS:端點和網(wǎng)守之間的協(xié)議,采用H.225中的消息在端點和網(wǎng)守之間實現(xiàn)注冊、接入許可、帶寬修改、狀態(tài)和拆除程序等功能,打開RAS信令通路后才建立其他H.323通路,RAS、呼叫信令通路和H.245控制通路是各自獨立的,沒有網(wǎng)守的網(wǎng)絡(luò)環(huán)境是不用RAS信令的;
(3)G.711:語音PCM編解碼標準(64 kbit/s);
(4)G.722:7 kHz音頻編解碼標準(64 kbit/s);
(5)G.723.1:低速語音編解碼建議,提供高效語音壓縮編解碼(5.3 kbit/s或6.3 kbit/s);
(6)G.729:低速語音編解碼建議,電話網(wǎng)質(zhì)量的語音編碼(8 kbit/s);
(7)H.261:視頻編解碼標準(N×64 kbit/s);
(8)H.263:低比特率視頻編解碼標準(速率由網(wǎng)絡(luò)和終端決定,最低可達20 kbit/s左右);
(9)H.245:多媒體通信控制協(xié)議,管理H.323系統(tǒng)的端到端控制消息,包括能力交換、邏輯信道的開關(guān)等過程;
(10)T.120:多媒體數(shù)據(jù)傳輸協(xié)議。
3 H.323終端實現(xiàn)方法
3.1 API及應(yīng)用程序結(jié)構(gòu)
本文的H.323終端實現(xiàn)運用了OpenH323 Library,PWLib(Portable Windows Library)等API。OpenH323 Library[3]是建立在PWLib[3]上的一種開放源碼的C++類庫,描述的是H323 Version2.0,適用于Windows平臺和Unix平臺。 OpenH323 Library的結(jié)構(gòu)比較復(fù)雜,包含100多個類,每個類都代表H.323協(xié)議中的某個單元或功能[4],主要是H323Endpoint,H323Listener,H323Transport,H323Connection,H245Negotiator,H323Channel,H323Capability和H323Codec這幾個類,其中最重要的是H323Endpoint和H323Connection,前者是所有基于OpenH323 Library的基礎(chǔ)。應(yīng)用程序一般要創(chuàng)建一個H323Endpoint類的派生類的實例,這是因為通過H323Endpoint類可以直接或間接地對整個OpenH323 Library的各種主要類進行調(diào)用和處理。應(yīng)用程序可以在H323Endpoint派生類中定義各種屬性和方法,這些屬性和方法可用于設(shè)定終端的一些初始化的或者基本的屬性,如振鈴時播放的音樂文件的名稱,缺省的呼叫設(shè)置,終端的能力集等等。
可以看出,各個類之間的關(guān)系是相當密切和復(fù)雜的,然而,亦有著很清晰的主線。上圖的核心是Endpoint(H323Endpoint),該類包含了3大功能:
(1)能力管理—對應(yīng)Capability:每一個Capability類的派生類對應(yīng)一個H323Codec類的派生類,而Codec實例是在邏輯信道Channel的實例中使用的。Codec的實例由相關(guān)的Capability實例負責(zé)創(chuàng)建。
(2)連接管理—對應(yīng)Connection:一個終端可以包含多個連接,由一個“連接字典”管理這些連接,每一個連接可能對應(yīng)多個Channel和Negotiator。
(3)偵聽管理—對應(yīng)Listener:偵聽線程在接收到呼入時,創(chuàng)建Transport實例,再在Transport的基礎(chǔ)上建立Connection。運用OpenH323 Library開發(fā)基于H.323協(xié)議的多媒體應(yīng)用程序。
3.2 終端實例
本系統(tǒng)的開發(fā)環(huán)境是由實驗室PC機組成的局域網(wǎng),每臺PC機都配有攝像頭、麥克風(fēng)等多媒體設(shè)備,以Wingdows2000professional為平臺,采用VC++6.0作為開發(fā)工具。本實例主要包括MyH323EndPoint類(代表終端,繼承自H323EndPoint)、MyH323Connection類(代表一個連接,繼承自H323Connection)和幾個用戶接口類,圖5是終端實現(xiàn)流程圖,包含以下幾個階段:
(1)應(yīng)用程序初始化:這部分主要是對應(yīng)用程序進行初始化工作,包括應(yīng)用程序各種命令的幫助信息的顯示,分析用戶輸入,設(shè)置應(yīng)用程序參數(shù)等。
(2)創(chuàng)建MyH323EndPoint實例:這是通過調(diào)用繼承自H323EndPoint類的MyH323EndPoint類的構(gòu)造函數(shù)來實現(xiàn)的。
(3)初始化MyH323EndPoint實例:調(diào)用MyH323EndPoint:Initialise函數(shù)對終端實例進行初始化,包括設(shè)置(獲得)本地用戶名,本地偵聽端口,缺省呼叫設(shè)置,查找和設(shè)置視頻音頻設(shè)備和參數(shù),設(shè)置終端能力集,打開RAS的信道和H.225的TCP信道。
(4)等待呼入或發(fā)起呼叫:根據(jù)用戶的命令,進入等待呼入狀態(tài)(打開TCP偵聽線程)或者發(fā)起一個新的呼叫(調(diào)用MyH323EndPoint::MakeOutgoingCall)。
(5)等待用戶命令:調(diào)用MyH323EndPoint::AwaitTermination函數(shù),等待用戶的輸入命令,然后根據(jù)用戶的輸入命令執(zhí)行不同的操作(呼叫保持,呼叫前轉(zhuǎn),調(diào)整音量…)。
H323終端在發(fā)起呼叫或者接納一個呼入時,一般遵循以下5個過程:
A:呼叫建立,包括接納控制(H.225信令,RAS過程);
B:通信能力交換和模式設(shè)定,以協(xié)調(diào)通信雙方的互通性(H.245控制過程);
C:建立聲像通信邏輯通道,包括會議通信的建立(H.245控制過程);
D:通信過程中的呼叫服務(wù),包括帶寬修改,由點到點通信擴展為會議通信等(H.225信令,RAS過程);
E:呼叫終結(jié),關(guān)閉所有信道(H.245控制過程)。
4 結(jié)論
本文在介紹H.323電視會議系統(tǒng)及其終端結(jié)構(gòu)的基礎(chǔ)上,用一個實例說明了如何通過OpenH323 Library來實現(xiàn)H.323電視會議系統(tǒng)終端。
ChinaByte(e.chinabyte.com)—中國有線電視