一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法
【專利摘要】本發(fā)明提供一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法,以視頻數(shù)據(jù)幀為單位在磁盤裸設(shè)備上進(jìn)行讀寫,不再依賴于傳統(tǒng)的文件系統(tǒng)進(jìn)行錄像數(shù)據(jù)的文件級(jí)管理,在每幀數(shù)據(jù)的開始、結(jié)束位置記錄此幀數(shù)據(jù)的長(zhǎng)度,由于一秒內(nèi)可能包含多幀數(shù)據(jù),在數(shù)據(jù)庫(kù)中記錄每一秒第一幀數(shù)據(jù)的偏移位置,后續(xù)幀數(shù)據(jù)可以根據(jù)磁盤上記錄的幀長(zhǎng)度依次進(jìn)行計(jì)算讀取。該一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法和現(xiàn)有技術(shù)相比,避免了基于文件系統(tǒng)存儲(chǔ)的碎片化問(wèn)題,且支持錄像數(shù)據(jù)的秒級(jí)檢索;實(shí)用性強(qiáng),易于推廣。
【專利說(shuō)明】一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)【技術(shù)領(lǐng)域】,具體的說(shuō)是一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法。
【背景技術(shù)】
[0002]在視頻監(jiān)控領(lǐng)域,通常采用文件系統(tǒng)的方式進(jìn)行錄像文件的存儲(chǔ),但是在使用傳統(tǒng)文件系統(tǒng)時(shí),存在以下缺點(diǎn):
I)視頻文件通常為幾百兆的大文件件,傳統(tǒng)文件系統(tǒng)為兼顧小文件讀寫的應(yīng)用,通常對(duì)大文件不能提供最好的性能支持。
[0003]2 )目前的視頻監(jiān)控應(yīng)用中,前端通常具有幾十、上百路攝像頭,在后端每路攝像頭對(duì)應(yīng)一個(gè)視頻文件,傳統(tǒng)文件系統(tǒng)在多路并發(fā)寫的情況下效率較低。
[0004]3)在文件系統(tǒng)寫滿時(shí),需要?jiǎng)h除老的錄像文件,傳統(tǒng)文件系統(tǒng)在邊刪除邊寫入的情況下效率較低,且造成視頻文件出現(xiàn)大量的碎片。
[0005]4)基于傳統(tǒng)的文件系統(tǒng)進(jìn)行存儲(chǔ),不便于對(duì)視頻數(shù)據(jù)實(shí)現(xiàn)秒級(jí)檢索。
[0006]基于此,現(xiàn)提供一種以視頻數(shù)據(jù)幀為單位在磁盤裸設(shè)備上進(jìn)行讀寫,不再依賴于傳統(tǒng)的文件系統(tǒng)進(jìn)行錄像數(shù)據(jù)的文件級(jí)管理,避免了文件系統(tǒng)存儲(chǔ)的碎片化問(wèn)題,且支持錄像數(shù)據(jù)的秒級(jí)檢索的流式數(shù)據(jù)存儲(chǔ)方法。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的技術(shù)任務(wù)是解決現(xiàn)有技術(shù)的不足,提供一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法。
[0008]本發(fā)明的技術(shù)方案是按以下方式實(shí)現(xiàn)的,該一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法,其具體存儲(chǔ)過(guò)程為:
1)在進(jìn)行錄像存儲(chǔ)之前,首先進(jìn)行裸設(shè)備存儲(chǔ)池的初始化,將裸設(shè)備逐個(gè)添加到存儲(chǔ)池中,構(gòu)成存儲(chǔ)池的線性存儲(chǔ)空間;
2)將每個(gè)裸設(shè)備按固定大小劃分為一個(gè)個(gè)的分配塊,在進(jìn)行錄像時(shí)以一個(gè)分配塊為單位進(jìn)行存儲(chǔ)空間的申請(qǐng)和管理;
3)在攝像頭進(jìn)行寫入時(shí),首先對(duì)當(dāng)前正在使用的裸設(shè)備進(jìn)行查詢,獲取當(dāng)前裸設(shè)備上的下一個(gè)空閑塊,并將此攝像頭ID、裸設(shè)備路徑、空閑塊的編號(hào)作為索引信息存入數(shù)據(jù)庫(kù)中;
4)在攝像頭進(jìn)行錄像時(shí),視頻數(shù)據(jù)以幀為單位進(jìn)行接收,首先將每路的視頻數(shù)據(jù)寫入緩存,待緩存填充完畢后,將多幀數(shù)據(jù)批量異步寫入磁盤;
5)以每一小時(shí)為一條記錄進(jìn)行數(shù)據(jù)庫(kù)的更新,記錄中記載攝像頭ID、錄像的開始時(shí)間、結(jié)束時(shí)間、錄像數(shù)據(jù)所在的分配塊編號(hào)、每一秒的第一幀數(shù)據(jù)在分配塊上的位置偏移;
6)在存儲(chǔ)池寫滿之后,在數(shù)據(jù)庫(kù)中根據(jù)攝像頭ID檢索其最早的錄像數(shù)據(jù)所在的裸設(shè)備編號(hào)及分配塊編號(hào),然后根據(jù)查詢的分配塊進(jìn)行錄像的循環(huán)寫,并將覆蓋掉的錄像數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù)索引信息進(jìn)行清除。
[0009]所述步驟2)中的分配塊的大小在256MB?IGB中進(jìn)行指定。
[0010]在步驟4)中,根據(jù)存儲(chǔ)設(shè)備的內(nèi)存配置情況,每路視頻的緩存大小設(shè)置為4M?16MB。
[0011]所述步驟4)中為便于在進(jìn)行錄像下載和播放時(shí)進(jìn)行幀邊界的劃分,在每一幀數(shù)據(jù)的開始結(jié)束位置記錄此幀數(shù)據(jù)的長(zhǎng)度,根據(jù)幀長(zhǎng)完成后續(xù)幀的連續(xù)讀取。
[0012]本發(fā)明與現(xiàn)有技術(shù)相比所產(chǎn)生的有益效果是:
本發(fā)明的一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法以視頻數(shù)據(jù)幀為單位在磁盤裸設(shè)備上進(jìn)行讀寫,不再依賴于傳統(tǒng)的文件系統(tǒng)進(jìn)行錄像數(shù)據(jù)的文件級(jí)管理,避免了基于文件系統(tǒng)存儲(chǔ)的碎片化問(wèn)題,且支持錄像數(shù)據(jù)的秒級(jí)檢索;在存儲(chǔ)空間已滿需要繼續(xù)錄像時(shí),不需要傳統(tǒng)文件系統(tǒng)的刪除操作,直接裸設(shè)備上進(jìn)行最早錄像數(shù)據(jù)的覆蓋即可,保證了覆蓋寫時(shí)的IO穩(wěn)定性;解決了基于傳統(tǒng)的文件系統(tǒng)方式進(jìn)行錄像數(shù)據(jù)管理存在的缺點(diǎn),提高了錄像的效率和穩(wěn)定性,實(shí)用性強(qiáng),易于推廣。
【專利附圖】
【附圖說(shuō)明】
[0013]附圖1為本發(fā)明的錄像數(shù)據(jù)幀在磁盤上的存儲(chǔ)格式示意圖。
【具體實(shí)施方式】
[0014]下面結(jié)合附圖對(duì)本發(fā)明的一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法作以下詳細(xì)說(shuō)明。
[0015]如附圖1所示,一種面向?qū)ο蟮囊曨l監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法,采用面向?qū)ο蟮姆绞介_發(fā)自動(dòng)化測(cè)試腳本。編寫測(cè)試腳本時(shí),首先明確所有的自動(dòng)化控制對(duì)象,然后以這些自動(dòng)化控制對(duì)象為模板制作類庫(kù),之后就可以對(duì)這些類庫(kù)進(jìn)行初始化,獲得實(shí)例化的自動(dòng)化控制對(duì)象,至此,自動(dòng)化測(cè)試腳本的基礎(chǔ)便搭建完成,而頂層執(zhí)行腳本的編寫也就變得非常簡(jiǎn)單,按測(cè)試流程羅列這些自動(dòng)化控制對(duì)象的方法即可。其具體存儲(chǔ)過(guò)程為:
I)在進(jìn)行錄像存儲(chǔ)之前,首先進(jìn)行裸設(shè)備存儲(chǔ)池的初始化,將裸設(shè)備逐個(gè)添加到存儲(chǔ)池中,構(gòu)成存儲(chǔ)池的線性存儲(chǔ)空間。
[0016]2)將每個(gè)裸設(shè)備按固定大小劃分為一個(gè)個(gè)的分配塊,分配塊的大小可以按256MB?IGB進(jìn)行指定。在進(jìn)行錄像時(shí)以一個(gè)分配塊為單位進(jìn)行存儲(chǔ)空間的申請(qǐng)和管理,相對(duì)傳統(tǒng)文件系統(tǒng)以4KB大小的數(shù)據(jù)塊管理減少了碎片數(shù)量和空間申請(qǐng)的次數(shù)。
[0017]3)在攝像頭進(jìn)行寫入時(shí),首先對(duì)當(dāng)前正在使用的裸設(shè)備進(jìn)行查詢,獲取當(dāng)前裸設(shè)備上的下一個(gè)空閑塊,并將此攝像頭ID、裸設(shè)備路徑、空閑塊的編號(hào)作為索引信息存入數(shù)據(jù)庫(kù)中。
[0018]4)在攝像頭進(jìn)行錄像時(shí),視頻數(shù)據(jù)以幀為單位進(jìn)行接收,通常一幀視頻數(shù)據(jù)大小為IK?2KB,為提高寫入效率,首先將每路的視頻數(shù)據(jù)寫入緩存,根據(jù)存儲(chǔ)設(shè)備的內(nèi)存配置情況,每路視頻的緩存設(shè)置為4MB?16MB的大小,待緩存填充完畢后,將多幀數(shù)據(jù)批量異步
寫入磁盤。
[0019]為便于在進(jìn)行錄像下載和播放時(shí)進(jìn)行幀邊界的劃分,在每一幀數(shù)據(jù)的開始結(jié)束位置記錄了此幀數(shù)據(jù)的長(zhǎng)度,根據(jù)幀長(zhǎng)可以完成后續(xù)幀的連續(xù)讀取。[0020]5)為便于對(duì)某一時(shí)段的錄像進(jìn)行秒級(jí)檢索,以每一小時(shí)為一條記錄進(jìn)行數(shù)據(jù)庫(kù)的更新,
記錄中描述了攝像頭ID、錄像的開始時(shí)間、結(jié)束時(shí)間、錄像數(shù)據(jù)所在的分配塊編號(hào)、每一秒的第一幀數(shù)據(jù)在分配塊上的位置偏移。由于一秒內(nèi)可能包含多幀數(shù)據(jù),記錄每一秒第一幀數(shù)據(jù)的偏移位置,可以完成錄像的秒級(jí)檢索,后續(xù)幀數(shù)據(jù)可以根據(jù)幀長(zhǎng)度進(jìn)行計(jì)算讀取。
[0021]6)在存儲(chǔ)池寫滿之后,為繼續(xù)寫入新的錄像數(shù)據(jù),需要對(duì)最早的錄像數(shù)據(jù)進(jìn)行覆蓋,首先在數(shù)據(jù)庫(kù)中根據(jù)攝像頭ID檢索其最早的錄像數(shù)據(jù)所在的裸設(shè)備編號(hào)及分配塊編號(hào),然后根據(jù)查詢的分配塊進(jìn)行錄像的循環(huán)寫,并將覆蓋掉的錄像數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù)索引信息進(jìn)行清除。
[0022]由于視頻數(shù)據(jù)在存儲(chǔ)時(shí)并不依賴于文件系統(tǒng),只是以視頻數(shù)據(jù)幀為單位進(jìn)行磁盤裸寫,錄像的檢索借助于數(shù)據(jù)庫(kù)完成,所以避免了傳統(tǒng)的文件系統(tǒng)上錄像文件刪除操作,降低了磁盤10,保證了錄像進(jìn)行覆蓋寫時(shí)的穩(wěn)定性。
[0023]本發(fā)明以視頻數(shù)據(jù)幀為單位在磁盤裸設(shè)備上進(jìn)行讀寫,不再依賴于傳統(tǒng)的文件系統(tǒng)進(jìn)行錄像數(shù)據(jù)的文件級(jí)管理,避免了基于文件系統(tǒng)存儲(chǔ)的碎片化問(wèn)題,且在存儲(chǔ)空間已滿需要繼續(xù)錄像時(shí),不需要傳統(tǒng)文件系統(tǒng)的刪除操作,直接裸設(shè)備上進(jìn)行最早錄像數(shù)據(jù)的覆蓋即可,保證了覆蓋寫時(shí)的IO穩(wěn)定性。
[0024]以上所述僅為本發(fā)明的實(shí)施例而已,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法,其特征在于其具體存儲(chǔ)過(guò)程為: 1)在進(jìn)行錄像存儲(chǔ)之前,首先進(jìn)行裸設(shè)備存儲(chǔ)池的初始化,將裸設(shè)備逐個(gè)添加到存儲(chǔ)池中,構(gòu)成存儲(chǔ)池的線性存儲(chǔ)空間; 2)將每個(gè)裸設(shè)備按固定大小劃分為一個(gè)個(gè)的分配塊,在進(jìn)行錄像時(shí)以一個(gè)分配塊為單位進(jìn)行存儲(chǔ)空間的申請(qǐng)和管理; 3)在攝像頭進(jìn)行寫入時(shí),首先對(duì)當(dāng)前正在使用的裸設(shè)備進(jìn)行查詢,獲取當(dāng)前裸設(shè)備上的下一個(gè)空閑塊,并將此攝像頭ID、裸設(shè)備路徑、空閑塊的編號(hào)作為索引信息存入數(shù)據(jù)庫(kù)中; 4)在攝像頭進(jìn)行錄像時(shí),視頻數(shù)據(jù)以幀為單位進(jìn)行接收,首先將每路的視頻數(shù)據(jù)寫入緩存,待緩存填充完畢后,將多幀數(shù)據(jù)批量異步寫入磁盤; 5)以每一小時(shí)為一條記錄進(jìn)行數(shù)據(jù)庫(kù)的更新,記錄中記載攝像頭ID、錄像的開始時(shí)間、結(jié)束時(shí)間、錄像數(shù)據(jù)所在的分配塊編號(hào)、每一秒的第一幀數(shù)據(jù)在分配塊上的位置偏移; 6)在存儲(chǔ)池寫滿之后,在數(shù)據(jù)庫(kù)中根據(jù)攝像頭ID檢索其最早的錄像數(shù)據(jù)所在的裸設(shè)備編號(hào)及分配塊編號(hào),然后根據(jù)查詢的分配塊進(jìn)行錄像的循環(huán)寫,并將覆蓋掉的錄像數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù)索引信息進(jìn)行清除。
2.根據(jù)權(quán)利要求1所述的一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法,其特征在于:所述步驟2)中的分配塊的大小在256MB?IGB中進(jìn)行指定。
3.根據(jù)權(quán)利要求1或2所述的一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法,其特征在于:在步驟4)中,根據(jù)存儲(chǔ)設(shè)備的內(nèi)存配置情況,每路視頻的緩存大小設(shè)置為4M?16MB。
4.根據(jù)權(quán)利要求3所述的一種視頻監(jiān)控應(yīng)用中流式數(shù)據(jù)的存儲(chǔ)方法,其特征在于:所述步驟4)中為便于在進(jìn)行錄像下載和播放時(shí)進(jìn)行幀邊界的劃分,在每一幀數(shù)據(jù)的開始結(jié)束位置記錄此幀數(shù)據(jù)的長(zhǎng)度,根據(jù)幀長(zhǎng)完成后續(xù)幀的連續(xù)讀取。
【文檔編號(hào)】G06F12/06GK103761056SQ201410022146
【公開日】2014年4月30日 申請(qǐng)日期:2014年1月17日 優(yōu)先權(quán)日:2014年1月17日
【發(fā)明者】張會(huì)健 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司