監控系統之硬碟錄影機(dvr)
之前斷斷續續的寫了幾篇文件,時間久了,也不想就這麼消失不見,所以合併在一起,在加上一些修飾,再次發布一遍。
前言經過幾年的開發,對硬碟錄影機產生了一些厭倦,但是有些東西還是值得紀錄的,所以就寫了這個技術整理。目的是為了記錄一些曾經的經驗和教訓,聊做紀念。某些不清楚的部分不會抄一些文章過來充數,也不會為了讓文字看起來比較豐滿而作過多的資料調查,所以如果在閱讀的過程中有任何不適或者不滿,可自行離場,謝謝。 整個文件會從全域性到細節,再從細節返回全域性,先對整體設計、環境、行業現狀進行描述,列舉一些應該深入的方向,然後進行詳細的敘述,最後再對整體進行一次勾勒。由於某些部分涉及技術機密,所以描述不會很清楚,還請見諒。 開篇
不管怎樣,模擬的監控系統還是滿足了絕大多數的需求,可以很好的工作。在此說句題外話,個人覺得國內的開發人員都有乙個通用的問題,就是對美工過度追求,甚至不惜影響到功能的實現。其實大多數的需求裡,實用才是第一位的,簡單而且符合要求的軟體才是客戶需要的,漂亮和華麗的外觀雖然很吸引眼球,但並不是核心內容,完全可以在後期再做改善,不應該一開始就花大力氣對其進行考慮。
無論如何,這個行業的技術含量和利益深度還是有挖掘潛力的。特別是今年**擴大了監控的適用範圍,會造成一段時間內的需求上公升,但是產品的質量也越來越成為占領市場的殺手鐗。
框架這一篇的主要內容是描述硬碟錄影機的內部框架結構,建立基本的鳥瞰圖。說到框架,就不能不對硬碟錄影機做乙個定義。何為硬碟錄影機?定義如下:
從系統架構上看,一套完整的硬碟錄影機包括以下幾個方面: 1.原始資料採集和控制。
第二種採集裝置是以軟卡機制為前端,以dsp晶元為核心的硬採集卡。主要框架是前端依然通過ad將模擬訊號數位化,但是後端並不直接將資料送出,而是送往dsp晶元進行壓縮,然後將壓縮後的資料送出,同時提供overlay方式的顯示功能。硬卡的核心就是dsp,dsp的核心就是壓縮演算法,從最早的mpeg-1、mpeg-2到mpeg4,再到現在滿天亂飛的h264,硬卡的進步也是有目共睹。其優點是對系統資源占用小,無論是顯示還是儲存,都對系統沒有什麼特殊要求,但是缺點也是很明顯,主要是對上層的監控系統限制太多,以及公升級成本偏高,公升級codec對於軟體而言是很容易的,但是對於dsp就不那麼現實了。
2、壓縮
按照某些行業的要求,對儲存的儲存時間是有硬性規定的,在硬碟**不斷下降、cpu速度不斷提公升以及壓縮演算法的不斷改進的形勢下,儲存時間在不斷拉長,但是目前所需要的硬碟數目依然很多,這是現狀,也是需要對客戶進行解釋和培訓的。
壓縮的資料,不管是軟體壓縮還是硬卡壓縮,除了儲存,還有乙個比較常用的功能,就是網路傳輸。網路傳輸的難點在於傳輸協議,一般常用的標準協議有 rstp 和mms等,但是未必適合硬碟錄影機的全部要求,所以一般要做一些改造,甚至是自己設計。首先是協議問題,大多數開發人員考慮到盡量利用頻寬,所以一般使用udp協議,但是udp協議有一些根本性的問題,比如區域網內如何連線,包的亂序和糾錯造成開發上的困難等。個人建議,還是使用tcp比較適合。同時,現在逐漸流行的p2p協議也是可以考慮的,比如emule和bt的傳輸協議,不過由於硬碟錄影機面向的是實時傳輸、客戶端較少的現狀,所以未必適用。
3、移動偵測 一些高階的雲台一體機有物體跟蹤,甚至是模式識別的功能,但大多數還沒有到實用的階段。所以目前常用的還是以檢測指定範圍內的影象移動為主,演算法上大體差不多,主要區別在於優化和切割粒度上。
4、雲台控制 雲台的基本原理就是用232/485傳輸指令給微控制器,然後微控制器控制電機進行工作,從而達到控制攝像機的轉動、焦距、景深等功能。每種雲台都會有自己的一套控制指令,但最後的作用大同小異,都是為了完成前面說的那些功能,常見的雲台控制協議有pelco_d等。
5、網路傳輸 現在的網路硬體基礎已經相當完備,特別是一些發達地區,覆蓋面積和頻寬都已經相當可觀,所以順應潮流,在硬碟錄影機中也加入了網路的功能,比如異地同步**,異地檢視錄影和日誌等。但在目前硬體基礎還參差不齊的現狀下,如何實現比較均衡的傳輸和較小的系統負載還是乙個比較大的挑戰,既有參考通用協議(比如rtp/rstp/h323)的,也有自我定義協議的。
6、安全可靠的長效執行 這是乙個比較大的題目,其實可以單獨抽出來寫一篇的,這裡只就純技術範圍做一些討論。 硬碟錄影機本身就是乙個掌管安全的系統,如果本身無法做到安全可靠,那麼如何讓客戶滿意?但要做到這一點又是非常困難的。作業系統的穩定性、**的健壯性自查能力、硬體的可靠性、環境的穩定性和可靠性、人員的穩定和可靠與否、網路的情況、病毒和木馬的抵抗力,等等,這些都是影響整個系統穩定執行的重要因素,可能某乙個環節的小問題最後會引起整個系統的崩潰。正所謂千里之堤潰於一蟻,對於這個部分,最好是早預防、早準備、快速反應、及時總結,以免造成損失。
實現有了框架,接下來自然就是細節的實現,俗話說,細節決定成敗。對於乙個複雜的系統而言,細節有時候是決定性的。
硬碟錄影機涉及到的技術比較的多,而且某些又涉及技術機密,所以這裡只能是對我個人認為比較重要和比較關心的部分進行乙個大概的列舉。
雲台控制器有很多種,每套控制指令基本差不多,但是其中微小的差別對開發卻造成了麻煩。如何將各種有微小差別的指令集整合起來,是對開發人員的考驗。
軟壓縮在硬碟錄影機裡是很重要的部分,但是壓縮在硬碟錄影機裡有一些特殊要求,比如變幀率、變解析度,這對更好的儲存錄影有幫助,但是對於開發卻造成困難。
顯示上,如果是軟卡,一般需要自己處理,gdi的方式效率實在底下,那麼就需要實用一些高效的方法,現在一般使用ddraw或opengl。在顯示上有一些要處理的工作,會對開發造成困難,比如如何在畫面上貼字,僅僅貼乙個字並不難,但是要在不斷變化的背景畫面上貼乙個不會被背景顏色抵消的字就比較見功底了。而且opengl在linux下對漢字的支援有問題,貼字更是乙個問題。同時某些時候需要對畫面的區域性進行遮蓋,如果不降低效率做到這一點? ddraw有乙個bug,就是開14個物件以上,在某些顯示卡上會顯示失敗,opengl更直接,開啟超過4個rc的情況下,系統會宕機。如何處理好這些問題,是對開發人員的考驗。
快取、佇列、執行緒,在硬碟錄影機裡幾乎到處是這些東西,最好的方式是抽象出統一的介面來,否則**會比較臃腫和難看。如何抽象?這是乙個問題。
這樣複雜的系統,膠合層是必不可少的,但是膠合層要越薄越好。
效率和層次清晰是兩個矛盾體,如何結合?
面對各種各樣的採集裝置和採集介面,如何將他們整合在一起?比如軟卡+硬卡,或者再加usb攝像頭,介面有lib/overlay/dshow(或者是vfw),如何整合在一起?
儲存的錄影檔案是做成通用的格式還是自己定義的格式?
錄影檔案需要搜尋,日誌需要儲存、搜尋,以及檢視,如何在搜尋的同時不會對系統造成不必要的負載?
硬碟錄影機涉及的方方面面很多,各部分的關聯關係很密切,如何在保證簡潔、清晰的前提做好軟體分層,這個是對開發人員的最大考驗。要麼失之清晰,要麼失之靈活,乙個複雜的系統最難的反而是如何做簡單。
結語以上為目前能想到的認知到的一些內容,如有不足,歡迎指正。
安防監控系統 硬碟錄影機如何計算硬碟容量
目前國內主流的硬碟錄影機採用兩種解析度 cif和d1。硬碟錄影機常見的路數有1路 2路 4路 8路 9路 12路和16路。最大可以連線8塊2000gb的硬碟,總容量可高達1.6t 目前市面上最大的硬碟在1000gb左右 如果採用cif解析度,通常每1路的硬碟容量為180mb 250mb 小時,通常情...
硬碟錄影機出現系統崩潰 如何恢復
對windows的不當設定或其他一些軟體故障導致系統工作不正常時,會產生系統崩潰。可採用下列方法恢復系統 第一 windows登錄檔的方法修復系統。如 某次啟動系統時因未開啟監視器或監視器連線不正常,導致系統再啟動時不能正常進入windows,可按照如下步驟修復。重新啟動,在啟動過程中按住f8鍵,在...
硬碟錄影機監聽按鈕不起作用
原因一 沒有使用音訊或者所選擇的通道不帶音訊。原因二 音效卡沒有安裝或者沒有安裝音效卡驅動程式。原因三 音效卡工作不正常,建議使用direct sound測試,方法是 執行c windows system目錄下的dxdiag.exe程式,測試音效卡工作狀態。如果測試通不過,請按照一下方法 第一 重新...