版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、3視頻存儲服務器設計在本章中,首先介紹了視頻監(jiān)控系統(tǒng)的基本框架,然后根據視頻存儲服務器在系統(tǒng)中的作用定義了服務器的結構,介紹了服務器各模塊的功能,最后對服務器的解碼模塊、存儲模塊和檢索回放模塊提出設計思想。3.1視頻監(jiān)控系統(tǒng)的框架項目是從小型單位或私人家庭等用戶的需求特點所設計的視頻監(jiān)控系統(tǒng),其結構比較簡單,既考慮到較低的成本,又兼顧用戶對系統(tǒng)數(shù)字化、網絡化的基本要求,一些硬件設備功能主要是考慮用軟件來完成。設計的視頻監(jiān)控系統(tǒng)框架如圖3.1所示。圖3.1視頻監(jiān)控系統(tǒng)結構圖該系統(tǒng)的工作原理是:攝像頭把采集到的模擬視頻信號送到編碼器,編碼器將收到的模擬信號編碼壓縮,并通過網絡將編碼后的數(shù)字信號傳送
2、到視頻存儲服務器;服務器將原始碼流解碼成RGB視頻,然后再經過編碼壓縮,按照既定的文件組織格式存入系統(tǒng)的存儲硬盤,并等待系統(tǒng)中用戶的請求信息。當接收到用戶的請求后,服務器讀出緩沖區(qū)內的數(shù)據,發(fā)送模塊采用RTP協(xié)議將數(shù)據打包,這些數(shù)據包通過UDP協(xié)議傳送到網絡上的各個用戶,用戶端接收到數(shù)據包后,將數(shù)據包放入緩沖區(qū)內,并將數(shù)據按順序和標志進行重組,然后解碼模塊對其解碼,通過調用播放模塊對解碼后的視頻數(shù)據進行實時播放;另一方面,服務器將壓縮后的視頻信號進行解碼,發(fā)送到現(xiàn)場監(jiān)控電視墻,完成現(xiàn)場實時監(jiān)控。對于遠程用戶,服務器起用流媒體服務功能,將客戶請求的數(shù)據通過HTTP協(xié)議分發(fā)到客戶端,用戶可以對接受
3、到的內容進行播放。視頻存儲服務器是整個系統(tǒng)的核心,它集存儲服務器、視頻服務器功能與一身,主要完成以下工作:視頻解碼:將前端通過網絡傳送來的壓縮視頻進行解碼,還原成RGB原始視頻流。視頻數(shù)據壓縮:對解碼出的視頻流進行壓縮,以便存儲與網絡傳輸;網絡通信:對壓縮后的視頻數(shù)據和相關的控制信息進行封裝,將對攝像機的控制信息和視頻信息封裝成支持所定義的協(xié)議信息,同時通過相應的通道將這些協(xié)議信息以幀的形式傳送到對方,完成通信雙方之間的數(shù)據傳輸;視頻數(shù)據存儲:實現(xiàn)對監(jiān)控錄像數(shù)據的統(tǒng)一保存和備份。通過網絡獲取視頻流數(shù)據,并以數(shù)據塊的方式保存在預分配的磁盤空間中,通過磁盤數(shù)據的索引文件保存錄像數(shù)據信息。監(jiān)控視頻資
4、源檢索回放:用戶可以通過檢索回放模塊對所關注的歷史視頻文件進行檢索,并通過播放器進行回放。日志管理:對系統(tǒng)的操作和系統(tǒng)故障及處理情況進行記錄,供用戶檢索查看。分析視頻流在后端的處理主要是解碼、存儲、檢索回放以及對各用戶端的傳輸。數(shù)據傳輸是遠端用戶對視頻文件有目的的檢索后通過視頻存儲服務器的流媒體服務功能完成的,因此,后端視頻處理的主要過程可以描述為如圖3.2。圖3.2后端視頻處理主要過程從圖3.2中可以看出,從網絡中接收到前端傳送過來的視頻流后,視頻存儲服務器將其解碼成RGB視頻;再將解碼后的視頻進行壓縮,變成適合存儲的數(shù)據格式,然后按照存儲文件的組織策略將這些數(shù)據進行規(guī)范,完成后將數(shù)據存入硬
5、盤;用戶可以根據自己的需要對存儲的數(shù)據文件進行查找與回放,遠程用戶查找到的視頻文件也能夠以流媒體的形式通過網絡傳送至用戶機,完成遠程監(jiān)控。3.2視頻存儲服務器的結構所設計的視頻存儲服務器要完成的主要功能是將前端傳送過來的視頻信號解碼還原成RGB視頻,并進行編碼壓縮,然后按照存儲策略存入存儲設備,用戶根據自己的需要對存儲設備中的視頻數(shù)據進行檢索與播放。設計中對視頻存儲服務器功能劃分為5個功能模塊,得到其功能結構如圖3.3所示。圖3.3視頻存儲服務器的主要功能構成各模塊的功能定義如下:1)視頻解碼模塊:主要負責對系統(tǒng)前端通過網絡傳送來的壓縮視頻信號進行解壓縮,還原成原始的RGB視頻數(shù)據。2)存儲管
6、理模塊:負責對解碼后的RGB視頻數(shù)據進行壓縮,然后以制定的文件組織規(guī)范將壓縮后的數(shù)據存放到存儲設備上。在數(shù)據存儲時要求數(shù)據占用的空間盡量要小,同時要便于對視頻文件進行檢索回放。3)檢索回放模塊:為用戶提供視頻錄像資源的快速檢索接口,用戶可以根據需要對視頻文件進行檢索調用。當用戶查找到所需要的文件時,將相應的文件從硬盤上讀出,并將這些數(shù)據與相應的控制信息封裝成支持既定協(xié)議的信息幀,通過網絡通道傳送到用戶,供用戶回放瀏覽。4)日志管理模塊:主要是記錄系統(tǒng)工作時間內的一些重要操作及事件信息,管理用戶能夠通過管理日志了解系統(tǒng)的工作情況和用戶訪問情況。5)系統(tǒng)管理模塊:負責系統(tǒng)的初始化工作,主要完成對系
7、統(tǒng)的參數(shù)配置、用戶權限管理、設備信息管理、用戶請求處理等。3.3視頻存儲服務器核心模塊設計3.3.1解碼模塊的設計系統(tǒng)前端編碼器所采用的編碼標準是H.264編碼標準,因此,系統(tǒng)的解碼模塊同樣采用H.264標準。依照H.264標準,整個流程分為5個步驟:幀間和幀內預測(Estimation)、變換(Transform)和反變換、量化(Quantization)和反量化、環(huán)路濾波(LoopFilter)、熵編碼(EntropyCoding)。在設計中按照各部分功能對解碼器進行了設計,其功能框圖如圖3.4所示。圖3.4H.264解碼器功能框圖從圖3.4可以看出,解碼器的基本流程設計為:解碼器從NAL
8、中接收壓縮的比特流,經過對碼流進行熵解碼獲得一系列量化系數(shù)X;這些系數(shù)經過反量化和反變換得到殘差數(shù)據D;解碼器使用從碼流中解碼得到的頭信息創(chuàng)建一個預測塊PRED,PRED與殘差數(shù)據D求和得到圖像塊數(shù)據uF;最后每個uF通過去塊濾波得到重建圖像的解碼塊F。監(jiān)控系統(tǒng)的視頻是由連續(xù)的圖像幀組成的。因此,某種意義上說視頻解碼就是對視頻的圖像幀進行解碼,解碼程序對視頻段的解碼也可以說是主程序反復調用幀解碼函數(shù)的過程。單幀圖像的解碼流程如圖3.5所示。圖3.5解碼器解碼一幀圖像過程一幀圖像經過視頻編碼層VCL編解碼后產生的碼流,在NAL中將這些碼流分割成NAL單元,并對NAL單元進行邊界檢測,之后對各單元
9、進行去塊濾波處理,并在參考圖像進行存儲處理后重建圖像幀;NAL單元解碼過程包含了不同類型片的解碼,而對各類型的片解碼首先從碼流中讀入一個片的編碼數(shù)據,提取RBSP語法結構,產生宏塊片組映射圖,并根據當前圖像類型對參考圖像列表進行初始化,最后完成片的解碼;而進行片解碼首先要對參考圖像序號數(shù)據以及當前宏塊解碼設置進行初始化。然后從NAL中讀入當前宏塊的語法元素,以便對宏塊進行解碼。3.3.2存儲模塊設計視頻監(jiān)控系統(tǒng)產生的視頻流數(shù)據是海量的,這些海量的視頻數(shù)據文件對系統(tǒng)的存儲系統(tǒng)提出了嚴峻的考驗。為了制定一個合理的存儲方案,本文對監(jiān)控存儲方案與以往存儲方案進行了比較,結果如表3.1所示。表3.1監(jiān)控
10、存儲與傳統(tǒng)存儲文件特性比較項目以往存儲監(jiān)控存儲數(shù)據庫表文本/圖像圖像/音頻數(shù)據表現(xiàn)形結構化(有序,可用統(tǒng)一結構表示)非結構化(無序、無法用統(tǒng)一結構表示)非結構化(無序、無法用統(tǒng)一結構表示)數(shù)據組織方式非結構化(無序,規(guī)則性不強)非結構化(無序,規(guī)則性不強)結構化(有序,規(guī)則性很強)數(shù)據保存時間無序,時長不定無序,時長不定有序,定期刪除更新數(shù)據更新方式無序,方式不定無序,方式不定有序,從尾部順序增加數(shù)據讀寫方式無序,反復多次讀寫無序,反復多次讀寫有序,一次寫少量讀/不讀存儲塊大小8-64KB512B-1MB64KB-1MB(512Kb-8Mb)性能要求IOPSIOPS、帶寬多路并發(fā)的帶寬存儲熱點
11、2/8原則,20%的數(shù)據承載80%的訪問2/8原則,20%的數(shù)據承載80%的訪問均衡原則,數(shù)據訪問的機會均等數(shù)據重要度重要,數(shù)據價值高不定大部分是無用數(shù)據從表2中可以看出,監(jiān)控存儲雖然數(shù)據的表現(xiàn)形式和以往的圖像存儲一樣,體現(xiàn)出無規(guī)則的非結構化特征,但是在組織方式上是結構化的,具有很強的規(guī)則性,這是其最大的特點,也是和傳統(tǒng)存儲模型不一樣的地方。鑒于監(jiān)控視頻體現(xiàn)出的非結構化的表現(xiàn)形式和結構化的組織方式,以及其在保存時間、讀寫方式和更新方式上的有序性,本文考慮從監(jiān)控視頻的自身特點出發(fā),利用視頻編碼技術消除其數(shù)據上的冗余,減少無用數(shù)據占用存儲空間,并充分利用監(jiān)控視頻數(shù)據的有序性特征將數(shù)據進行規(guī)范的組織
12、,實現(xiàn)有序存儲,便于對存儲設備的均衡訪問和對數(shù)據的管理,為錄像文件檢索與回放提供一種快捷有效的方式?;谏鲜龅乃悸?,課題從視頻壓縮、文件組織和存儲管理三個方面對系統(tǒng)的存儲模塊進行設計。1)監(jiān)控視頻的壓縮編碼數(shù)據壓縮是解決存儲問題最基礎最有效的的方法之一。視頻監(jiān)控系統(tǒng)的海量數(shù)據的存儲光靠硬件設備支持是遠遠不夠的,所以必須對數(shù)據進行壓縮處理,來減輕存儲設備的負荷。對數(shù)據進行壓縮有三個方面的好處:節(jié)省存儲設備空間;節(jié)省CPU處理時間;節(jié)省數(shù)據的傳輸時間。編碼的主要任務是按照所設置的編碼壓縮參數(shù)來完成對這些視頻的壓縮編碼。編碼參數(shù)主要包括編碼器參數(shù)和圖像編碼參數(shù)。其中編碼器數(shù)數(shù)主要有源幀率、信道速率等
13、;圖像編碼參數(shù)主要有圖像的格式、編碼類型,是否允許非限制運動矢量模式等。由此看來,對視頻數(shù)據進行壓縮是視頻文件存儲的一個重要環(huán)節(jié)。課題中采用的是MPEG4壓縮編碼標準,因為MPEG4基于AV對象的壓縮模式能夠保證運動物體圖像有比較高的圖像質量,更適合于項目中其他任務對運動目標分析的要求。根據MPEG4的編碼原理,所設計的壓縮編碼框圖如圖3.6所示。圖3.6MPEG4的壓縮編碼框圖MPEG4編碼器編碼過程可以描述為:當視頻流輸入到編碼器,一方面編碼器對視頻進行場景分析和對象分割,劃分為不同的VOP,將VOP進行形狀編碼,得到各個VOP的形狀和位置信息,并用形狀編碼得到的信息來控制VOP的運動編碼
14、和紋理編碼;另一方面對宏塊進行DCT變換和量化,量化后的宏塊經過逆量化和反DCT變換,并將這些處理后的宏塊進行運動編碼,在運動編碼過程中采用了運動預測/補償法;輸入的VOP與幀存中的前一幀的VOP進行比較,得到當前塊的運動矢量,然后對兩幀VOP的差值進行DCT變換、量化和紋理編碼,得到紋理信息,接著將得到的紋理信息與運動編碼得到的運動信息以及形狀編碼得到的形狀和位置信息進行合成,形成VOP的比特流。分別對不同視頻對象的VOP進行編碼,得到不同的比特流,再經過視頻多路合成,形成MPEG4視頻流在信道上傳輸。2)文件組織文件組織結構設計的主要目的是為了便于系統(tǒng)對文件數(shù)據的存儲和管理。因此,本文對視
15、頻存儲中的視頻文件的命名規(guī)則和文件管理策略兩個方面制定了可行的方案。具體方案如下:1)視頻文件的命名規(guī)則:考慮到在實際應用中,用戶在查詢錄像文件時一般是按錄像的時間、某個攝像機所在的通道以及錄像性質為查找條件。為此,課題中提出以“時間+通道+錄像性質”作為錄像文件的名稱,其中時間是按年月日時分秒來記錄的。命名格式規(guī)范為圖3.7所示。圖3.7文件名格式規(guī)范操作中,可以按照錄像的時間自動為錄像文件生成文件名,在系統(tǒng)判斷文件是否過期和用戶對文件進行檢索回放時,可以按照文件名來進行快速準確的操作。2)文件管理策略:用戶會根據不同場所的不同要求對錄像文件設定不同的保存期限,在文件過期后為被刪除,留出更多
16、的空間存儲更多新的視頻數(shù)據。因此,錄像文件的改變是相當頻繁的,而且系統(tǒng)產生的視頻數(shù)據量相當大,生成的文件更是一個天文數(shù)字。為了實現(xiàn)對這些海量文件的高效管理,本文將硬盤進行分層管理,其管理模式如圖3.8所示。圖3.8硬盤分層管理模式從圖3.8中可以看出,硬盤中為其他類型文件和視頻文件分別劃分了不同的區(qū),而在視頻文件中又為不同的通道的視頻數(shù)據進行了劃分,這種管理方式層次比較強,為海量數(shù)據的管理提供了有效的方案。3)管理策略在視頻監(jiān)控系統(tǒng)中,視頻文件的存儲是一個需要在系統(tǒng)設計中解決好的重要問題,也是衡量系統(tǒng)性能的一個重要指標。存儲管理策略要求有效可靠的存儲、簡單快捷的檢索回放、合理高效的磁盤空間利用
17、等,以滿足用戶不同的需求。設計中需要系統(tǒng)中的存儲管理能夠完成以下四個主要方面的要求:1)存儲錄像模式:在視頻監(jiān)控系統(tǒng)中,在對文件存儲錄像的時候都是循環(huán)覆蓋模式和線性提醒模式。所謂循環(huán)覆蓋模式(如圖3.9所示),就是視頻在存儲過程中是按盤逐個進行的。當所有磁盤空間都存儲滿時接下來的文件將自動覆蓋最開始的文件。所謂線性提醒模式(如圖3.10所示)是指視頻文件按磁盤逐個存儲,當所有磁盤都存滿時,系統(tǒng)提醒用戶更換磁盤,這種模式要求存儲設備具備熱插拔功能。圖3.9循環(huán)覆蓋模式圖3.10線性提醒模式2)檢索回放:監(jiān)控系統(tǒng)的檢索回放功能要求在視頻文件存儲的時候要高效、有序地對文件進行組織,能夠按錄像通道、錄
18、像時間及文件的類型等做好分類存儲,以便用戶能夠快速有效的在大量文件中檢索到自己所需的錄像記錄,對圖像文件處理。3)靈活的存儲規(guī)模:系統(tǒng)可以根據用戶的需求進行存儲規(guī)模的調整,既可以以單磁盤作為系統(tǒng)的存儲介質,也可以選擇用多個硬盤或磁盤陣列作為存儲介質,以適應不同規(guī)模的系統(tǒng)在不同現(xiàn)場的存儲要求。為了便于對存儲盤的管理,課題將硬盤可以劃分為存放系統(tǒng)文件和數(shù)據的系統(tǒng)盤和存放視頻監(jiān)控錄像的數(shù)據盤兩種。實際操作中,對于單盤存儲的小規(guī)模系統(tǒng),將盤劃分為這兩種邏輯區(qū);對于多個盤的系統(tǒng),可將一個盤劃分為系統(tǒng)盤,剩余的盤則作為數(shù)據盤。系統(tǒng)大量的視頻數(shù)據存儲在數(shù)據盤中,必需一個有效的控制模式來完成對數(shù)據盤的管理才能
19、滿足系統(tǒng)對存儲性能的要求。為了適應監(jiān)控系統(tǒng)大量視頻數(shù)據的存儲需要,設計將硬盤所有扇區(qū)劃分為幾個區(qū):管理控制區(qū)、文件結構區(qū)、索引文件區(qū)、數(shù)據區(qū)和日志管理區(qū)。數(shù)據區(qū)又劃分為若干個數(shù)據塊,數(shù)據塊的大小可以自由設置,并通過結構信息和索引文件來管理數(shù)據塊。各區(qū)之間的關系可以用圖3.11表示。圖3.11各區(qū)之間的關系1)管理控制區(qū)的位置相對比較固定,主要用于存放當前磁盤和文件系統(tǒng)的基本信息,如每個區(qū)域的具體位置和大小、各分區(qū)的使用情況、下一條可用索引單元的位置、下一個可用數(shù)據塊的位置等.2)日志管理區(qū)可以由用戶根據磁盤空間來自由設定大小,是專門用來存放日志文件的區(qū)域,完成對日志的管理工作。3)文件結構區(qū)主
20、要是用來描述錄像文件的結構,存放的是錄像文件的相關信息,如錄像起止時間、對應的索引塊位置等,其中的信息文件結構和大小比較固定,通過結構文件的信息就能得到對應的索引信息的準確位置。4)索引信息區(qū)用于存放數(shù)據塊的索引。因為一個錄像文件可能會包含多個數(shù)據塊,所以將索引區(qū)分成索引塊,而每個索引塊存放與文件包含的數(shù)據塊數(shù)目相同的索引信息單元,每個索引信息單元與數(shù)據塊一一對應,而每個索引塊則與一個錄像文件關聯(lián)。5)數(shù)據區(qū)是其他四個區(qū)劃分完后所有剩余空間。將其劃分為若干個塊,大小自由設定,以塊作為存儲錄像數(shù)據的最小單元來保存監(jiān)控視頻。塊的結構定義如圖3.12所示。圖3.12塊的結構定義設計思想概括為:將數(shù)據
21、區(qū)劃分為若干個小的數(shù)據塊,大小可以由用戶自由設置,采用這些底層的數(shù)據塊作為基本存儲單元,每個數(shù)據塊在索引區(qū)都有一個對應的索引單元,記錄數(shù)據塊的位置;當用戶給定文件長度后,可以確定一個文件所包含的數(shù)據塊的個數(shù)N,當存儲的數(shù)據塊達到N時,在索引區(qū)生成一個索引塊,記錄下該文件開始的數(shù)據塊的索引單元位置和文件所包含的塊數(shù)目;在文件結構區(qū)建立一個結構信息文件,將索引塊的位置和錄像文件開始與結束的時間等信息。這種模式實際上是將錄像文件的“形式外殼”存放在文件結構區(qū),而實際數(shù)據則以數(shù)據塊的形式存儲在數(shù)據區(qū)內,它們是通過索引塊和索引單元建立的鏈表相互關聯(lián),形成一個個視頻文件。這種設計的優(yōu)點在于數(shù)據是以數(shù)據塊的
22、形式存放的,當進行數(shù)據覆蓋時,不像以往存儲方式是以大顆粒的錄像文件進行覆蓋,而是進行數(shù)據塊覆蓋,所以能夠減少磁盤碎片的產生。由于結構信息和索引文件需要占用一定的磁盤空間,并且與數(shù)據塊的總數(shù)密切相關,塊總數(shù)可以根據空間大小與數(shù)據塊大小得到。由于這類文件所點空間都很小,因此結構信息和索引文件所占用的磁盤空間在整個磁盤中只占很小的比例。3.3.3檢索回放模塊設計文件系統(tǒng)的設計是為了對隨機讀寫的數(shù)據進行管理。在以往的監(jiān)控系統(tǒng)中,視頻錄像以文件進行存儲,在錄像檢索時首先要根據攝像頭、檢索的時間查找到相應的文件,然后再手動定位具體的時間點,再從該時間點回放錄像。檢索過程中的最小單位是文件,顆粒度太大,精確
23、度很低,檢索效率也比較低,對于一個規(guī)模較大的監(jiān)控系統(tǒng)來說,存儲的視頻文件數(shù)將以百萬計,檢索難度是非常大的。設計中為方便用戶對視頻數(shù)據的檢索,索引采用了分級設計,在索引文件區(qū)中建立索引塊,與錄像文件關聯(lián),記錄錄像文件的開始數(shù)據塊的索引位置和文件所包含的索引單元的個數(shù)N,在索引塊下又分N個索引單元,分別與文件所包含的數(shù)據塊對應,通過索引塊和索引單元中的信息構成一個鏈表,用戶通過鏈表即可找到所需要的數(shù)據。其中索引單元的結構如圖3.13所示圖3.13索引單元結構在方案中,在文件結構中結構信息文件是嚴格按照“時間+通道+錄像類型”進行命名的,所以在進行視頻檢索時可以采用二分法快速查找到指定條件的文件結構
24、信息,再根據結構信息中的索引塊的信息,找到對應的索引塊,因為索引塊中給出了錄像文件開始數(shù)據塊的索引信息,在索引信息中又包含了下一個索引單元的位置,所以根據索引塊和索引單元所建立的索引鏈表即可找到用戶需要的錄像數(shù)據塊。理論上,如果數(shù)據塊設置恰當,利用這種檢索模式可以準確定位到某一秒,甚至可以定位到某一幀圖像,從而實現(xiàn)快速、精確的檢索。其步驟如圖3.14所示。圖3.14錄像文件檢索步驟整個搜索方案描述為:首先讀取用戶所設置的檢索條件,按照條件中的通道條件找到通道相關的文件結構信息;接著從搜索結果中找出與條件中錄像性質一致的結構信息;然后從結果中找出包含所給時間條件的結構信息;查找出滿足用戶條件的結
25、構信息后,再根據結構信息中的索引文件信息找出對應的索引文件,然后根據索引單元的時間信息定位到與查找條件最匹配的索引單元,最后按照索引單元讀取相應數(shù)據塊中的數(shù)據。3.4本章小結本章首先介紹了課題中視頻監(jiān)控系統(tǒng)的框架,從系統(tǒng)框架引入視頻存儲服務器,并對其結構進行了分析,闡明了視頻存儲服務器各模塊的功能,然后對各功能模塊提出了設計方案和思路,存儲模塊作為整個設計的重點,在本章中也對其進行了重點闡明。4視頻存儲服務器的實現(xiàn)本章根據上一章的設計方案,介紹了視頻存儲服務器的實現(xiàn),從編解碼模塊、視頻錄像存儲模塊和檢索回放模塊三個方面介紹了實現(xiàn)的具體過程。4.1編解碼模塊的實現(xiàn)4.1.1解碼模塊的實現(xiàn)從解碼器
26、的框圖中可以得知,解碼器從網絡提取層NAL中接收壓縮位流,數(shù)據元素經過熵解碼和重新排序后產生一組量化系數(shù)X。利用從位流中解碼的頭信息調整這些系數(shù),并經過反量化、反變換得到殘差數(shù)據D,解碼器創(chuàng)建的預測塊PRED與D相加,得到一個重構的塊uF,將uF經過濾波得到每個塊的解碼F36。基于這種思路,本文從NAL單元解碼、熵解碼、參考幀列表的重排序、反變換和量化、幀間預測的解碼處理和幀內預測的解碼處理6個方面給出實現(xiàn)的過程。1)NAL單元的解碼過程NAL單元解碼的過程如圖4.1所示。圖4.1NAL單元解碼過程首先從位流中獲取NAL單元,從NAL單元的數(shù)據中提取RBSP語法結構,然后根據NAL單元的類型進
27、行解碼處理,其輸入的是NAL單元,得到的解碼后的當前圖像(CurrPic)的樣點值;H.264規(guī)范文檔中規(guī)定:對同一碼流,所有解碼器必須產生數(shù)值上相同的結果,必須符合規(guī)范定義的解碼過程標準。在NAL單元的解碼過程中,要將NAL單元數(shù)據轉換成RBSP,程序中定義了函數(shù)NALUtoRBSP()完成此功能。函數(shù)定義為:2)熵解碼H.264支持兩種熵編碼方法:上下文自適應的可變長編碼(CAVLC)和內容自適應編碼(CABAC)。為了能夠有效地傳送量化的變換系數(shù),CAVLC是一個比較有效的方法,而且在CAVLC方案中,對于各種語法元素的VLC碼表按照已經傳送的語法元素可以進行切換,改善了熵編碼的性能。C
28、AVLC的解碼過程是:首先是初始化,依據所輸入的參數(shù)得到塊的類型,并輸入數(shù)據的個數(shù)等相關參數(shù)。然后求變量NC,并通過NC值來確定所要查找的表格,其中NA表示與當前塊相鄰的左邊塊中非零系數(shù)的個數(shù),NB表示與當前塊相鄰的上面塊中非零的個數(shù)。以Coeff_token語法元素為入口函數(shù),查表得到非零系數(shù)的個數(shù)TotalCoeffs、拖尾系數(shù)的個數(shù)TrailingOnes。以TotalCoeffs為入口函數(shù),查表可以得到TotalZero值。通過函數(shù)readSymtaxElement_NumCoeffTrailingOnes()讀入NumCoeff/TrailingOnes的碼字。3)參考幀列表的重排序
29、重排序的流程如圖4.2所示圖4.2參考幀列表的重排序流程參考幀列表的重排序主要是為了節(jié)省碼流。解碼器根據片頭碼流中的相關語法元素,如ref_pic_list_reordering_flag_10、ref_pic_list_reordering_flag_11、reordering_of_pic_nums_dic、abs_diff_pic_num_minusl等的規(guī)定,進行列表的重排序。參考圖像的重排序信息由函數(shù)ref_pic_list_reordering()讀入。4)反變換和量化與其他的視頻編碼標準相似,H.264標準采取的是預測殘余變換編碼。但H.264變換是施加在4X4塊上的,沒用采用D
30、CT變換,而是用與DCT類似特性的整數(shù)變換ICT,因而反變換沒有誤差。直流亮度系數(shù)的反變換和量化由函數(shù)itrans_2(structimg_par*img)實現(xiàn),函數(shù)voidcopyblock_sp(structimg_par*img,intblock_x,intblock_y)負責將反變換和量化的結果寫入解碼的亮度幀。5)幀內預測的解碼處理在幀內預測中,當前編碼的宏塊上方和左方的宏塊用于計算當前宏塊的預測值。當前宏塊與其預測值的差值進一步編碼,將其傳到解碼器。在該比特流中包含了表示預測方式的相關比特和解碼出的殘差信號的比特,解碼器利用這些相關的比特計算出當前宏塊的預測值,并以這個預測值來恢復
31、圖像原始像素值。在幀內預測中,宏塊有4種預測方式:4x4亮度塊的幀內預測(Intra_4x4)、16x16亮度塊的幀內預測(Intra_16x16)、8x8色度塊的幀內預測(Intra_chroma),以及PCM的預測方式(I_PCM)。每個塊可選擇四種方式其中之一進行幀內預測,所有的類型都支持兩級幀內編碼:INTRA-4X4和INTRA-16X16。前者分別預測每個4X4亮度塊,比較適合于描述圖像細節(jié)部分,而后者則是將整個16X16亮度塊進行預測,比較適合于圖像較平滑區(qū)域。對這兩種預測類型的色度則進行單獨預測。在程序中,幀內模式下4x4塊的重構由函數(shù)intrapred()完成。其定義如下:6
32、)幀間預測的解碼處理在解碼端,P宏塊和B宏塊解碼時需要進行幀間預測解碼處理,處理后輸出幀間預測像素矩陣,包括一個16X16的亮度矩陣PREDL和兩個色度8X8矩陣:PREDcr和PREDcb。調用函數(shù)BType2CtxRef()來設置參考幀的上下文,該函數(shù)定義如下:在亮度模塊中,通過對相鄰塊的預測得到非零系數(shù)的數(shù)字。此功能由函數(shù)predict_nnz(structimg_par*img,inti,intj)來完成。4.1.2編碼模塊的實現(xiàn)視頻編碼是一個反復對圖像幀進行編碼的過程。本文將編碼程序的分為三個步驟:為編碼器創(chuàng)建一個實例、反復調用編碼函數(shù)對圖像幀進行編碼、銷毀編碼器。為此定義了三個函數(shù)
33、enc_create()、enc_encode()、enc_destroy()分別完成編碼程序的三個步驟。(1)enc_create()要創(chuàng)建一個編碼器首先要為編碼器創(chuàng)建一個實例句柄,用該函數(shù)創(chuàng)建一個MPEG4編碼器句柄,接著在句柄下完成對編碼器的參數(shù)配置、圖像參數(shù)獲取及空間申請等工作,以便通過句柄在多路編碼時來完成對每一路編碼的控制。其流程如圖4.3所示。圖4.3enc_create()編碼流程(2)enc_encode()用enc_encode()完成對傳入的一個圖像幀的編碼工作。對輸入的一幀圖像首先進行單元劃分:以宏塊為基本單元進行劃分,再由若干宏塊在組合成Slice,由Slice再組合
34、成SliceGroup,這樣可以確定每個宏塊所屬的Slice和SliceGroup。再判斷輸33入的一幀圖像是I-Frame還是P-Frame。在以上工作完成后,就可以對每個宏塊進行編碼了。在對每個宏塊都編碼完成后,還需要對重構圖像進行1/4象素精度插值處理、參考幀緩沖區(qū)插入處理等工作。至此,編碼一幀的工作才算完成。過程如圖4.4所示圖4.4編碼一幀圖像過程根據編碼程序判定或用戶強制類型對輸入的圖像幀進行編碼,編碼器將編碼之后的碼流及其長度作為返回值返回,并統(tǒng)計好編碼信息。enc_encode()編程流程如圖4.5所示。圖4.5enc_encode()編程流程在enc_encode()函數(shù)內部
35、還設計了兩個函數(shù)FrameCodeI和FrameCodeP,由它們真正完成圖像編碼操作,分別完成對I幀和P幀的編碼。1)I幀編碼是為了消除圖像幀在空間上的冗余。其編碼過程比較簡單,其中AC/DC是對宏塊變換的第一行和第一列作預測,以進一步增加零系數(shù)的數(shù)目。其流程為:(如圖4.6所示)圖4.6I幀編碼流程表4.1所示的是在I幀編碼過程所用到的函數(shù)及其功能:表4.1I幀編碼過程所用到的函數(shù)及其功能2)P幀編碼是幀間編碼,以已經編碼、解碼重建的圖像幀為參考,并插值出若干個參考幀,并在其中找出最佳匹配塊。將當前塊與匹配塊求差,然后對殘差值做離散余弦變換(DCT)、量化和編碼。匹配塊的運動向量MV及匹配
36、相似度會因為所用的搜索算法、所在的窗口的不同而不同。在圖像幀P幀編碼中,有一定數(shù)量的Intra模式的塊編碼,其他絕大部分為Inter模式或not_coded不編碼模式。算法支持當整整的Intra塊編碼模式超過一定數(shù)量時,強制為I幀編碼。在編碼前,要對整幀做運動估計,判斷各宏塊屬于哪種編碼模式。在P幀編碼中,既有Inter塊的編碼也有Intra塊的編碼,同時對零塊不做編碼not_coded,即跳過該宏塊MBSkip。Inter為幀間編碼,即對殘差進行編碼。not_coded表示當前宏塊沒有編碼,為零塊,則在解碼重建時,直接把參考幀的塊復制過來作為解碼圖像,這種塊模式的宏35塊一般都是背景圖像。P
37、幀編碼流程如圖4.7所示。圖4.7P幀編碼流程表4.2所示的是在P幀編碼過程所定義的主要函數(shù)及其功能:表4.2P幀編碼所用的主要函數(shù)及其功能為了保證解碼器解碼出的圖像正確,在創(chuàng)建編、解碼器的圖像幀空間時(image_create函數(shù)),應都初始化為確定的相同的值,否則解碼器重建的圖像邊緣會出錯。(3)enc_destroy()銷毀編碼器實例對應于創(chuàng)建編碼器實例的工作,即把所有申請的內存釋放,通過反復調用Image_destroy()函數(shù)來釋放圖像序列空間、當前編碼幀的圖像空間、參考幀的圖像空間、參考幀的水平插值幀的圖像空間、參考幀的垂直插值幀的圖像空間、參考幀的斜角方向的插值幀的圖像空間、宏塊
38、編碼空間;而編碼器空間則通過enc_free()來釋放。4.2存儲模塊的實現(xiàn)根據第三章所描述的設計思想,存儲模塊的實現(xiàn)包括管理控制區(qū)實現(xiàn)、文件結構區(qū)實現(xiàn)、索引文件區(qū)實現(xiàn)、日志管理區(qū)實現(xiàn)和數(shù)據區(qū)實現(xiàn)5個部分。當啟動存儲功能時,在管理控制區(qū)內找到當前盤及存儲路徑,然后將視頻數(shù)據按照磁盤分配策略和文件組織方式進行存儲,并按照用戶對文件長度的要求和數(shù)據塊大小建立相關聯(lián)的索引塊和索引單元信息,最后將形成索引文件信息反饋給系統(tǒng),以便系統(tǒng)為錄像文件建立相應的文件結構信息。4.2.1管理控制區(qū)的建立管理控制區(qū)的建立是綜合考慮當前盤的可用空間與被訪問頻度所制定的調度策略的實現(xiàn)。區(qū)內主要存放當前硬盤信息和文件系統(tǒng)
39、基本信息,目的是統(tǒng)一對整個磁盤資源的調度,提高存儲和檢索的速度,同時,也使磁盤的各個扇區(qū)能夠有均等的機會被訪問,避免某個扇區(qū)被頻繁訪問而影響磁盤的性能。管理控制區(qū)的實現(xiàn)結構如下:其中max_channel_num是允許的最大通道數(shù),file_struct_area_addr是一個2*max_channel_num的數(shù)組,用來存放覆蓋前后的各通道的文件結構信息。通過管理控制區(qū)提供的信息,可以完成對系統(tǒng)中硬盤的管理。系統(tǒng)運行后,服務器與存儲設備連接,系統(tǒng)對硬盤進行檢測,得到硬盤信息,并根據制定的分區(qū)方案將硬盤進行分區(qū)。分區(qū)完成后,按照設置的數(shù)據塊大小生成一系列文件寫入各數(shù)據塊,為視頻數(shù)據存儲預分配
40、好空間。此時,系統(tǒng)在索引文件區(qū)為各數(shù)據塊生成相應的索引單元,并按照用戶設定的錄像文件長度和數(shù)據塊大小得到一個錄像文件所包含的數(shù)據塊個數(shù),然后建立索引塊,包含所需要的索引單元。而在索引塊建立后,系統(tǒng)根據索引塊的信息在文件結構區(qū)為錄像文件生成相應的結構信息文件。當數(shù)據區(qū)空間全部分配完畢,根據各區(qū)提供的信息更新管理控制區(qū)信息,完成初始化工作。4.2.2文件結構區(qū)的建立結構中保存了錄像文件的開始和結束時間,時間是按年、月、日、小時、分、秒來定義的,時間參數(shù)的結構為:設計中文件名中包含了文件時間、通道號和錄像類型其結構為:錄像時,視頻數(shù)據按時間順序寫入數(shù)據區(qū),數(shù)據區(qū)將這些數(shù)據寫入數(shù)據塊。數(shù)據在存儲之前要
41、經過壓縮,壓縮的過程中已經將視頻數(shù)據的時間、通道號和錄像類型等信息封裝在數(shù)據里,系統(tǒng)根據這些封裝的信息解析后按照設計的文件名格式為文件結構區(qū)中的文件重新命名,并將有關信息存放到相應的結構文件里,完善文件結構信息。當某個文件要被覆蓋時,文件結構中的信息將被置空,為新的文件結構留出空間,而在索引文件區(qū)會記錄新文件的索引信息,同時文件結構區(qū)也會作相應的更新,以便維護文件結構的完整性。4.2.3索引文件區(qū)的建立所有的錄像文件必須制作了索引文件后才能被點播,否則點播會失敗。在索引文件區(qū)中一個索引塊對應一個錄像文件,一個數(shù)據塊對應一個索引單元,因為一個錄像文件可能包含N個數(shù)據塊,所以每個索引塊包含N個索引
42、單元。每個索引單元描述對應數(shù)據塊的位置以及相鄰塊的索引單元位置,每個索引塊描述塊內索引單元所對應第一個數(shù)據塊的位置和包含的索引單元數(shù)量。索引塊結構INDEX_BLOCK和索引單元結構INDEX_UNIT的定義如下:索引文件區(qū)包含了索引塊和索引單元,分別存放錄像文件的索引信息和數(shù)據塊的索引信息。在數(shù)據存儲時,寫入一個數(shù)據塊更新一個索引單元的信息;當數(shù)據量達到設置的錄像文件大小要求時系統(tǒng)更新索引塊信息。當硬盤存滿時,系統(tǒng)會按照設置的錄像存儲模式進行覆蓋或提醒,當選擇覆蓋模式時,最初的數(shù)據將被覆蓋。新存入的數(shù)據的信息將發(fā)生改變,系統(tǒng)則根據這些新的信息更新索引單元和索引塊的信息。4.2.4數(shù)據區(qū)的建立
43、數(shù)據區(qū)用來存儲監(jiān)控視頻錄像,與以往的視頻監(jiān)控系統(tǒng)存儲有所不同的是,數(shù)據區(qū)被劃分成了若干數(shù)據塊,以數(shù)據塊作為視頻存儲的基本單位。對數(shù)據的訪問需要通過文件結構區(qū)中的結構文件找到相應的索引塊,再由索引塊找到相關聯(lián)的數(shù)據塊,才能訪問到數(shù)據區(qū)中的內容。但數(shù)據區(qū)中的數(shù)據也是按照指定的塊結構進行存儲的,以便于系統(tǒng)對數(shù)據的相關索引和結構信息進行完善和恢復。每個塊的頭部有包含數(shù)據塊的時間戳和與相鄰數(shù)據塊的偏移。在數(shù)據讀取時用戶可以通過文件號來讀取也可以通過輸入時間檢索定位指定所要的文件,而這兩種文件最終都是定位到指定的數(shù)據塊來實現(xiàn)的,而且在定位了一個塊后,就可以根據數(shù)據塊結構DATA_BLOCK_INFO來實現(xiàn)對其前后塊的讀取,還可以通過結構中的時間戳來實現(xiàn)快進與快退等操作。在實際應用中,出現(xiàn)異常關機、斷電、磁盤壞道等問題,導致文件沒有保存或是文件出現(xiàn)異常,可以在開機后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北邢臺地區(qū)2023-2024學年上學期期末考試九年級理綜試卷-初中化學
- 領導家電行業(yè)的品牌發(fā)展計劃
- 2025年河南省八省聯(lián)考高考地理模擬試卷
- 2022年安徽省安慶市公開招聘警務輔助人員輔警筆試自考題2卷含答案
- 2024年河南省平頂山市公開招聘警務輔助人員輔警筆試自考題1卷含答案
- 2023年湖南省岳陽市公開招聘警務輔助人員輔警筆試自考題1卷含答案
- 2022年山西省朔州市公開招聘警務輔助人員輔警筆試自考題1卷含答案
- 英文商務邀請函范本
- 福建省寧德市(2024年-2025年小學六年級語文)部編版階段練習(上學期)試卷及答案
- 2024年免疫抗疲勞保健品項目項目投資申請報告代可行性研究報告
- 大班科學教案:我和風兒做游戲教案及反思
- 園藝治療概念、內涵與理論依據
- 后續(xù)服務承諾及保證措施-后續(xù)服務
- 提高無創(chuàng)呼吸機患者的依從性
- 小兒急性顱內壓增高的護理課件
- 腫瘤科工作制度
- 幼兒園幼兒日常行為規(guī)范
- 供應鏈質量防線:供應商質量管理的策略、方法與實踐
- 有限空間作業(yè)安全管理監(jiān)理實施細則
- 企業(yè)實際控制人的協(xié)議書
- 質量管理體系ISO9001-2015標準
評論
0/150
提交評論