專利名稱:一種嵌入式多媒體系統(tǒng)上音視頻文件的管理控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)視頻監(jiān)控技術(shù)、安防領(lǐng)域,尤其是在嵌入式多媒體系統(tǒng)上音視頻 文件的管理控制方法。
背景技術(shù):
近年來,隨著信息網(wǎng)絡(luò)技術(shù)的快速發(fā)展,通過中心業(yè)務(wù)平臺進行集中管理和控制、 以網(wǎng)絡(luò)視頻服務(wù)器和網(wǎng)絡(luò)攝像機(IPCAM)為前端的網(wǎng)絡(luò)化視頻監(jiān)控系統(tǒng)開始得到廣泛部 署。作為網(wǎng)絡(luò)化視頻監(jiān)控系統(tǒng)的重要組成部分的嵌入式存儲系統(tǒng),其用途為接收并存儲前 端采集系統(tǒng)傳來的音視頻數(shù)據(jù)。直接在系統(tǒng)的前端進行編解碼器+存儲的方式,不僅可以 減輕集中存儲帶來的容量壓力,還可以有效緩解集中存儲帶來的網(wǎng)絡(luò)流量壓力,同時可以 避免集中存儲在網(wǎng)絡(luò)發(fā)生故障時圖像的丟失。作為一種數(shù)字監(jiān)控設(shè)備的核心部分,存儲的 音視頻數(shù)據(jù)用于現(xiàn)場回放和調(diào)查取證等工作。那么應(yīng)該如何有效地來存儲和管理該嵌入式存儲系統(tǒng)呢?
顯然,將所有的音頻或者視頻數(shù)據(jù),存儲在單一文件中,是不切實際的。一方面,這個單 一文件隨著時間的推移會越來越大,給現(xiàn)場回放帶來很多不便,難以快速地定位所需時間 段的音頻或者視頻數(shù)據(jù);另一方面,它也受限于FAT32文件系統(tǒng)(硬盤采用FAT32格式分區(qū)) 對單一文件最大4G容量的限制。所以,需要將時間上連續(xù)的音視頻數(shù)據(jù),分成多個文件進 行存儲。譬如將音頻或者視頻數(shù)據(jù),每3分鐘存成一個文件。那么,當(dāng)事后需要查找之前某 一時刻的音頻或視頻數(shù)據(jù)時,只要找到相應(yīng)的那個文件,就能很快地定位到所需的那個時 亥IJ。而且,如果通過系統(tǒng)的其他對外接口(比如USB接口或者網(wǎng)口),將這個硬盤中的所需文 件拷貝到其他存儲介質(zhì)時,也會非常的方便。然而,在實際運行過程中,當(dāng)源源不斷的音頻數(shù)據(jù)和編碼壓縮的視頻數(shù)據(jù)存儲到 硬盤的過程中,硬盤內(nèi)的文件數(shù)目會越來越多。因此,必須采取有效措施來管理這些音視頻 數(shù)據(jù)。
發(fā)明內(nèi)容
為了克服已有嵌入式多媒體系統(tǒng)上的音視頻文件的集中存儲的容量壓力較大、回 放和查找不方便、無統(tǒng)一數(shù)據(jù)管理的不足,本發(fā)明提供一種能有效減輕集中存儲的容量壓 力、便于回放和查找、實現(xiàn)統(tǒng)一的數(shù)據(jù)管理的嵌入式多媒體系統(tǒng)上音視頻文件的管理控制 方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是
一種嵌入式多媒體系統(tǒng)上音視頻文件的管理控制方法,所述管理控制方法包括以下步
驟
1)對硬盤每個分區(qū)分配一個結(jié)構(gòu)體,用來表征每個分區(qū)下文件管理的信息;
2)在存儲文件時需要獲取當(dāng)前的系統(tǒng)時間,把它作為存儲時間,用來命名各個相應(yīng)的 文件夾的文件;3)、以當(dāng)前的存儲日期命名,在存儲的分區(qū)下建立一個文件夾,作為存儲的日期文件 夾,把相同日期的存儲文件都放在同一個文件夾下,把不同的日期文件夾,建立一個日期文 件夾鏈表,用來表征存儲在某一硬盤分區(qū)下的各個不同日期的存儲文件信息;
4)、以當(dāng)前的存儲小時命名,在存儲的日期文件夾下建立一個文件夾,作為存儲的小時 文件夾,把相同小時內(nèi)的存儲文件都放在同一個文件夾下,把不同的小時文件夾,建立一個 小時文件夾鏈表,用來表征存儲在某一硬盤分區(qū)下的各個不同小時的存儲文件信息;
5)、以當(dāng)前的存儲的分秒命名,在存儲的小時文件夾下建立一個分秒存儲文件,所述分 秒存儲文件包括音頻文件和視頻文件,存儲系統(tǒng)向所述音頻文件和視頻文件分別存儲音頻 數(shù)據(jù)和視頻數(shù)據(jù)。作為優(yōu)選的一種方案所述管理控制方法還包括以下步驟6)、分區(qū)切換管理過 程,包括
6. 1)如果當(dāng)前分區(qū)的容量小于待設(shè)置的空間門限,則設(shè)置下一個分區(qū)為當(dāng)前分區(qū),再 判斷下個分區(qū)的容量是否小于待設(shè)置的空間門限,逐一判斷,知道找到滿足容量大于待設(shè) 置的空間門限的分區(qū),將其設(shè)定為當(dāng)前分區(qū),進行音頻和視頻數(shù)據(jù)的存儲;
6.2)如果所有分區(qū)均小于待設(shè)置的空間門限,將各分區(qū)內(nèi)所存的最早日期的最早小時 的文件夾內(nèi)的數(shù)據(jù)全部刪除,然后再返回6. 1)。進一步,所述管理控制方法還包括以下步驟7)文件查找過程,包括 7.1)獲得待查找的時刻;
7.2)根據(jù)待查找時刻的日期,在日期文件夾鏈表中,找到所需時刻的日期文件夾; 7. 3)根據(jù)待查找時刻的小時,在小時文件夾鏈表中,找到所需時刻的小時文件夾;
7. 4)根據(jù)所需時候的分時間和秒時間,找到該路徑下文件名為最接近該分秒時間,又 早于該分秒時間的文件,就是所需查找的文件。本發(fā)明的技術(shù)構(gòu)思為根據(jù)嵌入式系統(tǒng)的用途特點,硬盤內(nèi)存儲文件的回放與查 找,都會與特定時刻關(guān)聯(lián)。用戶需要查找并回放的往往是某年某月某時某分某秒的音/視 頻數(shù)據(jù)。此外,對硬盤內(nèi)不同分區(qū)的數(shù)據(jù),也要達到統(tǒng)一管理的要求。基于以上兩點,本文 的存儲文件管理的設(shè)計,采用了一種結(jié)構(gòu)體數(shù)組下的鏈表管理與時間命名文件(夾)相結(jié)合 的方法。本發(fā)明的有益效果主要表現(xiàn)在能有效減輕集中存儲的容量壓力、便于回放和查 找、實現(xiàn)統(tǒng)一的數(shù)據(jù)管理。
圖1是各分區(qū)下文件存儲結(jié)構(gòu)示意圖。圖2是文件存儲過程流程圖。 圖3是文件查找的流程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明作進一步描述。參照圖1和圖2,一種嵌入式多媒體系統(tǒng)上音視頻文件的管理控制方法,所述管理 控制方法包括以下步驟1)對硬盤每個分區(qū)分配一個結(jié)構(gòu)體,用來表征每個分區(qū)下文件管理的信息;
2)在存儲文件時需要獲取當(dāng)前的系統(tǒng)時間,把它作為存儲時間,用來命名各個相應(yīng)的 文件夾的文件;
3)、以當(dāng)前的存儲日期命名,在存儲的分區(qū)下建立一個文件夾,作為存儲的日期文件 夾,把相同日期的存儲文件都放在同一個文件夾下,把不同的日期文件夾,建立一個日期文 件夾鏈表,用來表征存儲在某一硬盤分區(qū)下的各個不同日期的存儲文件信息;
4)、以當(dāng)前的存儲小時命名,在存儲的日期文件夾下建立一個文件夾,作為存儲的小時 文件夾,把相同小時內(nèi)的存儲文件都放在同一個文件夾下,把不同的小時文件夾,建立一個 小時文件夾鏈表,用來表征存儲在某一硬盤分區(qū)下的各個不同小時的存儲文件信息;
5)、以當(dāng)前的存儲的分秒命名,在存儲的小時文件夾下建立一個分秒存儲文件,所述分 秒存儲文件包括音頻文件和視頻文件,存儲系統(tǒng)向所述音頻文件和視頻文件分別存儲音頻 數(shù)據(jù)和視頻數(shù)據(jù)。本實施例中,所述存儲及管理系統(tǒng)的設(shè)計包括以下步驟
首先,為硬盤每個分區(qū)分配一個結(jié)構(gòu)體,用來表征每個分區(qū)下文件管理的信息。因此, 對于硬盤不同分區(qū)下的存儲文件,可以利用該分區(qū)結(jié)構(gòu)體空間,達到統(tǒng)一管理的目的。其次,存儲系統(tǒng)在存儲文件時需要獲取當(dāng)前的系統(tǒng)時間,把它作為存儲時間,用來 命名各個相應(yīng)的文件夾的文件。然后,我們以當(dāng)前的存儲日期命名,在存儲的分區(qū)下建立一個文件夾,作為存儲的 日期文件夾。日期文件夾的命名格式為yyyymmdd,例如2010年7月17日,則按20100717 的格式命名。那么,把相同日期的存儲文件都放在同一個文件夾下,則按照存儲日期的不 同,同一硬盤分區(qū)下,可能會有多個日期文件夾存在。我們把這些不同的日期文件夾,建立 一個日期文件夾鏈表,用來表征存儲在某一硬盤分區(qū)下的各個不同日期的存儲文件信息。接著,我們以當(dāng)前的存儲小時命名,在存儲的日期文件夾下建立一個文件夾,作為 存儲的小時文件夾。小時文件夾的命名格式為hh,例如2010年7月7日23時,則在 < 分區(qū) 掛載點>/20100717的文件夾下,建立名為23的文件夾,該文件夾的完整存儲路徑為〈分區(qū) 掛載點>/20100717/23。那么,把相同小時內(nèi)的存儲文件都放在同一個文件夾下,則按照存 儲小時的不同,同一日期文件夾下,可能會有多個小時文件夾存在。同樣我們事先把這些不 同的小時文件夾,建立一個小時文件夾鏈表,用來表征存儲在同一日期文件下不同小時的 存儲文件的信息。最后,我們以當(dāng)前的存儲的分秒命名,在存儲的小時文件夾下,創(chuàng)建存儲文件。存 儲的音頻和視頻文件命名格式分別為mmss. audio和mmss. 2640例如2010年7月17日23 時沈分02秒存儲的文件,則在 < 分區(qū)掛載點>/20100717/23的文件夾下,建立名為2602. audio和2602. 264的文件,也即該時刻存儲的音頻文件和視頻文件的完整路徑為 < 分區(qū)掛 載點 >/20100717/23/2602. audio 和 < 分區(qū)掛載點 >/20100717/23/2602. 264。然后,存儲系 統(tǒng)可以往這兩個文件中分別存儲音頻和視頻數(shù)據(jù)了。參考圖2,文件存儲過程包含以下幾個步驟
1) 硬盤存儲的分區(qū)切換管理,它為系統(tǒng)選擇合適的分區(qū),用來將音視頻文件存儲于 該分區(qū)中。2)建硬盤的分區(qū)結(jié)構(gòu)體空間,掃描各個分區(qū),為各個分區(qū)建立好日期文件夾鏈表和小時文件夾鏈表。3)系統(tǒng)在存儲音視頻數(shù)據(jù)時,根據(jù)系統(tǒng)時間,把新建的日期文件夾和小時文件夾 節(jié)點,分別添加到對應(yīng)的鏈表中。這樣,就可以往新建的音頻和視頻文件寫入存儲數(shù)據(jù)了。本實施例的具體實現(xiàn)方案 1.分區(qū)切換管理功能
分區(qū)切換管理主要是選取合適的分區(qū)作為硬盤的當(dāng)前存儲,進行音/視頻文件的存 儲。這里所謂的合適包括兩種情況。一是選取的當(dāng)前存儲分區(qū),需要是一個有一定可用空間的分區(qū)。如果設(shè)置的空間 門限為500M,則選取的當(dāng)前存儲分區(qū),需要是一個可用空間大于500M的分區(qū)。當(dāng)前分區(qū)不 滿足這一條件,則設(shè)置下一分區(qū)為當(dāng)前分區(qū),判斷是否滿足該條件。如此逐一判斷,直到找 到滿足條件的分區(qū),將其設(shè)置為當(dāng)前分區(qū),進行音/視頻數(shù)據(jù)的存儲。二是在所有的分區(qū)都不滿足可用空間門限要求的情況下,將各分區(qū)內(nèi)所存的最早 日期的最早小時的文件夾內(nèi)的數(shù)據(jù)全部刪除,然后再判斷是否滿足可用空間門限要求。如 果不滿足,則繼續(xù)刪除硬盤內(nèi)所存的最早的那個小時的所有文件。以此類推,逐個刪除小時 文件,直到某一分區(qū)滿足空間門限要求為止,將其設(shè)置為當(dāng)前分區(qū),進行音/視頻數(shù)據(jù)的存 儲。這樣,在硬盤各個分區(qū)都“存滿”的情況下,就可以達到刪除最早存儲的音/視頻 數(shù)據(jù),將最新輸入的音/視頻數(shù)據(jù)繼續(xù)存儲的目的。如此循環(huán)往復(fù),可使得存儲在硬盤中的 音/視頻數(shù)據(jù),永遠是最近的一個時間段內(nèi)的數(shù)據(jù)。2. 1創(chuàng)建分區(qū)結(jié)構(gòu)體空間
該部分內(nèi)容主要包括分區(qū)結(jié)構(gòu)體空間的創(chuàng)建,以及日期文件夾鏈表和小時文件夾鏈表 的創(chuàng)建。分區(qū)結(jié)構(gòu)體是用來管理硬盤每個分區(qū)數(shù)據(jù)的結(jié)構(gòu)體,它的定義如下
typedef struct _tag_PtsInfo_t
{
unsigned char uchPtsVol ; // 分區(qū)號 PtsSpcInfo_t PtsSpcInfo ; //分區(qū)空間信息 DayList_t DayList;//日期文件夾鏈表
}PtsInfo_t;
typedef struct _tag_PtsList_t
{
unsigned char uchNum; // 分區(qū)個數(shù)
unsigned int uchCurOpIdx; //當(dāng)前操作的分區(qū)號 PtsInfo_t* pPtsInfo; //分區(qū)結(jié)構(gòu)體空間 }PtsList_t;
對于不同的硬盤,它的分區(qū)個數(shù)可能不同。所以分區(qū)結(jié)構(gòu)體空間在內(nèi)存中的創(chuàng)建可以 根據(jù)硬盤的分區(qū)個數(shù),使用動態(tài)分配空間的方法完成。2. 2創(chuàng)建日期文件夾鏈表
日期文件夾鏈表是用來管理存儲在某一硬盤分區(qū)下不同日期的文件的。日期文件夾節(jié)點結(jié)構(gòu)體和日期文件夾鏈表結(jié)構(gòu)體的定義如下
typedef struct _tag_DayLNode_t
{
char chArLabel [9] ; // 日期文件夾名
HourList_t HourList; //該日期下的小時文件夾鏈表 struct _tag_DayLNode_t ^pNextNode; }DayLNode_t;
typedef struct _tag_DayLi st_t
{
unsigned int uintNum; // 表長 DayLNode—t *pLNodeHead;//鏈表頭指針 DayLNode—t *pLNodeCur;//鏈表當(dāng)前指針 }DayList_t;
日期文件夾鏈表的創(chuàng)建,可以通過逐次掃描硬盤各分區(qū),創(chuàng)建各分區(qū)日期文件夾鏈表, 并將各分區(qū)下的日期文件夾加入該鏈表的方法完成。完成這一功能的主要接口函數(shù)如下 0 原型int ScanDayList (const char*f ilepath, DayList_t*pList); 函數(shù)功能創(chuàng)建硬盤各分區(qū)下的日期文件夾鏈表;
參數(shù)fil印ath為各分區(qū)的路徑,pList為各分區(qū)結(jié)構(gòu)體中的日期文件夾鏈表結(jié)構(gòu)體; 返回值正常返回0,出錯返回負值。
2. 3創(chuàng)建小時文件夾鏈表
小時文件夾鏈表是用來管理存儲在某一日期文件夾下的不同小時的存儲文件的。小時 文件夾節(jié)點結(jié)構(gòu)體和小時文件夾鏈表結(jié)構(gòu)體的定義如下
typedef struct _tag_HourLNode_t
{
char chArLabel [3] ;//小時名 struct _tag_HourLNode_t ^pNextNode; }HourLNode_t;
typedef struct _tag_HourLi st_t
{
unsigned int uintNum;// 表長 HourLNode—t ^pLNodeHead;// 鏈表頭指針 HourLNode—t ^pLNodeCur;// 鏈表當(dāng)前指針 }HourList_t;
小時文件夾鏈表的創(chuàng)建,可以通過逐次掃描硬盤各分區(qū)各日期文件夾,創(chuàng)建相應(yīng)的小 時文件夾鏈表,并將各日期文件夾下的小時文件夾加入該鏈表的方法完成。完成這一功能 的主要接口函數(shù)如下
函數(shù)原型int ScanHourList (const char*f ilepath, HourList_t ^pList); 函數(shù)功能創(chuàng)建硬盤各日期文件夾下的小時文件夾鏈表;
參數(shù)filepath為各個日期文件夾的路徑,pList為各個日期文件夾節(jié)點中的小時文件夾鏈表結(jié)構(gòu)體;
返回值正常返回0,出錯返回負值。3.添加管理鏈表功能
添加管理鏈表功能,是在存儲音/視頻數(shù)據(jù)時,根據(jù)當(dāng)前的存儲時間,逐一往日期文件 夾鏈表和小時文件夾鏈表中設(shè)置添加相應(yīng)的日期文件夾節(jié)點和小時文件夾節(jié)點。這兩個文 件夾節(jié)點的添加過程,其實就是當(dāng)前的音/視頻數(shù)據(jù)存儲在硬盤中路徑選擇的過程。此后, 便可在相應(yīng)的硬盤分區(qū)路徑中創(chuàng)建并打開該文件,進行音/視頻數(shù)據(jù)的存儲寫入。該方案文件的管理,主要是對特定時刻文件的查找。圖3是文件查找的流程圖。由于音視頻數(shù)據(jù)主要用于備份和事后回放,因此能夠快速找到用戶所需的文件顯 得極為重要。鑒于系統(tǒng)采用了鏈表管理與實踐命名文件(夾)相結(jié)合的方法來存儲文件,那 么在硬盤中各個分區(qū)內(nèi)的所有文件的存儲日期和存儲小時,都可以在內(nèi)存中的日期文件夾 鏈表和小時文件夾鏈表中找到。參考圖3的文件查找流程,查找一個文件的步驟為
7.1)獲得待查找的時刻。7. 2)根據(jù)待查找時刻的日期,在日期文件夾鏈表中,找到所需時刻的日期文件 夾。7. 3)根據(jù)待查找時刻的小時,在小時文件夾鏈表中,找到所需時刻的小時文件 夾。至此,確定了所需時刻的存儲路徑。該存儲路徑是一個小時文件夾的路徑,也即精確到 小時的存儲路徑。7. 4)根據(jù)所需時候的分時間和秒時間,找到該路徑下文件名為最接近該分秒時 間,又早于該分秒時間的文件,就是所需查找的文件。
權(quán)利要求
1.一種嵌入式多媒體系統(tǒng)上音視頻文件的管理控制方法,其特征在于所述管理控制 方法包括以下步驟1)對硬盤每個分區(qū)分配一個結(jié)構(gòu)體,用來表征每個分區(qū)下文件管理的信息;2)在存儲文件時需要獲取當(dāng)前的系統(tǒng)時間,把它作為存儲時間,用來命名各個相應(yīng)的 文件夾的文件;3)、以當(dāng)前的存儲日期命名,在存儲的分區(qū)下建立一個文件夾,作為存儲的日期文件 夾,把相同日期的存儲文件都放在同一個文件夾下,把不同的日期文件夾,建立一個日期文 件夾鏈表,用來表征存儲在某一硬盤分區(qū)下的各個不同日期的存儲文件信息;4)、以當(dāng)前的存儲小時命名,在存儲的日期文件夾下建立一個文件夾,作為存儲的小時 文件夾,把相同小時內(nèi)的存儲文件都放在同一個文件夾下,把不同的小時文件夾,建立一個 小時文件夾鏈表,用來表征存儲在某一硬盤分區(qū)下的各個不同小時的存儲文件信息;·5)、以當(dāng)前的存儲的分秒命名,在存儲的小時文件夾下建立一個分秒存儲文件,所述分 秒存儲文件包括音頻文件和視頻文件,存儲系統(tǒng)向所述音頻文件和視頻文件分別存儲音頻 數(shù)據(jù)和視頻數(shù)據(jù)。
2.如權(quán)利要求1所述的一種嵌入式多媒體系統(tǒng)上音視頻文件的管理控制方法,其特征 在于所述管理控制方法還包括以下步驟·6)、分區(qū)切換管理過程,包括·6. 1)如果當(dāng)前分區(qū)的容量小于待設(shè)置的空間門限,則設(shè)置下一個分區(qū)為當(dāng)前分區(qū),再 判斷下個分區(qū)的容量是否小于待設(shè)置的空間門限,逐一判斷,知道找到滿足容量大于待設(shè) 置的空間門限的分區(qū),將其設(shè)定為當(dāng)前分區(qū),進行音頻和視頻數(shù)據(jù)的存儲;·6.2)如果所有分區(qū)均小于待設(shè)置的空間門限,將各分區(qū)內(nèi)所存的最早日期的最早小時 的文件夾內(nèi)的數(shù)據(jù)全部刪除,然后再返回6. 1)。
3.如權(quán)利要求1或2所述的一種嵌入式多媒體系統(tǒng)上音視頻文件的管理控制方法,其 特征在于所述管理控制方法還包括以下步驟·7)文件查找過程,包括·7.1)獲得待查找的時刻;·7.2)根據(jù)待查找時刻的日期,在日期文件夾鏈表中,找到所需時刻的日期文件夾;·7. 3)根據(jù)待查找時刻的小時,在小時文件夾鏈表中,找到所需時刻的小時文件夾;·7. 4)根據(jù)所需時候的分時間和秒時間,找到該路徑下文件名為最接近該分秒時間,又 早于該分秒時間的文件,就是所需查找的文件。
全文摘要
一種嵌入式多媒體系統(tǒng)上音視頻文件的管理控制方法,包括以下步驟1)對硬盤每個分區(qū)分配一個結(jié)構(gòu)體,用來表征每個分區(qū)下文件管理的信息;2)在存儲文件時需要獲取當(dāng)前的系統(tǒng)時間,把它作為存儲時間,用來命名各個相應(yīng)的文件夾的文件;3)在存儲的分區(qū)下建立一個日期文件夾,4)在存儲的日期文件夾下建立一個小時文件夾;5)以當(dāng)前的存儲的分秒命名,在存儲的小時文件夾下建立一個分秒存儲文件,所述分秒存儲文件包括音頻文件和視頻文件,存儲系統(tǒng)向所述音頻文件和視頻文件分別存儲音頻數(shù)據(jù)和視頻數(shù)據(jù)。本發(fā)明能有效減輕集中存儲的容量壓力、便于回放和查找、實現(xiàn)統(tǒng)一的數(shù)據(jù)管理。
文檔編號G11B27/10GK102081947SQ201010246068
公開日2011年6月1日 申請日期2010年8月5日 優(yōu)先權(quán)日2010年8月5日
發(fā)明者孟利民, 符強, 蔣維 申請人:杭州普諾科技有限公司, 浙江工業(yè)大學(xué)