視頻監控P2P解決方案

視頻監控P2P解決方案

一.摘要

本文分析了日益增長的民用級別家庭和個人網絡視頻監控市場的需求特點,並給出了一種經濟可行易於大規模部署的P2P解決方案。

由於篇幅有限,本文只給出了方案的思路,未對更深入的技術細節做詳細的論述,有興趣的朋友可以繼續深入研究。

 

 

二.關鍵詞

IPCAM, P2P,NAT, STUN, TURN, ICE, PJSIP, OPENSIPS, UDT, TCP, UDP

 

三.需求提出

網絡視頻監控市場持續火爆升溫,除了公共安全市場持續高速增長之外,民用市場中家庭和個人視頻監控的需求近年也在逐漸增多。這主要得益於以下幾點:

1. 網絡視頻監控產品的價格已經降低到個人很容易接受的程度。

2. 家庭寬帶網絡的逐步普及。

3. 3G網絡的逐步普及。

家庭和個人監控的需求和傳統的公共安全監控需求有明顯的不同,其特點主要體現在以下幾個方面:

1. 規模很小。通常是1臺或者幾臺。

2. 無需專用的監控客戶端,無需長時間監控。

3. 監控客戶端和網絡攝像機多位於不同的網絡。比如網絡攝像機在家中,用戶通過公司的網絡或者手機查看視頻。

4. 不會多人同時查看一路視頻,最多一兩人同時看,且概率較小。

5. 無需連續長時間錄像,多采用移動偵測或者其他告警觸發錄像,拍照,同時通過郵件,短信提醒。

 

四.技術難點

通過以上分析可以看出,家庭以及個人視頻監控的需求和傳統公共安防市場的需求有很大的不同,決定了其必須採用不同的技術路線和方案:

1. 網絡攝像機和監控客戶端(PC/手機)位於不同的網絡,中間有防火牆隔離,無法像傳統安防產品一樣採用網絡直連通過IP地址直接訪問的方式。

2. 網絡攝像機數量龐大(至少以萬爲單位),但分屬多個用戶。如果採用中央服務器轉發的方案,需要互聯網上部署相當數量的轉發服務器,成本相當高。

3. 必須實現即插即用,不能讓用戶進行復雜的安裝配置。否則售後服務的代價太高。

要實現位於不同網絡裏的大量網絡攝像機和客戶端點對點的訪問,比較可行而且比較經濟的方法是實現防火牆的穿透(NAT),讓客戶端和網絡攝像機之間建立一個直接的數據傳輸通道,傳輸視頻流和信令。

要實現NAT穿越,需要有一套機制,能夠輕鬆的讓客戶端和網絡攝像機之間能建立起聯繫,簡單的說,就是讓客戶端能找到自己要訪問的攝像機,然後去實現NAT穿越,進而可以訪問視頻和進行其他操作。

只有解決了上述兩個技術難點,大規模部署P2P網絡視頻監控系統,纔有可能實現。

 

五.解決方案

筆者經過深入的研究和分析,給出以下解決方案。

1. NAT的穿越

NAT的穿越並非安防監控領域的技術,是目前VOIP以及即時通信等產品的基礎性技術,目前來講已經比較成熟,且有完整的技術標準RFC,同時也有衆多的實現方案,包括許多已經得到廣泛應用的開源項目。

簡單來講,實現NAT的穿越是可能的,成功的概率也比較高。UDP的協議進行數據傳輸穿透NAT的成功率比較高,接近100%,TCP則存在一些情況無法實現穿越,主要受限路由器的端口映射機制。

要實現NAT穿越,需要有穿越控制服務器部署在互聯網(有固定的域名或者IP),由該服務器來協助網絡攝像機和客戶端來實現NAT穿越。有些服務器還能在TCP不能穿越的情況下,實現RELAY(數據中繼轉發)的功能,以確保二者之間能實現數據通信。

由於NAT穿越控制服務器不同於安防監控系統中的媒體轉發服務器,主要進行信令交互,不轉發媒體數據,在協助打通數據通道之後,對應的網絡攝像機和客戶端就不會再佔用服務器帶寬和處理能力了,因此一臺穿越控制服務器可以接入數量龐大的網絡攝像機和客戶端。

2. 網絡攝像機和客戶端之間的訪問機制

通常網絡攝像機都有唯一ID,並通過該ID註冊到穿越控制服務器。客戶端要訪問對應的網絡攝像機時,也需要先註冊到穿越控制服務器,並提交對應 網絡攝像機的ID,由穿越控制服務器查找對應的網絡攝像機,並協助網絡攝像機和客戶端之間進行NAT穿越,最後打通一個點對點的數據傳輸通道。之後,二者 即可進行正常的媒體和信令交互了。

爲實現更加有效的管理,服務器可對設備接入進行認證。此外,如果設備ID過長,也可以爲設備建立別名,客戶端訪問時用設備別名作爲參數,服務器來查找對應設備。

3. 數據傳輸機制

網絡攝像機和客戶端之間的數據傳遞包括有媒體流,信令流等。信令流數據量較小,媒體流數據量加大,而且需要有較好的實時性。

如果媒體流和信令流分開傳輸,需要打通多個通道,增加了複雜性和出錯可能,同時增加了服務器的負擔。

前面也講過,UDP協議能有比較好的NAT穿透性,也比較適合媒體流的傳輸,但可靠性較差,不宜傳輸信令。爲減輕服務器負擔(避免TCP無法穿 透需要轉發),提高穿透成功率,筆者建議只打通一個UDP通道,利用該UDP通道封裝媒體和信令流,在應用層加以區分,哪些是媒體流,那些是信令流。

由於UDP傳輸信令可靠性極差,即使是傳輸媒體數據,在互聯網環境下肯定會出現丟包的情況,仍然會出現圖像花屏或者解碼出錯的情況,因此必須要解決此問題。

好在此問題並非我們第一個提出,利用UDP協議進行可靠的數據傳輸的需求早就存在,並有了比較好的解決方案,那就是通過UDP協議在應用層實現數據的緩衝,序列化,重傳,可靠性控制和擁塞控制。

如果上述三個問題都已解決,則網絡視頻監控的P2P方案已經基本實現,剩下的就是產品化的問題。以下筆者針對PC訪問和手機訪問分別給出簡要的實現說明:

1. PC訪問網絡攝像機。

PC訪問網絡攝像機,可以先訪問一個網頁,傳入網絡攝像機的序列號。

網頁加載一個控件,該控件通過NAT穿越控制服務器和該序列號對應的網絡攝像機實現NAT穿透後,通過可靠的UDP傳輸信令和媒體數據。控件提供視頻瀏覽,對講,雲臺控制,參數查詢設置等功能。

2. 手機訪問網絡攝像機。

手機由於平臺的不同,需要單獨開發對應的客戶端或者插件以實現和PC訪問類似功能。但原理是一樣的,都需要通過NAT穿越控制服務器和該序列號 對應的網絡攝像機實現NAT穿透後,通過可靠的UDP傳輸信令和媒體數據。由於開源的NAT穿越庫是可以移植的,在LINUX,WINCE,IOS, Android,Sbrian等都可以實現同樣的NAT穿越功能。

 

六.實現建議

最後筆者給出幾個技術方案的建議,有興趣的朋友可以自己再去做深入研究,歡迎探討。

1. NAT穿越庫的選擇,筆者推薦PJSIP,網路攝像機以及客戶端都可以採用。

2. NAT穿越控制服務器的選擇,筆者推薦OPENSIPS。

3. 可靠UDP傳輸方案的選擇,推薦UDT。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章