李 瑞
摘 要:隨著多媒體計算機技術和通信技術的發展,人們已不滿足簡單的話音和文字通信,希望集語音、文字和圖像于一體的多媒體通信。網絡語音聊天系統就是這種新型的通信手段之一。就一種網絡語音聊天系統的設計與開發運用進行了闡述,對這一系統的性能進行了分析,并指出了它的不足之處。
關鍵詞:多媒體;網關;通信
中圖分類號: TP37
文獻標識碼: A
文章編號:1005-569X(2009)07-0101-02
1引言
隨著多媒體計算機技術和通信技術的發展,人們已不滿足簡單的話音和文字通信,希望集語音、文字和圖像于一體的多媒體通信。這是繼電報、電話傳真以及電子郵件之后,又一新的通信手段。網絡語音聊天系統就是這種新型的通信手段之一。它在同一傳輸線路上承載了多種媒體信息,即音頻和數據等,實現多點實時交互通信,同時也可以將不同地點人員的活動情況展現出來,這是一種快速高效、日益增長、廣泛應用的新的通信業務。
2多媒體網絡通信基本技術
2.1系統設計
服務器協調方案基于C/S模式,需設計一個高效的服務器程序,運行在一臺具有獨立IP地址的計算機上,主要用來完成發送和接收與客戶端進行交互的控制信令、數據轉發、維護客戶信息和客戶連接信息等功能。客戶端程序可以運行在具有獨立IP地址的計算機上,也可以運行在局域網內部,通過網關或防火墻連接到外部的機器上,這里要求防火墻的設置對客戶端程序透明,即客戶端程序本身不需要進行網關或代理的任何設置。客戶端程序主要完成發送和接收與服務器交互的控制信令、視頻/音頻編解碼、圖象顯示、白板信息處理、文件傳輸等功能。由于必須保證控制信息的正確性,因此,服務器和客戶端之間所有的控制信息均采用TCP/IP協議,而各客戶端之間的實時多媒體數據均采用UDP協議傳輸。整個系統的架構如圖1所示。

2.2工作流程
服務器和客戶端之間的控制信息通過TCP/IP協議進行連接,以兩個客戶端程序通過服務器程序建立連接的情況為例。服務器程序一啟動就在某一可用TCP端口Plisten監聽,隨時等待客戶端的連接。客戶端程序啟動后首先連接到服務器的Plisten端口,并將用戶名、密碼、IP地址、是否局域網內部IP地址等信息注冊到服務器,服務器備份這些信息,并將所有在線客戶的信息及時反饋給各客戶。
3網絡語音聊天系統的設計
3.1網絡語音聊天系統的總體目標
其設計目標是實現以下基本功能:
(1)局域網環境下實現網絡語音聊天服務器的架設;
(2)局域網環境下實現客戶端文本、音頻的傳輸;
(3)具有良好的用戶界面。
3.2網絡語音聊天系統的開發平臺
硬件平臺:PC機、話筒和揚聲器。
網絡平臺:支撐系統工作的局域網是實驗室內的10m/ loom自適應共享式以太網,采用星型拓撲結構,各臺工作站和MCU服務器都通過5類無屏蔽雙絞線連接到網絡集線器上。
操作系統:Windows XP(sp2)。
編程語言:Visual C++。
3.3網絡語音聊天系統的設計
設計思路是發送聲音的一端將硬件接口采集到的聲音數據通過Socket發送到另外一端,另外一端根據得到的聲音數據調用硬件接口播放聲音。其核心就是聲音數據的采集,播放和聲音數據的網絡傳輸。
根據這個思路,需要設計出如下幾個模塊:
(1)負責接收連接的服務器Socket模塊:負責該程序作為服務器時的網絡斷口監聽。
(2)負責接收/發送數據的客戶端Socket模塊:負責對Socket的發送數據和接收數據進行信息處理。
(3)聲卡數據的采集和播放模塊:采用相關波形音頻API,負責采集聲音數據和播放聲音數據。
(4)主框架的參數設定,消息處理和界面控制模塊:負責控制整個程序的操作,負責處理用戶的輸入參數,負責處理聲卡消息和socket消息。
4 網絡語音聊天系統的實現與性能分析
4.1網絡語音聊天系統的實現
該程序是一個基于對話框的應用程序,在創建VC++工程項目中,包括以下的一些文件:
服務器Socket程序為ServerSocket.h/ServerSocket.cpp,在服務器中,負責監聽網絡連接的類;
客戶端Socket程序為ClientSocket.h/ClientSocket.cpp,負責對Socket發送數據和接收數據進行消息處理;
音頻數據處理程序為Sound.h/Sound.cpp,采用相關聲卡API,負責采集聲音數據和播放聲音數據;
主框架程序為ChatRoomDlg.h/ChatRoomDlg.cpp,顯示主窗口的對話框和各種消息處理。
4.2系統運行環境
4.2.1 系統硬件平臺
系統硬件包括普通的PC機,耳機,麥克風等。
4.2.2 系統軟件平臺
本文的程序在 Microsoft Windows XP 操作系統下才可運行。需要用VC 6.0 或者VC.NET調試運行。
4.3網絡語音聊天系統的性能分析
4.3.1 數據在網絡上的傳輸
本程序只能運行在有真實IP的PC機上,相對于即時通信軟件QQ,MSN等有很大的局限性。在文本聊天下,由于網絡情況比通信軟件QQ、MSN等更簡單,因此發送、傳播速度很快,而即時通信軟件QQ、MSN等則有明顯的延遲。
4.3.2 機器差異對程序的影響
內存的大小與電話中的語音的連續性和延遲性有很大的關心,內存越大,則語音的連續性越好,但延遲性越差,反之,內存越小,則語音的延遲性越小,但連續性越差。內存的數量與內存的大小和對每個內存的錄音數據的處理時間長短有關,一定要保證在錄音過程中,錄音設備至少有一塊內存可供錄音,也就是說錄滿的內存要及時返回,使得循環能夠順利進行。
5結論
本軟件使用了Winsock編程技術,結合WIN32 API提供的多媒體函數接口,但是仍存在很多不足之處,表現為:
(1)對于音頻的處理過于簡陋,只是能夠傳輸聲音而已,沒有對聲音進行優化、壓縮等處理;
(2)只能運行于有真實IP的PC機,對于多媒體數據的跨網關傳輸以及對于網內虛擬IP等情況沒有進行考慮。
參考文獻:
[1] 譚浩強. C程序設計[M].北京: 清華大學出版社, 2000.
[2] Brian W.Kernighan, Dennis M.ritchie. TER C Programming Language(Second Edition)。Prentice Hall,1997.
[3] 蕭秋水,文娟. Windows 網絡編程之 VC 篇[M]. 北京: 清華大學出版社, 2001.
[4] 丁展,劉海英. visual c++網絡通信編程實用案例精選[M].北京: 人民郵電出版社, 2004.
[5] 虞益誠. 網絡技術和應用[M]. 南京: 東南大學出版社, 2005.