徐 強,章堅武
(杭州電子科技大學通信工程學院,浙江杭州310018)
隨著計算機技術、網(wǎng)絡技術、語音和視頻編解碼技術以及流媒體技術的不斷發(fā)展與完善,視頻監(jiān)控業(yè)務在當今的網(wǎng)絡時代取得了蓬勃的發(fā)展。如今,視頻監(jiān)控業(yè)務的重要性不言而喻,其應用領域包括城市安防、檢驗檢疫、環(huán)境保護、氣象檢測、銀行安保、商鋪監(jiān)控等等,甚至滲透到了家庭領域[1]。現(xiàn)在一些視頻監(jiān)控應用提出多點接收的需求。實現(xiàn)多點接收有3種方法,第1種方法是對每個接收點都發(fā)送一次單播,第2種方法是采用廣播技術,第3種方法是利用多播手段。其中第3種方法最好,它也是當前互聯(lián)網(wǎng)實現(xiàn)多點接收的主流技術,應用范圍很廣。本文由于本視頻監(jiān)控系統(tǒng)應用于虛擬專用網(wǎng)絡,因此多播安全性得到保證。
實時視頻監(jiān)控系統(tǒng)的原理框圖如圖1所示。
圖1 實時視頻監(jiān)控網(wǎng)絡的原理框圖
視頻采集模塊將原始的視頻模擬信號經(jīng)過取樣和量化轉換成數(shù)字信號,為接下來的視頻編碼做準備工作。未編碼的視頻數(shù)據(jù)量特別大,如表1所示。
表1 未壓縮信源的大致信息量
在現(xiàn)有網(wǎng)絡環(huán)境下,直接傳輸如此大的信息量是不現(xiàn)實的。由于視頻數(shù)據(jù)中存在大量的冗余信息,經(jīng)過壓縮之后,數(shù)據(jù)量會大幅下降,從而使得通過網(wǎng)絡傳輸實時多媒體數(shù)據(jù)成為可能。rtp協(xié)議是由音頻和視頻傳輸工作組制訂,專門用來在因特網(wǎng)上傳輸音頻和視頻的標準包格式。客戶端通過接收和解包rtp數(shù)據(jù),解碼視頻數(shù)據(jù),最終播放視頻,顯示畫面。為了方便保存證據(jù),以便公安機關查看,本文增加了本地存儲模塊來保存高分辨率的視頻。這就是監(jiān)控系統(tǒng)的全部流程。與傳統(tǒng)的視頻監(jiān)控系統(tǒng)相比,本系統(tǒng)采用VPN技術,此技術主要采用了隧道技術、加解密技術、密鑰管理技術和使用者與設備身份認證技術。它可以將外部非法用戶與合法用戶隔離開來,使得非法用戶無法竊取VPN網(wǎng)絡傳輸?shù)囊曨l數(shù)據(jù)。
多播,也稱為組播,將局域網(wǎng)中同一業(yè)務類型主機進行了邏輯上的分組,進行數(shù)據(jù)收發(fā)的時候其數(shù)據(jù)僅僅在同一分組中進行,其他的主機沒有加入此分組不能收發(fā)對應的數(shù)據(jù)。多播技術,是一種允許一臺或多臺主機(多播源)發(fā)送單一數(shù)據(jù)包到多臺主機(一次的,同時的)的TCP/IP網(wǎng)絡技術。在IPv4中D 類 IP 地址用于多播通信,范圍從224.0.0.0 到 239.255.255.255,并被劃分為局部鏈接多播地址、預留多播地址和管理權限多播地址3類。其中,局部鏈接多播地址范圍在224.0.0.0 224.0.0.255,這是為路由協(xié)議和其它用途保留的地址,路由器并不轉發(fā)屬于此范圍的IP包;224.0.1.0 238.255.255.255為預留多播地址,可用于全球范圍(如 Internet)或網(wǎng)絡協(xié)議;239.0.0.0 239.255.255.255 為管理權限多播地址,可供組織內(nèi)部使用,類似于私有IP地址,不能用于Internet,可限制多播范圍。使用同一個IP多播地址接收多播數(shù)據(jù)包的所有主機構成了一個主機組,也稱為多播組。
本視頻監(jiān)控系統(tǒng)中,視頻采集模塊將模擬的視頻信號進行模數(shù)轉換,得到數(shù)字的視頻信號,再送入視頻壓縮模塊。該模塊采用H.264視頻壓縮算法,視頻壓縮完成后得到264視頻流,在送入rtp發(fā)送模塊。此模塊對264視頻流進行打包,根據(jù)視頻流中的起始碼,將視頻流分割成一幀一幀,并將每一幀按照rtp打包規(guī)則分開打包,然后通過UDP協(xié)議發(fā)送到多播組,路由器根據(jù)多播組地址自動進行多播轉發(fā)。此時,只要客戶端加入多播組就可以通過UDP協(xié)議從多播組接收經(jīng)過rtp打包過的視頻數(shù)據(jù)了。接收視頻數(shù)據(jù)后,對這些包重新進行排序以解決rtp包亂序到達的問題,之后就可以從排好序的rtp包中提取出視頻數(shù)據(jù)并送入視頻解碼模塊,使用H.264算法進行解壓縮,解壓出一幀后就送入視頻播放模塊進行畫面回放。
Linux操作系統(tǒng)使用Berkeley Socket API進行網(wǎng)絡編程。Berkeley Socket采用setsockopt()的套接字選項功能來設置。對于某些選項利用getsockopt()功能可獲得當前的設置[3]。setsockopt()/getsockopt()可用的組播命令如表2所示。利用Berkeley Socket實現(xiàn)IP組播通信的流程圖如圖2所示。
表2 setsockopt/getsockopt組播命令參數(shù)
IP組播通信的編程方法如下:
(1)建立多播發(fā)送套接字,首先要使用函數(shù)socket()建立一個數(shù)據(jù)報套接字,然后用bind()函數(shù)將套接字與一地址和端口號連接起來,其中,地址可選用本地IP地址或由INADDR_ANY參數(shù)任意分配一個IP地址,端口號要大于 1024[4]。相關代碼如下,
圖2 多播流程圖
(2)設置多播的參數(shù),例如設置IP_Multicast_TTL選項和要加入的組播組的地址結構。詳細代碼如下,
(3)設置IP_Add_Membership選項以便加入指定的某個多播組。如果只打算發(fā)送數(shù)據(jù),則不必加入多播組。
其中ip_mreq結構如下:
(4)調用函數(shù)sendto()發(fā)送多播數(shù)據(jù),調用函數(shù)recvfrom()接收多播數(shù)據(jù);
(5)設置IP_Drop_Membership選項和要脫離的多播組的地址結構,調用setsockopt()脫離指定的組播組,例如,
(6)完畢后關閉套接字。
在步驟4中,可以將打包好的rtp視頻數(shù)據(jù)包通過調用sendto()函數(shù)發(fā)送出去或者通過調用recvfrom()函數(shù)從多播組接收rtp視頻數(shù)據(jù)包。
多播通信過程中,由于任何IP地址都可以隨意加入某個多播組,也可以隨時離開某個多播組,因此這給多播組的安全和管理帶來較大的難度。此視頻監(jiān)控系統(tǒng)是基于VPN網(wǎng)絡的,因此不屬于這個VPN網(wǎng)絡的用戶是無法加入多播組的,也就接收不到多播組傳輸?shù)臄?shù)據(jù),這讓該視頻監(jiān)控系統(tǒng)的安全性得到了比較好的保護。
本文以北京瑞泰的ICETEK-DM365-KB-EZ開發(fā)板作為監(jiān)控端,華為C8500和中興N880S手機作為客戶端。這兩支手機均安裝了使用Java語言編寫的客戶端程序,監(jiān)控系統(tǒng)采用由ISO的MPEG和ITU的VCEG兩個組織制定的H.264視頻編碼標準,視頻分辨率為352×288,10幀/s,碼率200kbps。在VPN網(wǎng)環(huán)境下(VPN網(wǎng)絡有中國電信提供,對手機的VPN設置選項進行一些相關設置,然后輸入電信提供的帳號和密碼就可以進入VPN網(wǎng)絡),進行了測試。畫面清晰,視頻流暢,多播功能得到了較好的實現(xiàn)。由于電信的3G網(wǎng)絡的不穩(wěn)定,實驗過程中還是有少量馬賽克出現(xiàn)。效果如圖3所示。
圖3 測試效果圖
多播作為一點對多點的通信[5],是節(jié)省網(wǎng)絡帶寬的有效方法之一。在網(wǎng)絡音頻/視頻廣播的應用中,當需要將一個節(jié)點的信號傳送到多個節(jié)點時,無論是采用重復點對點通信方式,還是采用廣播方式,都會嚴重浪費網(wǎng)絡帶寬,只有多播才是最好的選擇。多播能使一個或多個多播源只把數(shù)據(jù)包發(fā)送給特定的多播組,而只有加入該多播組的主機才能接收到數(shù)據(jù)包。目前,IP多播技術被廣泛應用在網(wǎng)絡音頻/視頻廣播、AOD/VOD、網(wǎng)絡視頻會議、多媒體遠程教育、“push”技術(如股票行情等)和虛擬現(xiàn)實游戲等方面。由于任何IP都可以自由的加入一個多播組,也可以隨時隨地的離開一個多播組,因此多播的安全性一直一個比較棘手的問題。本文提出使用VPN技術,可以較好的解決安全性問題。
[1] 劉聰,陳大慶,鄭冬冬.TD視頻監(jiān)控的解決方案分析[J].電信技術,2011,(11):48-50.
[2] 劉鵬.音視頻壓縮技術在多媒體監(jiān)控系統(tǒng)中的應用研究[D].西安:西北工業(yè)大學,2003.
[3] 徐立新,李宗斌.IP組播技術的API編程實踐[J].微型機與應用,2002,21(6):32-34.
[4] 朱利,周俊輝,鄭守淇.WINDOWS下組播通信的研究與實現(xiàn)[J].小型微型計算機系統(tǒng),2000,21(2):132-134.
[5] 徐昌彪.IP組播及其核心技術探討[J].計算機應用研究,2001,18(8):38-41.