服務(wù)器后端之視頻數(shù)據(jù)接收與轉(zhuǎn)發(fā)搭建解決方案_第1頁(yè)
服務(wù)器后端之視頻數(shù)據(jù)接收與轉(zhuǎn)發(fā)搭建解決方案_第2頁(yè)
服務(wù)器后端之視頻數(shù)據(jù)接收與轉(zhuǎn)發(fā)搭建解決方案_第3頁(yè)
服務(wù)器后端之視頻數(shù)據(jù)接收與轉(zhuǎn)發(fā)搭建解決方案_第4頁(yè)
服務(wù)器后端之視頻數(shù)據(jù)接收與轉(zhuǎn)發(fā)搭建解決方案_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、3視頻存儲(chǔ)服務(wù)器設(shè)計(jì)在本章中,首先介紹了視頻監(jiān)控系統(tǒng)的基本框架,然后根據(jù)視頻存儲(chǔ)服務(wù)器在系統(tǒng)中的作用定義了服務(wù)器的結(jié)構(gòu),介紹了服務(wù)器各模塊的功能,最后對(duì)服務(wù)器的解碼模塊、存儲(chǔ)模塊和檢索回放模塊提出設(shè)計(jì)思想。3.1視頻監(jiān)控系統(tǒng)的框架項(xiàng)目是從小型單位或私人家庭等用戶的需求特點(diǎn)所設(shè)計(jì)的視頻監(jiān)控系統(tǒng),其結(jié)構(gòu)比較簡(jiǎn)單,既考慮到較低的成本,又兼顧用戶對(duì)系統(tǒng)數(shù)字化、網(wǎng)絡(luò)化的基本要求,一些硬件設(shè)備功能主要是考慮用軟件來(lái)完成。設(shè)計(jì)的視頻監(jiān)控系統(tǒng)框架如圖3.1所示。圖3.1視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖該系統(tǒng)的工作原理是:攝像頭把采集到的模擬視頻信號(hào)送到編碼器,編碼器將收到的模擬信號(hào)編碼壓縮,并通過(guò)網(wǎng)絡(luò)將編碼后的數(shù)字信號(hào)傳送

2、到視頻存儲(chǔ)服務(wù)器;服務(wù)器將原始碼流解碼成RGB視頻,然后再經(jīng)過(guò)編碼壓縮,按照既定的文件組織格式存入系統(tǒng)的存儲(chǔ)硬盤,并等待系統(tǒng)中用戶的請(qǐng)求信息。當(dāng)接收到用戶的請(qǐng)求后,服務(wù)器讀出緩沖區(qū)內(nèi)的數(shù)據(jù),發(fā)送模塊采用RTP協(xié)議將數(shù)據(jù)打包,這些數(shù)據(jù)包通過(guò)UDP協(xié)議傳送到網(wǎng)絡(luò)上的各個(gè)用戶,用戶端接收到數(shù)據(jù)包后,將數(shù)據(jù)包放入緩沖區(qū)內(nèi),并將數(shù)據(jù)按順序和標(biāo)志進(jìn)行重組,然后解碼模塊對(duì)其解碼,通過(guò)調(diào)用播放模塊對(duì)解碼后的視頻數(shù)據(jù)進(jìn)行實(shí)時(shí)播放;另一方面,服務(wù)器將壓縮后的視頻信號(hào)進(jìn)行解碼,發(fā)送到現(xiàn)場(chǎng)監(jiān)控電視墻,完成現(xiàn)場(chǎng)實(shí)時(shí)監(jiān)控。對(duì)于遠(yuǎn)程用戶,服務(wù)器起用流媒體服務(wù)功能,將客戶請(qǐng)求的數(shù)據(jù)通過(guò)HTTP協(xié)議分發(fā)到客戶端,用戶可以對(duì)接受

3、到的內(nèi)容進(jìn)行播放。視頻存儲(chǔ)服務(wù)器是整個(gè)系統(tǒng)的核心,它集存儲(chǔ)服務(wù)器、視頻服務(wù)器功能與一身,主要完成以下工作:視頻解碼:將前端通過(guò)網(wǎng)絡(luò)傳送來(lái)的壓縮視頻進(jìn)行解碼,還原成RGB原始視頻流。視頻數(shù)據(jù)壓縮:對(duì)解碼出的視頻流進(jìn)行壓縮,以便存儲(chǔ)與網(wǎng)絡(luò)傳輸;網(wǎng)絡(luò)通信:對(duì)壓縮后的視頻數(shù)據(jù)和相關(guān)的控制信息進(jìn)行封裝,將對(duì)攝像機(jī)的控制信息和視頻信息封裝成支持所定義的協(xié)議信息,同時(shí)通過(guò)相應(yīng)的通道將這些協(xié)議信息以幀的形式傳送到對(duì)方,完成通信雙方之間的數(shù)據(jù)傳輸;視頻數(shù)據(jù)存儲(chǔ):實(shí)現(xiàn)對(duì)監(jiān)控錄像數(shù)據(jù)的統(tǒng)一保存和備份。通過(guò)網(wǎng)絡(luò)獲取視頻流數(shù)據(jù),并以數(shù)據(jù)塊的方式保存在預(yù)分配的磁盤空間中,通過(guò)磁盤數(shù)據(jù)的索引文件保存錄像數(shù)據(jù)信息。監(jiān)控視頻資

4、源檢索回放:用戶可以通過(guò)檢索回放模塊對(duì)所關(guān)注的歷史視頻文件進(jìn)行檢索,并通過(guò)播放器進(jìn)行回放。日志管理:對(duì)系統(tǒng)的操作和系統(tǒng)故障及處理情況進(jìn)行記錄,供用戶檢索查看。分析視頻流在后端的處理主要是解碼、存儲(chǔ)、檢索回放以及對(duì)各用戶端的傳輸。數(shù)據(jù)傳輸是遠(yuǎn)端用戶對(duì)視頻文件有目的的檢索后通過(guò)視頻存儲(chǔ)服務(wù)器的流媒體服務(wù)功能完成的,因此,后端視頻處理的主要過(guò)程可以描述為如圖3.2。圖3.2后端視頻處理主要過(guò)程從圖3.2中可以看出,從網(wǎng)絡(luò)中接收到前端傳送過(guò)來(lái)的視頻流后,視頻存儲(chǔ)服務(wù)器將其解碼成RGB視頻;再將解碼后的視頻進(jìn)行壓縮,變成適合存儲(chǔ)的數(shù)據(jù)格式,然后按照存儲(chǔ)文件的組織策略將這些數(shù)據(jù)進(jìn)行規(guī)范,完成后將數(shù)據(jù)存入硬

5、盤;用戶可以根據(jù)自己的需要對(duì)存儲(chǔ)的數(shù)據(jù)文件進(jìn)行查找與回放,遠(yuǎn)程用戶查找到的視頻文件也能夠以流媒體的形式通過(guò)網(wǎng)絡(luò)傳送至用戶機(jī),完成遠(yuǎn)程監(jiān)控。3.2視頻存儲(chǔ)服務(wù)器的結(jié)構(gòu)所設(shè)計(jì)的視頻存儲(chǔ)服務(wù)器要完成的主要功能是將前端傳送過(guò)來(lái)的視頻信號(hào)解碼還原成RGB視頻,并進(jìn)行編碼壓縮,然后按照存儲(chǔ)策略存入存儲(chǔ)設(shè)備,用戶根據(jù)自己的需要對(duì)存儲(chǔ)設(shè)備中的視頻數(shù)據(jù)進(jìn)行檢索與播放。設(shè)計(jì)中對(duì)視頻存儲(chǔ)服務(wù)器功能劃分為5個(gè)功能模塊,得到其功能結(jié)構(gòu)如圖3.3所示。圖3.3視頻存儲(chǔ)服務(wù)器的主要功能構(gòu)成各模塊的功能定義如下:1)視頻解碼模塊:主要負(fù)責(zé)對(duì)系統(tǒng)前端通過(guò)網(wǎng)絡(luò)傳送來(lái)的壓縮視頻信號(hào)進(jìn)行解壓縮,還原成原始的RGB視頻數(shù)據(jù)。2)存儲(chǔ)管

6、理模塊:負(fù)責(zé)對(duì)解碼后的RGB視頻數(shù)據(jù)進(jìn)行壓縮,然后以制定的文件組織規(guī)范將壓縮后的數(shù)據(jù)存放到存儲(chǔ)設(shè)備上。在數(shù)據(jù)存儲(chǔ)時(shí)要求數(shù)據(jù)占用的空間盡量要小,同時(shí)要便于對(duì)視頻文件進(jìn)行檢索回放。3)檢索回放模塊:為用戶提供視頻錄像資源的快速檢索接口,用戶可以根據(jù)需要對(duì)視頻文件進(jìn)行檢索調(diào)用。當(dāng)用戶查找到所需要的文件時(shí),將相應(yīng)的文件從硬盤上讀出,并將這些數(shù)據(jù)與相應(yīng)的控制信息封裝成支持既定協(xié)議的信息幀,通過(guò)網(wǎng)絡(luò)通道傳送到用戶,供用戶回放瀏覽。4)日志管理模塊:主要是記錄系統(tǒng)工作時(shí)間內(nèi)的一些重要操作及事件信息,管理用戶能夠通過(guò)管理日志了解系統(tǒng)的工作情況和用戶訪問(wèn)情況。5)系統(tǒng)管理模塊:負(fù)責(zé)系統(tǒng)的初始化工作,主要完成對(duì)系

7、統(tǒng)的參數(shù)配置、用戶權(quán)限管理、設(shè)備信息管理、用戶請(qǐng)求處理等。3.3視頻存儲(chǔ)服務(wù)器核心模塊設(shè)計(jì)解碼模塊的設(shè)計(jì)系統(tǒng)前端編碼器所采用的編碼標(biāo)準(zhǔn)是H.264編碼標(biāo)準(zhǔn),因此,系統(tǒng)的解碼模塊同樣采用H.264標(biāo)準(zhǔn)。依照H.264標(biāo)準(zhǔn),整個(gè)流程分為5個(gè)步驟:幀間和幀內(nèi)預(yù)測(cè)(Estimation)、變換(Transform)和反變換、量化(Quantization)和反量化、環(huán)路濾波(LoopFilter)、熵編碼(EntropyCoding)。在設(shè)計(jì)中按照各部分功能對(duì)解碼器進(jìn)行了設(shè)計(jì),其功能框圖如圖3.4所示。圖解碼器功能框圖從圖3.4可以看出,解碼器的基本流程設(shè)計(jì)為:解碼器從NAL中接收壓縮的比特流,經(jīng)過(guò)對(duì)

8、碼流進(jìn)行熵解碼獲得一系列量化系數(shù)X;這些系數(shù)經(jīng)過(guò)反量化和反變換得到殘差數(shù)據(jù)D;解碼器使用從碼流中解碼得到的頭信息創(chuàng)建一個(gè)預(yù)測(cè)塊PRED,PRED與殘差數(shù)據(jù)D求和得到圖像塊數(shù)據(jù)uF;最后每個(gè)uF通過(guò)去塊濾波得到重建圖像的解碼塊F。監(jiān)控系統(tǒng)的視頻是由連續(xù)的圖像幀組成的。因此,某種意義上說(shuō)視頻解碼就是對(duì)視頻的圖像幀進(jìn)行解碼,解碼程序?qū)σ曨l段的解碼也可以說(shuō)是主程序反復(fù)調(diào)用幀解碼函數(shù)的過(guò)程。單幀圖像的解碼流程如圖3.5所示。圖3.5解碼器解碼一幀圖像過(guò)程一幀圖像經(jīng)過(guò)視頻編碼層VCL編解碼后產(chǎn)生的碼流,在NAL中將這些碼流分割成NAL單元,并對(duì)NAL單元進(jìn)行邊界檢測(cè),之后對(duì)各單元進(jìn)行去塊濾波處理,并在參考

9、圖像進(jìn)行存儲(chǔ)處理后重建圖像幀;NAL單元解碼過(guò)程包含了不同類型片的解碼,而對(duì)各類型的片解碼首先從碼流中讀入一個(gè)片的編碼數(shù)據(jù),提取RBSP語(yǔ)法結(jié)構(gòu),產(chǎn)生宏塊片組映射圖,并根據(jù)當(dāng)前圖像類型對(duì)參考圖像列表進(jìn)行初始化,最后完成片的解碼;而進(jìn)行片解碼首先要對(duì)參考圖像序號(hào)數(shù)據(jù)以及當(dāng)前宏塊解碼設(shè)置進(jìn)行初始化。然后從NAL中讀入當(dāng)前宏塊的語(yǔ)法元素,以便對(duì)宏塊進(jìn)行解碼。存儲(chǔ)模塊設(shè)計(jì)視頻監(jiān)控系統(tǒng)產(chǎn)生的視頻流數(shù)據(jù)是海量的,這些海量的視頻數(shù)據(jù)文件對(duì)系統(tǒng)的存儲(chǔ)系統(tǒng)提出了嚴(yán)峻的考驗(yàn)。為了制定一個(gè)合理的存儲(chǔ)方案,本文對(duì)監(jiān)控存儲(chǔ)方案與以往存儲(chǔ)方案進(jìn)行了比較,結(jié)果如表3.1所示。表3.1監(jiān)控存儲(chǔ)與傳統(tǒng)存儲(chǔ)文件特性比較項(xiàng)目以往存

10、儲(chǔ)監(jiān)控存儲(chǔ)數(shù)據(jù)庫(kù)表文本/圖像圖像/音頻數(shù)據(jù)表現(xiàn)形結(jié)構(gòu)化(有序,可用統(tǒng)一結(jié)構(gòu)表示)非結(jié)構(gòu)化(無(wú)序、無(wú)法用統(tǒng)一結(jié)構(gòu)表示)非結(jié)構(gòu)化(無(wú)序、無(wú)法用統(tǒng)一結(jié)構(gòu)表示)數(shù)據(jù)組織方式非結(jié)構(gòu)化(無(wú)序,規(guī)則性不強(qiáng))非結(jié)構(gòu)化(無(wú)序,規(guī)則性不強(qiáng))結(jié)構(gòu)化(有序,規(guī)則性很強(qiáng))數(shù)據(jù)保存時(shí)間無(wú)序,時(shí)長(zhǎng)不定無(wú)序,時(shí)長(zhǎng)不定有序,定期刪除更新數(shù)據(jù)更新方式無(wú)序,方式不定無(wú)序,方式不定有序,從尾部順序增加數(shù)據(jù)讀寫方式無(wú)序,反復(fù)多次讀寫無(wú)序,反復(fù)多次讀寫有序,一次寫少量讀/不讀存儲(chǔ)塊大小8-64KB512B-1MB64KB-1MB(512Kb-8Mb)性能要求IOPSIOPS、帶寬多路并發(fā)的帶寬存儲(chǔ)熱點(diǎn)2/8原則,20%的數(shù)據(jù)承載80%的

11、訪問(wèn)2/8原則,20%的數(shù)據(jù)承載80%的訪問(wèn)均衡原則,數(shù)據(jù)訪問(wèn)的機(jī)會(huì)均等數(shù)據(jù)重要度重要,數(shù)據(jù)價(jià)值高不定大部分是無(wú)用數(shù)據(jù)從表2中可以看出,監(jiān)控存儲(chǔ)雖然數(shù)據(jù)的表現(xiàn)形式和以往的圖像存儲(chǔ)一樣,體現(xiàn)出無(wú)規(guī)則的非結(jié)構(gòu)化特征,但是在組織方式上是結(jié)構(gòu)化的,具有很強(qiáng)的規(guī)則性,這是其最大的特點(diǎn),也是和傳統(tǒng)存儲(chǔ)模型不一樣的地方。鑒于監(jiān)控視頻體現(xiàn)出的非結(jié)構(gòu)化的表現(xiàn)形式和結(jié)構(gòu)化的組織方式,以及其在保存時(shí)間、讀寫方式和更新方式上的有序性,本文考慮從監(jiān)控視頻的自身特點(diǎn)出發(fā),利用視頻編碼技術(shù)消除其數(shù)據(jù)上的冗余,減少無(wú)用數(shù)據(jù)占用存儲(chǔ)空間,并充分利用監(jiān)控視頻數(shù)據(jù)的有序性特征將數(shù)據(jù)進(jìn)行規(guī)范的組織,實(shí)現(xiàn)有序存儲(chǔ),便于對(duì)存儲(chǔ)設(shè)備的均衡

12、訪問(wèn)和對(duì)數(shù)據(jù)的管理,為錄像文件檢索與回放提供一種快捷有效的方式?;谏鲜龅乃悸?,課題從視頻壓縮、文件組織和存儲(chǔ)管理三個(gè)方面對(duì)系統(tǒng)的存儲(chǔ)模塊進(jìn)行設(shè)計(jì)。1)監(jiān)控視頻的壓縮編碼數(shù)據(jù)壓縮是解決存儲(chǔ)問(wèn)題最基礎(chǔ)最有效的的方法之一。視頻監(jiān)控系統(tǒng)的海量數(shù)據(jù)的存儲(chǔ)光靠硬件設(shè)備支持是遠(yuǎn)遠(yuǎn)不夠的,所以必須對(duì)數(shù)據(jù)進(jìn)行壓縮處理,來(lái)減輕存儲(chǔ)設(shè)備的負(fù)荷。對(duì)數(shù)據(jù)進(jìn)行壓縮有三個(gè)方面的好處:節(jié)省存儲(chǔ)設(shè)備空間;節(jié)省CPU處理時(shí)間;節(jié)省數(shù)據(jù)的傳輸時(shí)間。編碼的主要任務(wù)是按照所設(shè)置的編碼壓縮參數(shù)來(lái)完成對(duì)這些視頻的壓縮編碼。編碼參數(shù)主要包括編碼器參數(shù)和圖像編碼參數(shù)。其中編碼器數(shù)數(shù)主要有源幀率、信道速率等;圖像編碼參數(shù)主要有圖像的格式、編碼

13、類型,是否允許非限制運(yùn)動(dòng)矢量模式等。由此看來(lái),對(duì)視頻數(shù)據(jù)進(jìn)行壓縮是視頻文件存儲(chǔ)的一個(gè)重要環(huán)節(jié)。課題中采用的是MPEG4壓縮編碼標(biāo)準(zhǔn),因?yàn)镸PEG4基于AV對(duì)象的壓縮模式能夠保證運(yùn)動(dòng)物體圖像有比較高的圖像質(zhì)量,更適合于項(xiàng)目中其他任務(wù)對(duì)運(yùn)動(dòng)目標(biāo)分析的要求。根據(jù)MPEG4的編碼原理,所設(shè)計(jì)的壓縮編碼框圖如圖3.6所示。圖3.6MPEG4的壓縮編碼框圖MPEG4編碼器編碼過(guò)程可以描述為:當(dāng)視頻流輸入到編碼器,一方面編碼器對(duì)視頻進(jìn)行場(chǎng)景分析和對(duì)象分割,劃分為不同的VOP,將VOP進(jìn)行形狀編碼,得到各個(gè)VOP的形狀和位置信息,并用形狀編碼得到的信息來(lái)控制VOP的運(yùn)動(dòng)編碼和紋理編碼;另一方面對(duì)宏塊進(jìn)行DCT

14、變換和量化,量化后的宏塊經(jīng)過(guò)逆量化和反DCT變換,并將這些處理后的宏塊進(jìn)行運(yùn)動(dòng)編碼,在運(yùn)動(dòng)編碼過(guò)程中采用了運(yùn)動(dòng)預(yù)測(cè)/補(bǔ)償法;輸入的VOP與幀存中的前一幀的VOP進(jìn)行比較,得到當(dāng)前塊的運(yùn)動(dòng)矢量,然后對(duì)兩幀VOP的差值進(jìn)行DCT變換、量化和紋理編碼,得到紋理信息,接著將得到的紋理信息與運(yùn)動(dòng)編碼得到的運(yùn)動(dòng)信息以及形狀編碼得到的形狀和位置信息進(jìn)行合成,形成VOP的比特流。分別對(duì)不同視頻對(duì)象的VOP進(jìn)行編碼,得到不同的比特流,再經(jīng)過(guò)視頻多路合成,形成MPEG4視頻流在信道上傳輸。2)文件組織文件組織結(jié)構(gòu)設(shè)計(jì)的主要目的是為了便于系統(tǒng)對(duì)文件數(shù)據(jù)的存儲(chǔ)和管理。因此,本文對(duì)視頻存儲(chǔ)中的視頻文件的命名規(guī)則和文件管

15、理策略兩個(gè)方面制定了可行的方案。具體方案如下:1)視頻文件的命名規(guī)則:考慮到在實(shí)際應(yīng)用中,用戶在查詢錄像文件時(shí)一般是按錄像的時(shí)間、某個(gè)攝像機(jī)所在的通道以及錄像性質(zhì)為查找條件。為此,課題中提出以“時(shí)間+通道+錄像性質(zhì)”作為錄像文件的名稱,其中時(shí)間是按年月日時(shí)分秒來(lái)記錄的。命名格式規(guī)范為圖3.7所示。圖3.7文件名格式規(guī)范操作中,可以按照錄像的時(shí)間自動(dòng)為錄像文件生成文件名,在系統(tǒng)判斷文件是否過(guò)期和用戶對(duì)文件進(jìn)行檢索回放時(shí),可以按照文件名來(lái)進(jìn)行快速準(zhǔn)確的操作。2)文件管理策略:用戶會(huì)根據(jù)不同場(chǎng)所的不同要求對(duì)錄像文件設(shè)定不同的保存期限,在文件過(guò)期后為被刪除,留出更多的空間存儲(chǔ)更多新的視頻數(shù)據(jù)。因此,錄

16、像文件的改變是相當(dāng)頻繁的,而且系統(tǒng)產(chǎn)生的視頻數(shù)據(jù)量相當(dāng)大,生成的文件更是一個(gè)天文數(shù)字。為了實(shí)現(xiàn)對(duì)這些海量文件的高效管理,本文將硬盤進(jìn)行分層管理,其管理模式如圖3.8所示。圖3.8硬盤分層管理模式從圖3.8中可以看出,硬盤中為其他類型文件和視頻文件分別劃分了不同的區(qū),而在視頻文件中又為不同的通道的視頻數(shù)據(jù)進(jìn)行了劃分,這種管理方式層次比較強(qiáng),為海量數(shù)據(jù)的管理提供了有效的方案。3)管理策略在視頻監(jiān)控系統(tǒng)中,視頻文件的存儲(chǔ)是一個(gè)需要在系統(tǒng)設(shè)計(jì)中解決好的重要問(wèn)題,也是衡量系統(tǒng)性能的一個(gè)重要指標(biāo)。存儲(chǔ)管理策略要求有效可靠的存儲(chǔ)、簡(jiǎn)單快捷的檢索回放、合理高效的磁盤空間利用等,以滿足用戶不同的需求。設(shè)計(jì)中需要

17、系統(tǒng)中的存儲(chǔ)管理能夠完成以下四個(gè)主要方面的要求:1)存儲(chǔ)錄像模式:在視頻監(jiān)控系統(tǒng)中,在對(duì)文件存儲(chǔ)錄像的時(shí)候都是循環(huán)覆蓋模式和線性提醒模式。所謂循環(huán)覆蓋模式(如圖3.9所示),就是視頻在存儲(chǔ)過(guò)程中是按盤逐個(gè)進(jìn)行的。當(dāng)所有磁盤空間都存儲(chǔ)滿時(shí)接下來(lái)的文件將自動(dòng)覆蓋最開(kāi)始的文件。所謂線性提醒模式(如圖3.10所示)是指視頻文件按磁盤逐個(gè)存儲(chǔ),當(dāng)所有磁盤都存滿時(shí),系統(tǒng)提醒用戶更換磁盤,這種模式要求存儲(chǔ)設(shè)備具備熱插拔功能。圖3.9循環(huán)覆蓋模式圖3.10線性提醒模式2)檢索回放:監(jiān)控系統(tǒng)的檢索回放功能要求在視頻文件存儲(chǔ)的時(shí)候要高效、有序地對(duì)文件進(jìn)行組織,能夠按錄像通道、錄像時(shí)間及文件的類型等做好分類存儲(chǔ),以

18、便用戶能夠快速有效的在大量文件中檢索到自己所需的錄像記錄,對(duì)圖像文件處理。3)靈活的存儲(chǔ)規(guī)模:系統(tǒng)可以根據(jù)用戶的需求進(jìn)行存儲(chǔ)規(guī)模的調(diào)整,既可以以單磁盤作為系統(tǒng)的存儲(chǔ)介質(zhì),也可以選擇用多個(gè)硬盤或磁盤陣列作為存儲(chǔ)介質(zhì),以適應(yīng)不同規(guī)模的系統(tǒng)在不同現(xiàn)場(chǎng)的存儲(chǔ)要求。為了便于對(duì)存儲(chǔ)盤的管理,課題將硬盤可以劃分為存放系統(tǒng)文件和數(shù)據(jù)的系統(tǒng)盤和存放視頻監(jiān)控錄像的數(shù)據(jù)盤兩種。實(shí)際操作中,對(duì)于單盤存儲(chǔ)的小規(guī)模系統(tǒng),將盤劃分為這兩種邏輯區(qū);對(duì)于多個(gè)盤的系統(tǒng),可將一個(gè)盤劃分為系統(tǒng)盤,剩余的盤則作為數(shù)據(jù)盤。系統(tǒng)大量的視頻數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)盤中,必需一個(gè)有效的控制模式來(lái)完成對(duì)數(shù)據(jù)盤的管理才能滿足系統(tǒng)對(duì)存儲(chǔ)性能的要求。為了適應(yīng)監(jiān)

19、控系統(tǒng)大量視頻數(shù)據(jù)的存儲(chǔ)需要,設(shè)計(jì)將硬盤所有扇區(qū)劃分為幾個(gè)區(qū):管理控制區(qū)、文件結(jié)構(gòu)區(qū)、索引文件區(qū)、數(shù)據(jù)區(qū)和日志管理區(qū)。數(shù)據(jù)區(qū)又劃分為若干個(gè)數(shù)據(jù)塊,數(shù)據(jù)塊的大小可以自由設(shè)置,并通過(guò)結(jié)構(gòu)信息和索引文件來(lái)管理數(shù)據(jù)塊。各區(qū)之間的關(guān)系可以用圖3.11表示。圖3.11各區(qū)之間的關(guān)系1)管理控制區(qū)的位置相對(duì)比較固定,主要用于存放當(dāng)前磁盤和文件系統(tǒng)的基本信息,如每個(gè)區(qū)域的具體位置和大小、各分區(qū)的使用情況、下一條可用索引單元的位置、下一個(gè)可用數(shù)據(jù)塊的位置等.2)日志管理區(qū)可以由用戶根據(jù)磁盤空間來(lái)自由設(shè)定大小,是專門用來(lái)存放日志文件的區(qū)域,完成對(duì)日志的管理工作。3)文件結(jié)構(gòu)區(qū)主要是用來(lái)描述錄像文件的結(jié)構(gòu),存放的是

20、錄像文件的相關(guān)信息,如錄像起止時(shí)間、對(duì)應(yīng)的索引塊位置等,其中的信息文件結(jié)構(gòu)和大小比較固定,通過(guò)結(jié)構(gòu)文件的信息就能得到對(duì)應(yīng)的索引信息的準(zhǔn)確位置。4)索引信息區(qū)用于存放數(shù)據(jù)塊的索引。因?yàn)橐粋€(gè)錄像文件可能會(huì)包含多個(gè)數(shù)據(jù)塊,所以將索引區(qū)分成索引塊,而每個(gè)索引塊存放與文件包含的數(shù)據(jù)塊數(shù)目相同的索引信息單元,每個(gè)索引信息單元與數(shù)據(jù)塊一一對(duì)應(yīng),而每個(gè)索引塊則與一個(gè)錄像文件關(guān)聯(lián)。5)數(shù)據(jù)區(qū)是其他四個(gè)區(qū)劃分完后所有剩余空間。將其劃分為若干個(gè)塊,大小自由設(shè)定,以塊作為存儲(chǔ)錄像數(shù)據(jù)的最小單元來(lái)保存監(jiān)控視頻。塊的結(jié)構(gòu)定義如圖3.12所示。圖3.12塊的結(jié)構(gòu)定義設(shè)計(jì)思想概括為:將數(shù)據(jù)區(qū)劃分為若干個(gè)小的數(shù)據(jù)塊,大小可以由

21、用戶自由設(shè)置,采用這些底層的數(shù)據(jù)塊作為基本存儲(chǔ)單元,每個(gè)數(shù)據(jù)塊在索引區(qū)都有一個(gè)對(duì)應(yīng)的索引單元,記錄數(shù)據(jù)塊的位置;當(dāng)用戶給定文件長(zhǎng)度后,可以確定一個(gè)文件所包含的數(shù)據(jù)塊的個(gè)數(shù)N,當(dāng)存儲(chǔ)的數(shù)據(jù)塊達(dá)到N時(shí),在索引區(qū)生成一個(gè)索引塊,記錄下該文件開(kāi)始的數(shù)據(jù)塊的索引單元位置和文件所包含的塊數(shù)目;在文件結(jié)構(gòu)區(qū)建立一個(gè)結(jié)構(gòu)信息文件,將索引塊的位置和錄像文件開(kāi)始與結(jié)束的時(shí)間等信息。這種模式實(shí)際上是將錄像文件的“形式外殼”存放在文件結(jié)構(gòu)區(qū),而實(shí)際數(shù)據(jù)則以數(shù)據(jù)塊的形式存儲(chǔ)在數(shù)據(jù)區(qū)內(nèi),它們是通過(guò)索引塊和索引單元建立的鏈表相互關(guān)聯(lián),形成一個(gè)個(gè)視頻文件。這種設(shè)計(jì)的優(yōu)點(diǎn)在于數(shù)據(jù)是以數(shù)據(jù)塊的形式存放的,當(dāng)進(jìn)行數(shù)據(jù)覆蓋時(shí),不像以

22、往存儲(chǔ)方式是以大顆粒的錄像文件進(jìn)行覆蓋,而是進(jìn)行數(shù)據(jù)塊覆蓋,所以能夠減少磁盤碎片的產(chǎn)生。由于結(jié)構(gòu)信息和索引文件需要占用一定的磁盤空間,并且與數(shù)據(jù)塊的總數(shù)密切相關(guān),塊總數(shù)可以根據(jù)空間大小與數(shù)據(jù)塊大小得到。由于這類文件所點(diǎn)空間都很小,因此結(jié)構(gòu)信息和索引文件所占用的磁盤空間在整個(gè)磁盤中只占很小的比例。檢索回放模塊設(shè)計(jì)文件系統(tǒng)的設(shè)計(jì)是為了對(duì)隨機(jī)讀寫的數(shù)據(jù)進(jìn)行管理。在以往的監(jiān)控系統(tǒng)中,視頻錄像以文件進(jìn)行存儲(chǔ),在錄像檢索時(shí)首先要根據(jù)攝像頭、檢索的時(shí)間查找到相應(yīng)的文件,然后再手動(dòng)定位具體的時(shí)間點(diǎn),再?gòu)脑摃r(shí)間點(diǎn)回放錄像。檢索過(guò)程中的最小單位是文件,顆粒度太大,精確度很低,檢索效率也比較低,對(duì)于一個(gè)規(guī)模較大的監(jiān)

23、控系統(tǒng)來(lái)說(shuō),存儲(chǔ)的視頻文件數(shù)將以百萬(wàn)計(jì),檢索難度是非常大的。設(shè)計(jì)中為方便用戶對(duì)視頻數(shù)據(jù)的檢索,索引采用了分級(jí)設(shè)計(jì),在索引文件區(qū)中建立索引塊,與錄像文件關(guān)聯(lián),記錄錄像文件的開(kāi)始數(shù)據(jù)塊的索引位置和文件所包含的索引單元的個(gè)數(shù)N,在索引塊下又分N個(gè)索引單元,分別與文件所包含的數(shù)據(jù)塊對(duì)應(yīng),通過(guò)索引塊和索引單元中的信息構(gòu)成一個(gè)鏈表,用戶通過(guò)鏈表即可找到所需要的數(shù)據(jù)。其中索引單元的結(jié)構(gòu)如圖3.13所示圖3.13索引單元結(jié)構(gòu)在方案中,在文件結(jié)構(gòu)中結(jié)構(gòu)信息文件是嚴(yán)格按照“時(shí)間+通道+錄像類型”進(jìn)行命名的,所以在進(jìn)行視頻檢索時(shí)可以采用二分法快速查找到指定條件的文件結(jié)構(gòu)信息,再根據(jù)結(jié)構(gòu)信息中的索引塊的信息,找到對(duì)應(yīng)

24、的索引塊,因?yàn)樗饕龎K中給出了錄像文件開(kāi)始數(shù)據(jù)塊的索引信息,在索引信息中又包含了下一個(gè)索引單元的位置,所以根據(jù)索引塊和索引單元所建立的索引鏈表即可找到用戶需要的錄像數(shù)據(jù)塊。理論上,如果數(shù)據(jù)塊設(shè)置恰當(dāng),利用這種檢索模式可以準(zhǔn)確定位到某一秒,甚至可以定位到某一幀圖像,從而實(shí)現(xiàn)快速、精確的檢索。其步驟如圖3.14所示。圖3.14錄像文件檢索步驟整個(gè)搜索方案描述為:首先讀取用戶所設(shè)置的檢索條件,按照條件中的通道條件找到通道相關(guān)的文件結(jié)構(gòu)信息;接著從搜索結(jié)果中找出與條件中錄像性質(zhì)一致的結(jié)構(gòu)信息;然后從結(jié)果中找出包含所給時(shí)間條件的結(jié)構(gòu)信息;查找出滿足用戶條件的結(jié)構(gòu)信息后,再根據(jù)結(jié)構(gòu)信息中的索引文件信息找出對(duì)

25、應(yīng)的索引文件,然后根據(jù)索引單元的時(shí)間信息定位到與查找條件最匹配的索引單元,最后按照索引單元讀取相應(yīng)數(shù)據(jù)塊中的數(shù)據(jù)。3.4本章小結(jié)本章首先介紹了課題中視頻監(jiān)控系統(tǒng)的框架,從系統(tǒng)框架引入視頻存儲(chǔ)服務(wù)器,并對(duì)其結(jié)構(gòu)進(jìn)行了分析,闡明了視頻存儲(chǔ)服務(wù)器各模塊的功能,然后對(duì)各功能模塊提出了設(shè)計(jì)方案和思路,存儲(chǔ)模塊作為整個(gè)設(shè)計(jì)的重點(diǎn),在本章中也對(duì)其進(jìn)行了重點(diǎn)闡明。4視頻存儲(chǔ)服務(wù)器的實(shí)現(xiàn)本章根據(jù)上一章的設(shè)計(jì)方案,介紹了視頻存儲(chǔ)服務(wù)器的實(shí)現(xiàn),從編解碼模塊、視頻錄像存儲(chǔ)模塊和檢索回放模塊三個(gè)方面介紹了實(shí)現(xiàn)的具體過(guò)程。4.1編解碼模塊的實(shí)現(xiàn)解碼模塊的實(shí)現(xiàn)從解碼器的框圖中可以得知,解碼器從網(wǎng)絡(luò)提取層NAL中接收壓縮位流

26、,數(shù)據(jù)元素經(jīng)過(guò)熵解碼和重新排序后產(chǎn)生一組量化系數(shù)X。利用從位流中解碼的頭信息調(diào)整這些系數(shù),并經(jīng)過(guò)反量化、反變換得到殘差數(shù)據(jù)D,解碼器創(chuàng)建的預(yù)測(cè)塊PRED與D相加,得到一個(gè)重構(gòu)的塊uF,將uF經(jīng)過(guò)濾波得到每個(gè)塊的解碼F36。基于這種思路,本文從NAL單元解碼、熵解碼、參考幀列表的重排序、反變換和量化、幀間預(yù)測(cè)的解碼處理和幀內(nèi)預(yù)測(cè)的解碼處理6個(gè)方面給出實(shí)現(xiàn)的過(guò)程。1)NAL單元的解碼過(guò)程N(yùn)AL單元解碼的過(guò)程如圖4.1所示。圖4.1NAL單元解碼過(guò)程首先從位流中獲取NAL單元,從NAL單元的數(shù)據(jù)中提取RBSP語(yǔ)法結(jié)構(gòu),然后根據(jù)NAL單元的類型進(jìn)行解碼處理,其輸入的是NAL單元,得到的解碼后的當(dāng)前圖像

27、(CurrPic)的樣點(diǎn)值;H.264規(guī)范文檔中規(guī)定:對(duì)同一碼流,所有解碼器必須產(chǎn)生數(shù)值上相同的結(jié)果,必須符合規(guī)范定義的解碼過(guò)程標(biāo)準(zhǔn)。在NAL單元的解碼過(guò)程中,要將NAL單元數(shù)據(jù)轉(zhuǎn)換成RBSP,程序中定義了函數(shù)NALUtoRBSP()完成此功能。函數(shù)定義為:2)熵解碼H.264支持兩種熵編碼方法:上下文自適應(yīng)的可變長(zhǎng)編碼(CAVLC)和內(nèi)容自適應(yīng)編碼(CABAC)。為了能夠有效地傳送量化的變換系數(shù),CAVLC是一個(gè)比較有效的方法,而且在CAVLC方案中,對(duì)于各種語(yǔ)法元素的VLC碼表按照已經(jīng)傳送的語(yǔ)法元素可以進(jìn)行切換,改善了熵編碼的性能。CAVLC的解碼過(guò)程是:首先是初始化,依據(jù)所輸入的參數(shù)得到

28、塊的類型,并輸入數(shù)據(jù)的個(gè)數(shù)等相關(guān)參數(shù)。然后求變量NC,并通過(guò)NC值來(lái)確定所要查找的表格,其中NA表示與當(dāng)前塊相鄰的左邊塊中非零系數(shù)的個(gè)數(shù),NB表示與當(dāng)前塊相鄰的上面塊中非零的個(gè)數(shù)。以Coeff_token語(yǔ)法元素為入口函數(shù),查表得到非零系數(shù)的個(gè)數(shù)TotalCoeffs、拖尾系數(shù)的個(gè)數(shù)TrailingOnes。以TotalCoeffs為入口函數(shù),查表可以得到TotalZero值。通過(guò)函數(shù)readSymtaxElement_NumCoeffTrailingOnes()讀入NumCoeff/TrailingOnes的碼字。3)參考幀列表的重排序重排序的流程如圖4.2所示圖4.2參考幀列表的重排序流程

29、參考幀列表的重排序主要是為了節(jié)省碼流。解碼器根據(jù)片頭碼流中的相關(guān)語(yǔ)法元素,如ref_pic_list_reordering_flag_10、ref_pic_list_reordering_flag_11、reordering_of_pic_nums_dic、abs_diff_pic_num_minusl等的規(guī)定,進(jìn)行列表的重排序。參考圖像的重排序信息由函數(shù)ref_pic_list_reordering()讀入。4)反變換和量化與其他的視頻編碼標(biāo)準(zhǔn)相似,H.264標(biāo)準(zhǔn)采取的是預(yù)測(cè)殘余變換編碼。但H.264變換是施加在4X4塊上的,沒(méi)用采用DCT變換,而是用與DCT類似特性的整數(shù)變換ICT,因而反

30、變換沒(méi)有誤差。直流亮度系數(shù)的反變換和量化由函數(shù)itrans_2(structimg_par*img)實(shí)現(xiàn),函數(shù)voidcopyblock_sp(structimg_par*img,intblock_x,intblock_y)負(fù)責(zé)將反變換和量化的結(jié)果寫入解碼的亮度幀。5)幀內(nèi)預(yù)測(cè)的解碼處理在幀內(nèi)預(yù)測(cè)中,當(dāng)前編碼的宏塊上方和左方的宏塊用于計(jì)算當(dāng)前宏塊的預(yù)測(cè)值。當(dāng)前宏塊與其預(yù)測(cè)值的差值進(jìn)一步編碼,將其傳到解碼器。在該比特流中包含了表示預(yù)測(cè)方式的相關(guān)比特和解碼出的殘差信號(hào)的比特,解碼器利用這些相關(guān)的比特計(jì)算出當(dāng)前宏塊的預(yù)測(cè)值,并以這個(gè)預(yù)測(cè)值來(lái)恢復(fù)圖像原始像素值。在幀內(nèi)預(yù)測(cè)中,宏塊有4種預(yù)測(cè)方式:4x4

31、亮度塊的幀內(nèi)預(yù)測(cè)(Intra_4x4)、16x16亮度塊的幀內(nèi)預(yù)測(cè)(Intra_16x16)、8x8色度塊的幀內(nèi)預(yù)測(cè)(Intra_chroma),以及PCM的預(yù)測(cè)方式(I_PCM)。每個(gè)塊可選擇四種方式其中之一進(jìn)行幀內(nèi)預(yù)測(cè),所有的類型都支持兩級(jí)幀內(nèi)編碼:INTRA-4X4和INTRA-16X16。前者分別預(yù)測(cè)每個(gè)4X4亮度塊,比較適合于描述圖像細(xì)節(jié)部分,而后者則是將整個(gè)16X16亮度塊進(jìn)行預(yù)測(cè),比較適合于圖像較平滑區(qū)域。對(duì)這兩種預(yù)測(cè)類型的色度則進(jìn)行單獨(dú)預(yù)測(cè)。在程序中,幀內(nèi)模式下4x4塊的重構(gòu)由函數(shù)intrapred()完成。其定義如下:6)幀間預(yù)測(cè)的解碼處理在解碼端,P宏塊和B宏塊解碼時(shí)需要進(jìn)

32、行幀間預(yù)測(cè)解碼處理,處理后輸出幀間預(yù)測(cè)像素矩陣,包括一個(gè)16X16的亮度矩陣PREDL和兩個(gè)色度8X8矩陣:PREDcr和PREDcb。調(diào)用函數(shù)BType2CtxRef()來(lái)設(shè)置參考幀的上下文,該函數(shù)定義如下:在亮度模塊中,通過(guò)對(duì)相鄰塊的預(yù)測(cè)得到非零系數(shù)的數(shù)字。此功能由函數(shù)predict_nnz(structimg_par*img,inti,intj)來(lái)完成。編碼模塊的實(shí)現(xiàn)視頻編碼是一個(gè)反復(fù)對(duì)圖像幀進(jìn)行編碼的過(guò)程。本文將編碼程序的分為三個(gè)步驟:為編碼器創(chuàng)建一個(gè)實(shí)例、反復(fù)調(diào)用編碼函數(shù)對(duì)圖像幀進(jìn)行編碼、銷毀編碼器。為此定義了三個(gè)函數(shù)enc_create()、enc_encode()、enc_des

33、troy()分別完成編碼程序的三個(gè)步驟。(1)enc_create()要?jiǎng)?chuàng)建一個(gè)編碼器首先要為編碼器創(chuàng)建一個(gè)實(shí)例句柄,用該函數(shù)創(chuàng)建一個(gè)MPEG4編碼器句柄,接著在句柄下完成對(duì)編碼器的參數(shù)配置、圖像參數(shù)獲取及空間申請(qǐng)等工作,以便通過(guò)句柄在多路編碼時(shí)來(lái)完成對(duì)每一路編碼的控制。其流程如圖4.3所示。圖4.3enc_create()編碼流程(2)enc_encode()用enc_encode()完成對(duì)傳入的一個(gè)圖像幀的編碼工作。對(duì)輸入的一幀圖像首先進(jìn)行單元?jiǎng)澐郑阂院陦K為基本單元進(jìn)行劃分,再由若干宏塊在組合成Slice,由Slice再組合成SliceGroup,這樣可以確定每個(gè)宏塊所屬的Slice和Sl

34、iceGroup。再判斷輸33入的一幀圖像是I-Frame還是P-Frame。在以上工作完成后,就可以對(duì)每個(gè)宏塊進(jìn)行編碼了。在對(duì)每個(gè)宏塊都編碼完成后,還需要對(duì)重構(gòu)圖像進(jìn)行1/4象素精度插值處理、參考幀緩沖區(qū)插入處理等工作。至此,編碼一幀的工作才算完成。過(guò)程如圖4.4所示圖4.4編碼一幀圖像過(guò)程根據(jù)編碼程序判定或用戶強(qiáng)制類型對(duì)輸入的圖像幀進(jìn)行編碼,編碼器將編碼之后的碼流及其長(zhǎng)度作為返回值返回,并統(tǒng)計(jì)好編碼信息。enc_encode()編程流程如圖4.5所示。圖4.5enc_encode()編程流程在enc_encode()函數(shù)內(nèi)部還設(shè)計(jì)了兩個(gè)函數(shù)FrameCodeI和FrameCodeP,由它們

35、真正完成圖像編碼操作,分別完成對(duì)I幀和P幀的編碼。1)I幀編碼是為了消除圖像幀在空間上的冗余。其編碼過(guò)程比較簡(jiǎn)單,其中AC/DC是對(duì)宏塊變換的第一行和第一列作預(yù)測(cè),以進(jìn)一步增加零系數(shù)的數(shù)目。其流程為:(如圖4.6所示)圖4.6I幀編碼流程表4.1所示的是在I幀編碼過(guò)程所用到的函數(shù)及其功能:表4.1I幀編碼過(guò)程所用到的函數(shù)及其功能2)P幀編碼是幀間編碼,以已經(jīng)編碼、解碼重建的圖像幀為參考,并插值出若干個(gè)參考幀,并在其中找出最佳匹配塊。將當(dāng)前塊與匹配塊求差,然后對(duì)殘差值做離散余弦變換(DCT)、量化和編碼。匹配塊的運(yùn)動(dòng)向量MV及匹配相似度會(huì)因?yàn)樗玫乃阉魉惴?、所在的窗口的不同而不同。在圖像幀P幀編

36、碼中,有一定數(shù)量的Intra模式的塊編碼,其他絕大部分為Inter模式或not_coded不編碼模式。算法支持當(dāng)整整的Intra塊編碼模式超過(guò)一定數(shù)量時(shí),強(qiáng)制為I幀編碼。在編碼前,要對(duì)整幀做運(yùn)動(dòng)估計(jì),判斷各宏塊屬于哪種編碼模式。在P幀編碼中,既有Inter塊的編碼也有Intra塊的編碼,同時(shí)對(duì)零塊不做編碼not_coded,即跳過(guò)該宏塊MBSkip。Inter為幀間編碼,即對(duì)殘差進(jìn)行編碼。not_coded表示當(dāng)前宏塊沒(méi)有編碼,為零塊,則在解碼重建時(shí),直接把參考幀的塊復(fù)制過(guò)來(lái)作為解碼圖像,這種塊模式的宏35塊一般都是背景圖像。P幀編碼流程如圖4.7所示。圖4.7P幀編碼流程表4.2所示的是在P

37、幀編碼過(guò)程所定義的主要函數(shù)及其功能:表4.2P幀編碼所用的主要函數(shù)及其功能為了保證解碼器解碼出的圖像正確,在創(chuàng)建編、解碼器的圖像幀空間時(shí)(image_create函數(shù)),應(yīng)都初始化為確定的相同的值,否則解碼器重建的圖像邊緣會(huì)出錯(cuò)。(3)enc_destroy()銷毀編碼器實(shí)例對(duì)應(yīng)于創(chuàng)建編碼器實(shí)例的工作,即把所有申請(qǐng)的內(nèi)存釋放,通過(guò)反復(fù)調(diào)用Image_destroy()函數(shù)來(lái)釋放圖像序列空間、當(dāng)前編碼幀的圖像空間、參考幀的圖像空間、參考幀的水平插值幀的圖像空間、參考幀的垂直插值幀的圖像空間、參考幀的斜角方向的插值幀的圖像空間、宏塊編碼空間;而編碼器空間則通過(guò)enc_free()來(lái)釋放。4.2存儲(chǔ)

38、模塊的實(shí)現(xiàn)根據(jù)第三章所描述的設(shè)計(jì)思想,存儲(chǔ)模塊的實(shí)現(xiàn)包括管理控制區(qū)實(shí)現(xiàn)、文件結(jié)構(gòu)區(qū)實(shí)現(xiàn)、索引文件區(qū)實(shí)現(xiàn)、日志管理區(qū)實(shí)現(xiàn)和數(shù)據(jù)區(qū)實(shí)現(xiàn)5個(gè)部分。當(dāng)啟動(dòng)存儲(chǔ)功能時(shí),在管理控制區(qū)內(nèi)找到當(dāng)前盤及存儲(chǔ)路徑,然后將視頻數(shù)據(jù)按照磁盤分配策略和文件組織方式進(jìn)行存儲(chǔ),并按照用戶對(duì)文件長(zhǎng)度的要求和數(shù)據(jù)塊大小建立相關(guān)聯(lián)的索引塊和索引單元信息,最后將形成索引文件信息反饋給系統(tǒng),以便系統(tǒng)為錄像文件建立相應(yīng)的文件結(jié)構(gòu)信息。管理控制區(qū)的建立管理控制區(qū)的建立是綜合考慮當(dāng)前盤的可用空間與被訪問(wèn)頻度所制定的調(diào)度策略的實(shí)現(xiàn)。區(qū)內(nèi)主要存放當(dāng)前硬盤信息和文件系統(tǒng)基本信息,目的是統(tǒng)一對(duì)整個(gè)磁盤資源的調(diào)度,提高存儲(chǔ)和檢索的速度,同時(shí),也使磁

39、盤的各個(gè)扇區(qū)能夠有均等的機(jī)會(huì)被訪問(wèn),避免某個(gè)扇區(qū)被頻繁訪問(wèn)而影響磁盤的性能。管理控制區(qū)的實(shí)現(xiàn)結(jié)構(gòu)如下:其中max_channel_num是允許的最大通道數(shù),file_struct_area_addr是一個(gè)2*max_channel_num的數(shù)組,用來(lái)存放覆蓋前后的各通道的文件結(jié)構(gòu)信息。通過(guò)管理控制區(qū)提供的信息,可以完成對(duì)系統(tǒng)中硬盤的管理。系統(tǒng)運(yùn)行后,服務(wù)器與存儲(chǔ)設(shè)備連接,系統(tǒng)對(duì)硬盤進(jìn)行檢測(cè),得到硬盤信息,并根據(jù)制定的分區(qū)方案將硬盤進(jìn)行分區(qū)。分區(qū)完成后,按照設(shè)置的數(shù)據(jù)塊大小生成一系列文件寫入各數(shù)據(jù)塊,為視頻數(shù)據(jù)存儲(chǔ)預(yù)分配好空間。此時(shí),系統(tǒng)在索引文件區(qū)為各數(shù)據(jù)塊生成相應(yīng)的索引單元,并按照用戶設(shè)定的

40、錄像文件長(zhǎng)度和數(shù)據(jù)塊大小得到一個(gè)錄像文件所包含的數(shù)據(jù)塊個(gè)數(shù),然后建立索引塊,包含所需要的索引單元。而在索引塊建立后,系統(tǒng)根據(jù)索引塊的信息在文件結(jié)構(gòu)區(qū)為錄像文件生成相應(yīng)的結(jié)構(gòu)信息文件。當(dāng)數(shù)據(jù)區(qū)空間全部分配完畢,根據(jù)各區(qū)提供的信息更新管理控制區(qū)信息,完成初始化工作。文件結(jié)構(gòu)區(qū)的建立結(jié)構(gòu)中保存了錄像文件的開(kāi)始和結(jié)束時(shí)間,時(shí)間是按年、月、日、小時(shí)、分、秒來(lái)定義的,時(shí)間參數(shù)的結(jié)構(gòu)為:設(shè)計(jì)中文件名中包含了文件時(shí)間、通道號(hào)和錄像類型其結(jié)構(gòu)為:錄像時(shí),視頻數(shù)據(jù)按時(shí)間順序?qū)懭霐?shù)據(jù)區(qū),數(shù)據(jù)區(qū)將這些數(shù)據(jù)寫入數(shù)據(jù)塊。數(shù)據(jù)在存儲(chǔ)之前要經(jīng)過(guò)壓縮,壓縮的過(guò)程中已經(jīng)將視頻數(shù)據(jù)的時(shí)間、通道號(hào)和錄像類型等信息封裝在數(shù)據(jù)里,系統(tǒng)根

41、據(jù)這些封裝的信息解析后按照設(shè)計(jì)的文件名格式為文件結(jié)構(gòu)區(qū)中的文件重新命名,并將有關(guān)信息存放到相應(yīng)的結(jié)構(gòu)文件里,完善文件結(jié)構(gòu)信息。當(dāng)某個(gè)文件要被覆蓋時(shí),文件結(jié)構(gòu)中的信息將被置空,為新的文件結(jié)構(gòu)留出空間,而在索引文件區(qū)會(huì)記錄新文件的索引信息,同時(shí)文件結(jié)構(gòu)區(qū)也會(huì)作相應(yīng)的更新,以便維護(hù)文件結(jié)構(gòu)的完整性。索引文件區(qū)的建立所有的錄像文件必須制作了索引文件后才能被點(diǎn)播,否則點(diǎn)播會(huì)失敗。在索引文件區(qū)中一個(gè)索引塊對(duì)應(yīng)一個(gè)錄像文件,一個(gè)數(shù)據(jù)塊對(duì)應(yīng)一個(gè)索引單元,因?yàn)橐粋€(gè)錄像文件可能包含N個(gè)數(shù)據(jù)塊,所以每個(gè)索引塊包含N個(gè)索引單元。每個(gè)索引單元描述對(duì)應(yīng)數(shù)據(jù)塊的位置以及相鄰塊的索引單元位置,每個(gè)索引塊描述塊內(nèi)索引單元所對(duì)應(yīng)

42、第一個(gè)數(shù)據(jù)塊的位置和包含的索引單元數(shù)量。索引塊結(jié)構(gòu)INDEX_BLOCK和索引單元結(jié)構(gòu)INDEX_UNIT的定義如下:索引文件區(qū)包含了索引塊和索引單元,分別存放錄像文件的索引信息和數(shù)據(jù)塊的索引信息。在數(shù)據(jù)存儲(chǔ)時(shí),寫入一個(gè)數(shù)據(jù)塊更新一個(gè)索引單元的信息;當(dāng)數(shù)據(jù)量達(dá)到設(shè)置的錄像文件大小要求時(shí)系統(tǒng)更新索引塊信息。當(dāng)硬盤存滿時(shí),系統(tǒng)會(huì)按照設(shè)置的錄像存儲(chǔ)模式進(jìn)行覆蓋或提醒,當(dāng)選擇覆蓋模式時(shí),最初的數(shù)據(jù)將被覆蓋。新存入的數(shù)據(jù)的信息將發(fā)生改變,系統(tǒng)則根據(jù)這些新的信息更新索引單元和索引塊的信息。數(shù)據(jù)區(qū)的建立數(shù)據(jù)區(qū)用來(lái)存儲(chǔ)監(jiān)控視頻錄像,與以往的視頻監(jiān)控系統(tǒng)存儲(chǔ)有所不同的是,數(shù)據(jù)區(qū)被劃分成了若干數(shù)據(jù)塊,以數(shù)據(jù)塊作為

43、視頻存儲(chǔ)的基本單位。對(duì)數(shù)據(jù)的訪問(wèn)需要通過(guò)文件結(jié)構(gòu)區(qū)中的結(jié)構(gòu)文件找到相應(yīng)的索引塊,再由索引塊找到相關(guān)聯(lián)的數(shù)據(jù)塊,才能訪問(wèn)到數(shù)據(jù)區(qū)中的內(nèi)容。但數(shù)據(jù)區(qū)中的數(shù)據(jù)也是按照指定的塊結(jié)構(gòu)進(jìn)行存儲(chǔ)的,以便于系統(tǒng)對(duì)數(shù)據(jù)的相關(guān)索引和結(jié)構(gòu)信息進(jìn)行完善和恢復(fù)。每個(gè)塊的頭部有包含數(shù)據(jù)塊的時(shí)間戳和與相鄰數(shù)據(jù)塊的偏移。在數(shù)據(jù)讀取時(shí)用戶可以通過(guò)文件號(hào)來(lái)讀取也可以通過(guò)輸入時(shí)間檢索定位指定所要的文件,而這兩種文件最終都是定位到指定的數(shù)據(jù)塊來(lái)實(shí)現(xiàn)的,而且在定位了一個(gè)塊后,就可以根據(jù)數(shù)據(jù)塊結(jié)構(gòu)DATA_BLOCK_INFO來(lái)實(shí)現(xiàn)對(duì)其前后塊的讀取,還可以通過(guò)結(jié)構(gòu)中的時(shí)間戳來(lái)實(shí)現(xiàn)快進(jìn)與快退等操作。在實(shí)際應(yīng)用中,出現(xiàn)異常關(guān)機(jī)、斷電、磁盤壞道等問(wèn)題,導(dǎo)致文件沒(méi)有保存或是文件出現(xiàn)異常,可以在開(kāi)機(jī)后先

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論