摘??要: 在研究RTP/RTCP協(xié)議特點(diǎn)與功能的基礎(chǔ)上,討論了基于RTP/RTCP協(xié)議實(shí)時(shí)視頻傳輸?shù)?a class="innerlink" href="http://ihrv.cn/tags/控制方法" title="控制方法" target="_blank">控制方法。通過此控制方法可以有效地提高RTP流的平穩(wěn)性,減小抖動(dòng),增加網(wǎng)絡(luò)帶寬的利用率,流暢地傳輸多媒體數(shù)據(jù)。利用GPS、RTP/RTCP等協(xié)議實(shí)現(xiàn)了手機(jī)報(bào)警系統(tǒng)。
關(guān)鍵詞: RTP/RTCP; Internet; H.263/H.264; G.729; GPS
?
隨著我國(guó)經(jīng)濟(jì)的迅速增長(zhǎng)和精神生活的不斷豐富,人們?cè)絹?lái)越熱衷于參加一些具有挑戰(zhàn)性的活動(dòng),而遇到危險(xiǎn)的幾率也大大增加,因此在困境中個(gè)人求助顯得格外重要。此外,因惡性案件嚴(yán)重地威脅到人身安全,所以要求相關(guān)部門加強(qiáng)整治社會(huì)治安力度、快捷有效地偵破案件。目前手機(jī)的應(yīng)用越來(lái)越普及,作為一項(xiàng)手機(jī)功能的拓展,構(gòu)建一套簡(jiǎn)單快捷的手機(jī)報(bào)警系統(tǒng)很有必要,也易于推廣。
手機(jī)報(bào)警系統(tǒng)是利用現(xiàn)有手機(jī)加載GPS技術(shù)、網(wǎng)絡(luò)協(xié)議RTP/RTCP以及H.263/H.264、G.729視音頻編碼方式實(shí)現(xiàn)的一鍵快速報(bào)警系統(tǒng)。一鍵快速報(bào)警后,手機(jī)終端不斷地發(fā)送其位置信息和周圍環(huán)境的音頻、視頻信息,從而實(shí)現(xiàn)其快捷、隱蔽的報(bào)警,為公安及相關(guān)部門施救或破案實(shí)時(shí)地提供有效的現(xiàn)場(chǎng)信息。
1 GPS及GPS信息采集
GPS(Global Positioning System)全球定位系統(tǒng)[1]是中距離圓形軌道衛(wèi)星定位系統(tǒng),可以為地球表面絕大部分地區(qū)提供準(zhǔn)確的定位和高精度的時(shí)間基準(zhǔn)。GPS信息包括經(jīng)度、緯度和采集時(shí)間等,即在定時(shí)器的控制下,手機(jī)不斷地采集GPS信息并發(fā)送相關(guān)數(shù)據(jù)。獲取GPS坐標(biāo)數(shù)據(jù)模塊的函數(shù)接口如下[2]:
(1)InitDevice()函數(shù):用于初始化GPS設(shè)備驅(qū)動(dòng)程序的函數(shù)接口。
(2)LoadThread()函數(shù):用于創(chuàng)建獲取GPS坐標(biāo)數(shù)據(jù)的線程函數(shù)接口。
(3)GPSThreadProc(_opt LPVOID lpParameter) 函數(shù):用于獲取GPS坐標(biāo)數(shù)據(jù)的函數(shù)接口。
(4)BackUpGPSData(MYGPSDATESEND GpsDate) 函數(shù):用于將獲取后的GPS坐標(biāo)數(shù)據(jù)以二制形式存儲(chǔ)在終端本地的函數(shù)接口。
(5)UnloadThread()函數(shù) :用于停止GPS線程運(yùn)行的函數(shù)接口。
(6)StopTime(int StopTime) 函數(shù):用于停止GPS獲取的時(shí)間設(shè)置。
2 RTP/RTCP協(xié)議及其傳輸控制方法
2.1 RTP/RTCP協(xié)議[3]
RTP協(xié)議是用于音頻、視頻等多媒體數(shù)據(jù)實(shí)時(shí)傳輸?shù)膮f(xié)議,它包括RTP和RTCP兩個(gè)子協(xié)議。其中,RTP用于實(shí)時(shí)數(shù)據(jù)端到端傳輸,RTP包中提供了時(shí)間戳即發(fā)送數(shù)據(jù)塊首字節(jié)的創(chuàng)建時(shí)間和序列號(hào),以達(dá)到數(shù)據(jù)的同步和重組;而RTCP包中含有已發(fā)送的數(shù)據(jù)包的數(shù)量、丟失數(shù)據(jù)包的情況和數(shù)據(jù)包到達(dá)時(shí)延抖動(dòng)等信息,可以監(jiān)視網(wǎng)絡(luò)的服務(wù)質(zhì)量、通信帶寬以及網(wǎng)上傳送的信息。發(fā)送端可以利用RTCP提供的信息動(dòng)態(tài)地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,可共同提供流量控制和擁塞控制服務(wù),能以有效的反饋和最小的開銷使傳輸效率最佳化,因而特別適合網(wǎng)上實(shí)時(shí)數(shù)據(jù)的傳送。RTP協(xié)議的數(shù)據(jù)包格式如圖 1所示。
?
?
??? 常用的RTCP包有五種:發(fā)送方報(bào)告包(SR)、接收者報(bào)告包(RR)、源描述包(SDES)、站點(diǎn)離開系統(tǒng)報(bào)告包(BYE)和特殊應(yīng)用包(APP)。包的主要數(shù)據(jù)項(xiàng)格式如圖2所示。
?
??? RTP包通過下層UDP 來(lái)實(shí)現(xiàn)數(shù)據(jù)的傳輸,數(shù)據(jù)裝載模型如圖3所示。
?
2.2 實(shí)時(shí)傳輸控制方法
? 遠(yuǎn)程網(wǎng)絡(luò)傳輸?shù)牟豢煽啃灾饕憩F(xiàn)在[4-5]三方面:(1)數(shù)據(jù)包“亂序到達(dá)”,先發(fā)送數(shù)據(jù)包有可能后到;(2)在Internet環(huán)境下,網(wǎng)絡(luò)傳輸帶寬變動(dòng)會(huì)引起發(fā)送的數(shù)據(jù)包丟失;(3)數(shù)據(jù)包到達(dá)的時(shí)延過大而產(chǎn)生抖動(dòng)會(huì)引起數(shù)據(jù)的失真。
? 而RTP/RTCP能很好地解決上述問題。首先,在接收端緩沖區(qū)中用RTP包中的序列號(hào)來(lái)調(diào)整到達(dá)數(shù)據(jù)包的順序,使之與發(fā)送時(shí)的數(shù)據(jù)順序一致;其次,為了改進(jìn)遠(yuǎn)程視頻傳輸系統(tǒng)的穩(wěn)定性,建立一個(gè)傳輸控制模型,這樣就可通過網(wǎng)絡(luò)狀況的反饋及時(shí)調(diào)整采樣頻率以及編碼格式以適應(yīng)當(dāng)前的網(wǎng)絡(luò)傳輸要求。RTCP利用主要的兩種控制包SR和RR反饋的信息如數(shù)據(jù)包丟失比、數(shù)據(jù)包丟失率、吞吐量和吞吐率、數(shù)據(jù)包到達(dá)時(shí)延抖動(dòng)J(interarrival jitter)和往返傳播時(shí)延等來(lái)調(diào)節(jié)實(shí)時(shí)傳輸,并調(diào)整系統(tǒng)的打包格式、發(fā)包速率來(lái)保證流暢地傳輸數(shù)據(jù)和清晰地播放視頻。其數(shù)據(jù)傳輸控制模型如圖4所示。
?
3 手機(jī)報(bào)警系統(tǒng)的組成
??? 手機(jī)報(bào)警系統(tǒng)的結(jié)構(gòu)框圖如圖5所示,由三大部分構(gòu)成:(1)信息采集部分,包括智能報(bào)警終端(手機(jī))、移動(dòng)無(wú)線傳輸網(wǎng)絡(luò)和接入服務(wù)器;(2)中央處理部分(服務(wù)器端),它是系統(tǒng)的核心,包括各個(gè)服務(wù)器單元、報(bào)警系統(tǒng)的接口等;(3)終端即110指揮中心處接入坐席(監(jiān)控端)。各部分功能如下。
?
??? 報(bào)警終端:
(1) 使用WinCE鍵盤鉤子模擬一鍵報(bào)警(長(zhǎng)按綠鍵)。
(2) 按鍵報(bào)警后,鍵盤不做任何響應(yīng)直至服務(wù)器發(fā)出結(jié)束指令。
(3) 按鍵報(bào)警后,手機(jī)獲取EEII號(hào)、啟動(dòng)GPRS進(jìn)行設(shè)備認(rèn)證。
(4) 認(rèn)證通過,開始傳遞報(bào)警數(shù)據(jù)直至服務(wù)器發(fā)出結(jié)束指令。
(5) 定時(shí)傳遞GPS坐標(biāo)信息。
(6) 手機(jī)本地保留報(bào)警數(shù)據(jù)直至無(wú)存儲(chǔ)空間為止。
服務(wù)器:
?、?服務(wù)器接到報(bào)警請(qǐng)求后,根據(jù)EEII號(hào)進(jìn)行身份驗(yàn)證;
?、?將報(bào)警索引信息寫入數(shù)據(jù)庫(kù),實(shí)時(shí)數(shù)據(jù)寫入文件;
③ 通知監(jiān)控端更新監(jiān)控對(duì)象列表;
④ 根據(jù)需要,實(shí)時(shí)轉(zhuǎn)發(fā)報(bào)警數(shù)據(jù)到監(jiān)控端;
?、?支持多個(gè)手機(jī)終端,維護(hù)在線報(bào)警手機(jī)列表;
?、?支持多個(gè)監(jiān)控端,維護(hù)在線監(jiān)控端列表。
監(jiān)控端:
(1) 可以定時(shí)刷新報(bào)警列表。
(2) 選擇報(bào)警對(duì)象進(jìn)行跟蹤。
(3) 動(dòng)態(tài)顯示報(bào)警信息。
(4) 發(fā)出“結(jié)束報(bào)警”指令。
4 手機(jī)報(bào)警系統(tǒng)的設(shè)計(jì)
手機(jī)報(bào)警系統(tǒng)的流程是:首先手機(jī)端發(fā)送注冊(cè)信號(hào)給服務(wù)器端進(jìn)行連接,注冊(cè)成功后開始音頻采集、視頻采集和GPS采集,同時(shí)進(jìn)行音視頻的壓縮編碼, RTP分包封裝,并且形成RTCP發(fā)送端報(bào)告,發(fā)送給服務(wù)器端。服務(wù)器根據(jù)報(bào)警信息進(jìn)行相關(guān)的處理:存儲(chǔ)數(shù)據(jù)、與監(jiān)控端進(jìn)行連接和發(fā)送報(bào)警信息。報(bào)警系統(tǒng)的邏輯框圖如圖6所示。
?
5 手機(jī)報(bào)警系統(tǒng)的實(shí)現(xiàn)
系統(tǒng)的實(shí)現(xiàn)是在Visual C++6.0環(huán)境下[6-8],采用H.263/H.264視頻編碼[9-10]和G726音頻壓縮編碼[11]。傳輸控制子系統(tǒng)是基于RTP/RTCP協(xié)議構(gòu)建,通過傳輸層的UDP? Socket完成實(shí)時(shí)傳輸。手機(jī)端負(fù)責(zé)按鍵報(bào)警,它包括如下幾個(gè)模塊:?jiǎn)?dòng)GPRS網(wǎng)絡(luò)模塊、采集音頻數(shù)據(jù)模塊、獲取GPS坐標(biāo)數(shù)據(jù)模塊、數(shù)據(jù)打包發(fā)送模塊。服務(wù)器端主要分為如下模塊:網(wǎng)絡(luò)管理模塊、協(xié)議分發(fā)模塊、代理模塊、管理模塊、登錄管理模塊、終端管理模塊、監(jiān)控端管理模塊、文件管理模塊、數(shù)據(jù)庫(kù)管理模塊、日志管理模塊及UI等模塊。
監(jiān)控端再現(xiàn)報(bào)警人的音視頻和GPS信息,其詳細(xì)實(shí)現(xiàn)如下:
(1) 監(jiān)控端注冊(cè),即監(jiān)控端軟件啟動(dòng)后,啟動(dòng)網(wǎng)絡(luò)監(jiān)聽,然后自動(dòng)向服務(wù)器進(jìn)行注冊(cè)(注冊(cè)內(nèi)容包括IP地址和端口號(hào))。如果超過15s服務(wù)器沒有響應(yīng),軟件給出錯(cuò)誤警告,然后退出系統(tǒng)。
(2) 心跳信號(hào),即監(jiān)控端軟件每15s發(fā)送心跳信號(hào)數(shù)據(jù)包給服務(wù)器,服務(wù)器據(jù)此來(lái)維護(hù)監(jiān)控端列表。
(3) 刷新報(bào)警列表,即軟件維持一個(gè)當(dāng)前報(bào)警對(duì)象的列表。報(bào)警列表的更新方式有兩種:
?、佘浖?dòng)并注冊(cè)后,服務(wù)器即返回當(dāng)前報(bào)警列表。
?、诋?dāng)服務(wù)器端報(bào)警列表更新的時(shí)候,向監(jiān)控端發(fā)送變更消息。
(4) 選擇報(bào)警對(duì)象進(jìn)行跟蹤,即發(fā)送“跟蹤”指令給服務(wù)器,如果成功回應(yīng),接收音視頻數(shù)據(jù),開始播放音視頻數(shù)據(jù);如果25s沒有應(yīng)答,則退出請(qǐng)求跟蹤。處理過程如圖7所示。
?
RTP協(xié)議中用于監(jiān)控端與服務(wù)器軟件的接口函數(shù)如下:
(1)RTPProtocolInit()函數(shù):用于初始化RTP,判斷連接服務(wù)器是否成功的函數(shù)接口。
(2)onCrlDataArrive(const RTPAddress frm,const CrlType crltype, unsigned char *data, const int length, const char *id)函數(shù):用于實(shí)時(shí)接收服務(wù)器返回的信息數(shù)據(jù)函數(shù)接口。
(3)SendData(CrlType crltype,unsigned char * Data,int Length) 函數(shù):利用RTP協(xié)議定時(shí)發(fā)送心跳信息及向服務(wù)器注冊(cè)的信息函數(shù)接口。
RTP/RTCP協(xié)議選取數(shù)據(jù)包丟失比、數(shù)據(jù)包丟失率、吞吐量和吞吐率、數(shù)據(jù)包到達(dá)時(shí)延抖動(dòng)和往返傳播時(shí)延等服務(wù)質(zhì)量控制參數(shù),作為動(dòng)態(tài)反饋來(lái)自動(dòng)判斷網(wǎng)絡(luò)狀況,并根據(jù)網(wǎng)絡(luò)狀況自動(dòng)調(diào)節(jié)編碼方式,因而這種協(xié)議非常適合多媒體數(shù)據(jù)實(shí)時(shí)傳輸?;赗TP/RTCP設(shè)計(jì)并成功實(shí)現(xiàn)了手機(jī)報(bào)警系統(tǒng),經(jīng)過仿真實(shí)驗(yàn),視頻、音頻等數(shù)據(jù)傳輸都很流暢,該系統(tǒng)正在測(cè)試和推廣使用中。手機(jī)用戶的大幅增加和手機(jī)費(fèi)用的逐步降低,為該技術(shù)的推廣提供了便利條件。
參考文獻(xiàn)
[1] ?LOVSE J W,? TESKEY W F, LACHAPELLE G, et al.Dynamic ?deformation monitoring of tall structures using?GPS technology[J]. Journal of Surveying Engineering.1995,121(1):35-40.
[2] ?周建鄭.GPS測(cè)量定位技術(shù)[M].北京:化學(xué)工業(yè)出版社,2004.
[3] ?SCHULZRINNE H, CASNER S, FREDEIRCK R, et a1.RTP: a transport? protocol for real—time applications[S].RFC 1889,1996.
[4] ?BUSSE I, DEFFNER B, SCHULZRINNE H. Dynamic?QoS control of multimedia applications based on RTP? [J].Computer Communication,1996,19(1):49-58.
[5] ?ZHANG Ke, XIE? Zhong Cheng, JU Jiu Bin. Real-time?repairing lost packets based on real—time transport protocol[J]. Journal of Software,2001,7(12):1042-1049.
[6] ?黃維通. Visual C++面向?qū)ο笈c可視化程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003:84-147.
[7] ?歐建平,婁強(qiáng)生.網(wǎng)絡(luò)與多媒體通信技術(shù)[M].北京:人民郵電出版社,2002.
[8] ?蔣東興. Windows Sockets 網(wǎng)絡(luò)程序設(shè)計(jì)大全[M].北京:清華大學(xué)出版社,1999:117-162.
[9] ?IETF? RFC2190. RTP payload format for H.263 video?streams[S].1997.
[10] WEN Ger. H.264/AV Cover IP? [J]. IEEET Rans Circuits-Syst Video Technology,2003,13: 645-656.
[11] CHOU P A, MORH A E, WANG A, et a1. Error control ?for receiver—driven layered multicast of audio and video?[J]. IEEE Transactions on? Multimedia,2001;3(1):l08-122.