張楠德
摘 要:文章介紹了智能家居視頻監(jiān)控中使用的RTSP和RTP協(xié)議的原理和應(yīng)用。首先對智能家居視頻監(jiān)控系統(tǒng)進(jìn)行了總體的概述,分析RTSP和RTP的協(xié)議格式和流媒體技術(shù)特點(diǎn),最后重點(diǎn)分析了視頻監(jiān)控的系統(tǒng)模型,并且介紹了視頻流的獲取流程。
關(guān)鍵詞:RTSP;視頻監(jiān)控;流媒體
引言
隨著智能家居的普及,人們對家中安全越來越重視,利用視頻監(jiān)控手段來觀察家中情況成為人們關(guān)心家庭安全的常用方式。近年來,互聯(lián)網(wǎng)技術(shù)的蓬勃發(fā)展和網(wǎng)絡(luò)帶寬的有效提升,使得流媒體實(shí)時(shí)傳輸技術(shù)成為研究智能家居視頻監(jiān)控的熱點(diǎn)。當(dāng)前互聯(lián)網(wǎng)環(huán)境中提供的是盡力而為(Best-effort)的傳輸服務(wù),帶寬、延時(shí)等是隨時(shí)間而變化,這容易產(chǎn)生丟包、時(shí)延、抖動(dòng)等問題,導(dǎo)致媒體播放不清晰,影響用戶體驗(yàn)。因此,需要設(shè)計(jì)一個(gè)良好的傳輸系統(tǒng)并研究其關(guān)鍵技術(shù)來解決這些潛在的問題。文章結(jié)合項(xiàng)目實(shí)際需要,設(shè)計(jì)并實(shí)現(xiàn)了一種基于RTSP 和RTP等高效實(shí)時(shí)傳輸策略的智能家居視頻監(jiān)控流媒體傳輸系統(tǒng)。
1 智能家居視頻監(jiān)控系統(tǒng)整體概述
智能家居系統(tǒng)整體框架如圖1所示,智能家居系統(tǒng)由外部Internet網(wǎng)絡(luò)、家庭內(nèi)部網(wǎng)絡(luò)、智能家居網(wǎng)關(guān)、家居設(shè)備傳感器、客戶端組成。智能家居網(wǎng)關(guān)作為整個(gè)智能家居系統(tǒng)的中心樞紐,維系著外部Internet網(wǎng)絡(luò)和家庭內(nèi)部網(wǎng)絡(luò)之間的關(guān)系,充當(dāng)通信橋梁的作用,為數(shù)據(jù)的跨異構(gòu)網(wǎng)絡(luò)傳輸提供網(wǎng)絡(luò)平臺。網(wǎng)關(guān)的工作原理如下:網(wǎng)關(guān)連接遠(yuǎn)程服務(wù)器,監(jiān)聽遠(yuǎn)程服務(wù)器發(fā)送過來的控制和查詢命令,解析命令并將命令按照指定的格式發(fā)送給智能家居內(nèi)部網(wǎng)絡(luò)的前端設(shè)備節(jié)點(diǎn),實(shí)現(xiàn)對各設(shè)備的控制;同時(shí)作為智能家居內(nèi)部網(wǎng)絡(luò)的信息匯聚節(jié)點(diǎn),它接收來自各前端設(shè)備節(jié)點(diǎn)的數(shù)據(jù)信息,并對數(shù)據(jù)進(jìn)行處理后發(fā)送到遠(yuǎn)程服務(wù)器,從而完成智能家居系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)的異構(gòu)網(wǎng)傳輸[2]。
視頻模塊作為物聯(lián)網(wǎng)網(wǎng)關(guān)的一個(gè)子模塊,管理網(wǎng)絡(luò)攝像機(jī)在數(shù)據(jù)庫的后臺存放和獲取視頻流并轉(zhuǎn)發(fā)給手機(jī)客戶端。視頻模塊接收到手機(jī)客戶端獲取視頻流的請求,視頻模塊分析請求的合理性,并根據(jù)請求信息獲取對應(yīng)網(wǎng)絡(luò)攝像機(jī)的視頻流,并將視頻流轉(zhuǎn)發(fā)給手機(jī)客戶端,客戶端再將視頻流解碼播放。
2 RTSP與RTP規(guī)范
2.1 RTSP 協(xié)議
RTSP協(xié)議(Real Time Streaming Protocol,實(shí)時(shí)流傳輸協(xié)議)是一種流媒體控制協(xié)議,它使用TCP或UDP完成數(shù)據(jù)傳輸,可以用來控制視頻或音頻的多媒體串流協(xié)議,允許多個(gè)串流同時(shí)控制。RTSP在媒體服務(wù)中充當(dāng)“網(wǎng)絡(luò)遠(yuǎn)程控制”角色,它為媒體傳輸提供遠(yuǎn)程控制功能,如播放、暫停、快進(jìn)、快退等功能。由于RTSP協(xié)議信息控制傳輸協(xié)議,它并不傳輸流媒體數(shù)據(jù),因此RTSP需要與RTP/RTCP協(xié)議配合使用。RTSP是雙向協(xié)議,在客戶端和服務(wù)器都可以發(fā)出請求,故消息包括請求(Request)和響應(yīng)(Response)兩種。
2.1.1 請求報(bào)文
圖2為RTSP請求報(bào)文的語法結(jié)構(gòu),RTSP通過請求報(bào)文向服務(wù)器發(fā)出請求,在請求報(bào)文中,開始行是請求行,包括方法、URL、版本和CRLF。其中,請求報(bào)文的方法一般包括 OPTIONS、DESCRIBE、SETUP、PLAY、TEARDOWN、PAUSE、等。URL是接收方的地址,例如“rtsp://192.168.1.90:554/h264/ch1/main/av_stream”,版本一般為“RTSP/1.0”;CRLF用于每個(gè)消息行的后面,表示回車換行,最后一個(gè)消息行后需要跟兩個(gè)CRLF。消息體是可選的,有的Request消息并不帶消息體。
2.1.2 響應(yīng)報(bào)文
圖3是RTSP 響應(yīng)報(bào)文的語法結(jié)構(gòu),響應(yīng)報(bào)文為服務(wù)器對客服端的請求做出回應(yīng)的報(bào)文,在響應(yīng)報(bào)文中,開始行為狀態(tài)行。版本為“RTSP/1.0”;狀態(tài)碼表示請求消息的執(zhí)行結(jié)果,通常用一個(gè)數(shù)值表示,值為200時(shí)表示成功;短語內(nèi)容為與狀態(tài)碼相對應(yīng)的文本解釋,成功時(shí)短語內(nèi)容為“OK”。
2.2 RTP 協(xié)議
RTP(Real-time Transport Protocol,實(shí)時(shí)傳輸協(xié)議)是一個(gè)網(wǎng)絡(luò)傳輸協(xié)議,主要用于在互聯(lián)網(wǎng)上傳遞音頻和視頻數(shù)據(jù),它為多媒體提供具有實(shí)時(shí)特征的端對端傳送服務(wù),保證時(shí)間信息和流同步。每一個(gè) RTP 數(shù)據(jù)包都由兩個(gè)固定部分組成,分別是包頭(Header)和載荷(Payload)。其中包頭前12個(gè)字節(jié)的含義是固定的,載荷可以是視頻或音頻幀數(shù)據(jù)。RTP 分組包頭結(jié)構(gòu)如圖4所示。
3 基于RPSP+RTP協(xié)議的智能家居視頻監(jiān)控系統(tǒng)模型
3.1 視頻監(jiān)控系統(tǒng)模型
基于RTSP+RTP協(xié)議的智能家居系統(tǒng)視頻監(jiān)控系統(tǒng)模型如圖5所示,它由網(wǎng)絡(luò)攝像機(jī),智能家居網(wǎng)關(guān),手機(jī)客戶端三部分組成。當(dāng)用戶打開視頻監(jiān)控界面時(shí),手機(jī)客戶端向智能家居網(wǎng)關(guān)發(fā)送獲取視頻流請求,網(wǎng)關(guān)收到請求后根據(jù)請求消息的id號查找后臺數(shù)據(jù)庫對應(yīng)的網(wǎng)絡(luò)攝像機(jī),根據(jù)用戶的用戶名、密碼、RTSP端口號和http端口號等信息封裝成RTSP消息,通過socket端口向網(wǎng)絡(luò)攝像機(jī)發(fā)送獲取視頻流請求。智能家居網(wǎng)關(guān)收到視頻流數(shù)據(jù)后再把數(shù)據(jù)轉(zhuǎn)發(fā)給客戶客戶端,客戶端對收到的視頻流數(shù)據(jù)進(jìn)行解碼和播放。
3.2 后臺數(shù)據(jù)庫管理模塊
智能家居網(wǎng)關(guān)后臺建立一個(gè)數(shù)據(jù)庫用于儲(chǔ)存用戶的網(wǎng)絡(luò)攝像機(jī)信息,包括網(wǎng)絡(luò)攝像機(jī)在局域網(wǎng)的ip地址、流媒體服務(wù)端口、http端口、訪問流媒體的用戶名和密碼、用戶自定義的網(wǎng)絡(luò)攝像機(jī)別名,每個(gè)攝像機(jī)的信息都對應(yīng)一個(gè)id號??蛻舳送ㄟ^使用http協(xié)議與智能家居網(wǎng)關(guān)web服務(wù)器通訊,調(diào)用cgi對網(wǎng)絡(luò)攝像機(jī)在數(shù)據(jù)庫中的添加、刪除、修改、查看操作。當(dāng)用戶添加網(wǎng)絡(luò)攝像機(jī)信息時(shí),調(diào)用添加網(wǎng)絡(luò)攝像機(jī)cgi向智能家居網(wǎng)關(guān)發(fā)生添加請求,網(wǎng)關(guān)對客戶端發(fā)送的參數(shù)進(jìn)行合法性檢查,如果參數(shù)正確則把網(wǎng)絡(luò)攝像機(jī)參數(shù)添加到網(wǎng)絡(luò)攝像機(jī)配置數(shù)據(jù)庫中,并返回添加網(wǎng)絡(luò)攝像機(jī)成功的結(jié)果給客戶端,如果失敗則返回失敗的原因給客戶端。當(dāng)客戶向網(wǎng)關(guān)發(fā)起預(yù)覽視頻請求時(shí),網(wǎng)關(guān)根據(jù)請求信息的id號來查找數(shù)據(jù)庫中對應(yīng)的攝像頭信息,再利用RTSP協(xié)議與網(wǎng)絡(luò)攝像頭的媒體服務(wù)器建立通信獲取數(shù)據(jù)。
3.3 獲取視頻流流程
智能家居網(wǎng)關(guān)向在線網(wǎng)絡(luò)攝像機(jī)獲取視頻流數(shù)據(jù)過程如圖6所示[3],Client、RTSP Server、subsession、Source、RTSP Sink為視頻流數(shù)據(jù)傳輸?shù)慕橘|(zhì)平臺,首先網(wǎng)關(guān)向RTSP Server發(fā)送OPTIONS指令來獲知服務(wù)器提供的可用方法(可用方法有OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE等),獲取方法后,網(wǎng)關(guān)向RTSP Server發(fā)送DESCRIBE指令來獲取媒體SDP信息。接著網(wǎng)關(guān)發(fā)送SETUP指令向服務(wù)器申請建立會(huì)話,RTSP服務(wù)器收到SETUP請求后調(diào)用CreatNew()函數(shù)創(chuàng)建新的子會(huì)話,subsession再調(diào)用CreatNew()函數(shù)來創(chuàng)建新的數(shù)據(jù)源Source和RTSPSink,此時(shí),獲取視頻流數(shù)據(jù)的會(huì)話已建立好,等待網(wǎng)關(guān)發(fā)送獲取播放數(shù)據(jù)請求。當(dāng)網(wǎng)關(guān)發(fā)送播放請求PLAY時(shí),RTSP服務(wù)器調(diào)用startPlaying()函數(shù)申請獲取數(shù)據(jù),當(dāng)Source獲取到數(shù)據(jù)時(shí)把數(shù)據(jù)發(fā)送給RTSP Sink,RTSP Sink想要獲取下一幀數(shù)據(jù)時(shí)則需通過調(diào)用getNextFrme()函數(shù)向Soruce發(fā)送請求,Source收到請求后把下一幀數(shù)據(jù)發(fā)送給RTSP Sink并通過afterGetFrame()函數(shù)回調(diào)幀,最后RTSP Sink把視頻數(shù)據(jù)發(fā)送到RTP端口打包,視頻流數(shù)據(jù)被封裝好后發(fā)送給網(wǎng)關(guān)。在獲取數(shù)據(jù)幀過程中buildAndSendPkg()、getNextFrame()、afterGettingFrame()三個(gè)函數(shù)循環(huán)調(diào)用使數(shù)據(jù)流動(dòng),形成流暢的視頻流。當(dāng)網(wǎng)關(guān)停止獲取數(shù)據(jù)時(shí),向RTSP服務(wù)器發(fā)送TEARDOWN命令請求,RTSP會(huì)中止會(huì)話,停止數(shù)據(jù)的獲取。
4 結(jié)束語
文章分析了智能家居的整體框架和視頻監(jiān)控系統(tǒng)模型,以RTSP和RTP協(xié)議為基礎(chǔ)重點(diǎn)分析了視頻流的獲取過程,最終實(shí)現(xiàn)一個(gè)基于RTSP+RTP協(xié)議的智能家居視頻監(jiān)控系統(tǒng)。該系統(tǒng)能較好地解決流媒體傳輸?shù)囊恍╆P(guān)鍵問題,如提高實(shí)時(shí)視頻流的平滑性、去除抖動(dòng)、音視頻同步以及確保通信的服務(wù)質(zhì)量等,從而使系統(tǒng)有著很好的健壯性和可擴(kuò)展性,可廣泛應(yīng)用于多種網(wǎng)絡(luò)視音頻傳輸場合。
參考文獻(xiàn)
[1] Joint Video Team(JVT).ISO/IEC 14496-10 and ITU-T Rec. H.264 Advanced Video Coding[Z].2003.
[2]邵春暉.基于Linux的智能家居網(wǎng)關(guān)研究與實(shí)現(xiàn)[D].長安大學(xué),2013.
[3]劉暢欞.基于Live555的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].重慶郵電大學(xué),2012.
[4]李東風(fēng).嵌入式高清視頻前端及其遠(yuǎn)程控制的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京郵電大學(xué),2011,4.
[5]劉國卿.基于RTCP的實(shí)時(shí)流式傳輸擁塞控制算法研究[D].四川大學(xué),2006.
[6]季宇.基于流媒體技術(shù)的移動(dòng)視頻監(jiān)控服務(wù)系統(tǒng)[D].天津:天津大學(xué),2011.
[7]王彥麗,陳明,陳華,等.基于 RTP/RTCP 的數(shù)字視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2009,31(3):58-60.