張 勇
(中山大學 信息科學與技術(shù)學院,廣東 廣州 510006)
責任編輯:任健男
隨著網(wǎng)絡技術(shù)的快速發(fā)展和網(wǎng)絡基礎(chǔ)設施的逐步加強,高速的網(wǎng)絡為流媒體的普及提供了可能。近些年,視頻電話的研發(fā)也逐漸升溫。本文基于XMPP協(xié)議提出一種適用于數(shù)字家庭網(wǎng)絡環(huán)境下的視頻電話系統(tǒng),旨在將視頻電話與數(shù)字家庭視頻系統(tǒng)進行融合,為用戶提供便利舒適的通話體驗。
XMPP協(xié)議[1-3]是一種擴展消息和表示協(xié)議,XMPP是一種基于XML的協(xié)議,它繼承了在XML環(huán)境中靈活的發(fā)展性,用于即時消息(IM)以及在線現(xiàn)場探測,其擴展協(xié)議Jingle使得其支持語音和視頻。
ICE(Interactive Connectivity Establishment)是一種用于解決計算機網(wǎng)絡中NAT穿透問題[4-6]的常用技術(shù),被廣泛應用于VoIP,P2P傳輸系統(tǒng),即時通信等領(lǐng)域。ICE是由IETF的MMUSIC工作組開發(fā)出來的一種 framework,可整合 STUN(Simple Traversal of UDP Through Network Address Translators)[7-8]、TURN等NAT穿透技術(shù)。本系統(tǒng)將ICE技術(shù)與STUN技術(shù)進行整合完成NAT穿透,從而實現(xiàn)客戶端之間的直接通信,提高了音視頻傳輸?shù)膶崟r性。
XMPP協(xié)議是一種擴展消息和表示協(xié)議,XMPP是一種基于XML的協(xié)議,它繼承了在XML環(huán)境中靈活的發(fā)展性。XMPP協(xié)議定義了3種一級XML標簽:<pres?ence/>,<iq/>和<message/>。<presence/>標簽用于描述客戶端本身的狀態(tài)及可用性信息;<iq/>標簽用于客戶之間建立會話;<message/>標簽用于客戶端之間發(fā)送消息。
在會話建立過程中,客戶端通過<iq/>描述本次會話本身的屬性,包括接收流媒體數(shù)據(jù)的網(wǎng)絡實體地址、本地流媒體類型及載荷基本屬性等。其中網(wǎng)絡實體地址是通過STUN協(xié)議通過STUN Server獲得的公網(wǎng)通信地址(STUN協(xié)議將在下一節(jié)介紹)。圖1描述了音頻通話的會話過程,在此過程中主要包括ses?sion-initiate,session-info,session-accept,session-ter?minate等動作,在會話成功建立后,會話成員使用con?tent-add,content-modify,content-accept等動作添加新媒體——視頻(圖中未體現(xiàn))。
圖1 XMPP協(xié)議會話建立過程示意圖
視頻電話要解決的另一個關(guān)鍵問題是音視頻數(shù)據(jù)的實時傳輸,一個高效的音視頻數(shù)據(jù)傳輸方案直接影響視頻電話系統(tǒng)的可用性,更是關(guān)系到用戶體驗的關(guān)鍵問題。如果通過服務器轉(zhuǎn)發(fā)音視頻數(shù)據(jù)流,不僅增加了服務器的負荷,同時也大大影響了通話的實時性。XMPP協(xié)議描述以中ICE技術(shù)解決客戶端間對等通信問題,本文結(jié)合ICE技術(shù)介紹一種基于STUN協(xié)議的音視頻數(shù)據(jù)對等實時傳輸方案。
STUN是一個輕量級的協(xié)議,其算法實現(xiàn)了各種類型的NAT穿透(如圖2所示),是一個常用的NAT穿透協(xié)議。
圖2 STUN協(xié)議算法流程
視頻會話參與者通過STUN協(xié)議獲取自身在公網(wǎng)上的通信地址,并在會話建立的過程中通過XML描述告知媒體接收端。會話成功建立后,會話參與者便可與其他參與者實現(xiàn)音視頻數(shù)據(jù)的對等傳輸。
到目前為止,STUN協(xié)議僅僅完成的是外網(wǎng)通信地址的獲取,在負責多變的網(wǎng)絡環(huán)境下,要保證會話雙方通信的穩(wěn)定性這遠遠不夠。在這種情況下,ICE技術(shù)應運而生。ICE技術(shù)能夠在復雜網(wǎng)絡環(huán)境下,實現(xiàn)各種形式的NAT穿透,使得媒體流在通信雙方順利傳輸。
ICE技術(shù)是一種探索式的解決方案,其核心思想是收集本地及會話對方的所有可能通信地址,并對這些地址進行連通性檢查,從而得到一條能夠?qū)崿F(xiàn)NAT穿透的通信鏈路。為保證通信的穩(wěn)定性,在通信過程中需要不斷更新地址信息。
基于數(shù)字家庭環(huán)境的視頻電話的關(guān)鍵問題之一是將其與電視系統(tǒng)及視頻監(jiān)控系統(tǒng)的整合。就此考慮,論文討論的視頻電話客戶端被分為視頻采集設備、視頻接收解碼設備(整合到家庭視頻系統(tǒng)中)及會話管理設備,如圖3所示,它們都接入到家庭網(wǎng)絡中,并利用家庭網(wǎng)絡進行數(shù)據(jù)交換。
1)會話管理設備,完成XMPP協(xié)議的會話功能及STUN協(xié)議的客戶端功能,同時需要對視頻采集及接收設備進行調(diào)度。
2)視頻采集編碼設備,采集攝像頭的數(shù)據(jù)并對視頻數(shù)據(jù)進行編碼(采用流媒體編碼格式,如H.264,WebM等)。該設備接受會話管理設備的調(diào)度,與遠程客戶端的視頻解碼設備進行直接通信。
3)視頻接收解碼設備,接收來自遠程客戶端及視頻采集設備的視頻數(shù)據(jù),并對其進行解碼后播放,或通過DLNA將其推送到其他視頻設備播放。
圖3 系統(tǒng)物理結(jié)構(gòu)圖
視頻電話服務器是一個通用的Jabber服務器,主要負責所有用戶信息及會話請求的轉(zhuǎn)發(fā),同時還允許搭載一個STUN服務器。
根據(jù)需求客戶端軟件的主要模塊有XMPP會話管理、STUN客戶端、ICE連接管理、設備調(diào)度、視頻采集編碼模塊、視頻解碼播放模塊。
系統(tǒng)采用P2P架構(gòu)進行視頻傳輸,因此,首先需要通過STUN和ICE獲取本地視頻采集設備的外網(wǎng)通信地址實現(xiàn)NAT穿透,外網(wǎng)通信地址通過XMPP的candidate標簽發(fā)送給其他會話參與者。同時設備調(diào)度模塊通過ICE連接管理模塊定時檢測并獲取其他會話參與者外網(wǎng)通信地址。會話參與者獲得其他參與者的外網(wǎng)地址后,便可以直接向其發(fā)送音視頻數(shù)據(jù),而不需要通過服務器轉(zhuǎn)發(fā)。圖4描述了視頻會話啟動流程。
信息時代,網(wǎng)絡技術(shù)和信息技術(shù)的發(fā)展給人們的生活帶來了許多便利,與此同時,市場對信息產(chǎn)品的要求也不斷提高,傳統(tǒng)的電話已無法滿足日益增長的需求。在這一背景下,視頻電話應運而生并在這幾年得到了很好的發(fā)展。本文結(jié)合數(shù)字家庭產(chǎn)業(yè)環(huán)境,介紹了一種基于XMPP協(xié)議和ICE技術(shù)的視頻電話系統(tǒng),并將其與數(shù)字家庭視頻系統(tǒng)完美結(jié)合,為數(shù)字家庭用戶帶來一種新型的視頻通話體驗。
圖4 視頻會話啟動流程圖
[1]RFC 3920-3921,Extensible Messaging and Presence Protocol(XMPP):Core/Introduction[S].2004.
[2]Jabber Inc.Jabber White Paper:the XMPP cloud[EB/OL].[2008-11-05].http://www.jabber.com/CE/White-Paper.
[3]Jabber Inc.Core XMPP protocolstack[EB/OL].[2009-08-15].http://xmpp.org/protocols/.
[4]孫名松,段志鳴,王湛昱.混合式P2P網(wǎng)絡UDP下NAT穿越方案的研究與設計[J].計算機與數(shù)字工程,2010(4):104-107.
[5]李航,馬林華.IP音視頻穿越NAT技術(shù)的研究[J].通信技術(shù),2008(3):65-67.
[6]周曄,李生紅.基于ICE的VoIP穿越NAT改進方案[J].計算機安全,2008(10):29-32.
[7]ROSENBERG J,WEINBERGER J.RFC 3489,STUN-simple tra?versal of user datagram protocol through network address transla?tors[S].2003.
[8]史永林,潘進.STUN技術(shù)深入分析[J].電腦知識與技術(shù),2006,23(8):71-72.