張楠德



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