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