專利名稱:一種存儲(chǔ)流媒體數(shù)據(jù)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù),尤指一種存儲(chǔ)流媒體數(shù)據(jù)的方法及裝置。
背景技術(shù):
磁盤主要包括硬盤盤片、主軸電機(jī)、讀寫磁頭、磁頭臂和伺服電機(jī),數(shù)據(jù)存儲(chǔ)在磁盤盤片上,通過磁頭臂加上磁盤片本身的運(yùn)動(dòng)定位數(shù)據(jù)位置,執(zhí)行讀寫操作。磁盤磁頭從初始位置移動(dòng)到所指定的磁道所需的時(shí)間叫做磁盤的平均尋道時(shí)間,是影響磁盤內(nèi)部數(shù)據(jù)傳輸率的重要參數(shù),一般為7ms左右。順序讀寫是指對(duì)磁盤的訪問對(duì)象是地址連續(xù)的,這樣的讀寫方式能夠大大的減少尋道時(shí)間。隨機(jī)讀寫是指對(duì)磁盤的訪問對(duì)象是地址不連續(xù)的,這樣的讀寫方式就大大增加磁盤的尋道時(shí)間。參見圖1,圖1是目前比較通用的流媒體存儲(chǔ)結(jié)構(gòu)圖。在對(duì)流媒體數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),為了更加高效的對(duì)流媒體數(shù)據(jù)進(jìn)行查詢檢索,通常會(huì)增加索引信息。即,在磁盤固定的位置上設(shè)置索引區(qū)域,在對(duì)流媒體數(shù)據(jù)進(jìn)行存儲(chǔ)的同時(shí),根據(jù)該媒體數(shù)據(jù)的特性,在索引區(qū)域內(nèi)填寫相應(yīng)的索引信息。進(jìn)而在進(jìn)行數(shù)據(jù)查詢時(shí),能夠根據(jù)索引信息快速定位到所查詢的流媒體數(shù)據(jù)。在圖1中,超級(jí)數(shù)據(jù)(SUPER DATA)后面為一級(jí)索引(MAIN INDEX)區(qū)域,一級(jí)索引區(qū)域的大小為128K。一級(jí)索引區(qū)域后為數(shù)據(jù)部分(DATAPARTITION),包括一系列大小為 256M的數(shù)據(jù)單元(DATA UNIT)。這里,一級(jí)索引用于檢索之后的256M Byte數(shù)據(jù)單元。在每個(gè)256M的數(shù)據(jù)單元中,又包含二級(jí)索引(SECOND INDEX)區(qū)域和數(shù)據(jù)塊。這里,二級(jí)索引用來定位具體的I幀組數(shù)據(jù)。在進(jìn)行磁盤寫入操作時(shí),通常都是順序?qū)懭氪疟P控制,只是在寫完一個(gè)數(shù)據(jù)塊之后,要在當(dāng)前數(shù)據(jù)單元對(duì)應(yīng)的二級(jí)索引區(qū)域進(jìn)行寫索引操作。在當(dāng)前的數(shù)據(jù)單元空間不足時(shí),數(shù)據(jù)塊會(huì)在下一個(gè)數(shù)據(jù)單元寫入,此時(shí)除了需要在該數(shù)據(jù)單元中的索引區(qū)域進(jìn)行寫二級(jí)索引的操作外,還要以及一級(jí)索引區(qū)域中執(zhí)行寫索引的操作。由上述寫操作的流程不難看出,為了方便檢索,在每順序?qū)懭胍粋€(gè)數(shù)據(jù)塊之后,就會(huì)將磁頭移動(dòng)到對(duì)應(yīng)的索引區(qū)域?qū)懭胂鄳?yīng)的索引信息,使原本的順序?qū)懽兂闪穗S機(jī)寫,增加了磁頭尋道時(shí)間?;谇懊婷枋龅拇疟P特征,可知現(xiàn)有這種流媒體數(shù)據(jù)塊的寫操作,使磁盤的大量消耗花費(fèi)在了尋道時(shí)間上,嚴(yán)重的影響了寫數(shù)據(jù)的性能。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種存儲(chǔ)流媒體數(shù)據(jù)的方法及裝置,應(yīng)用本發(fā)明所提供的方法及裝置能夠提高流媒體數(shù)據(jù)的寫性能。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種存儲(chǔ)流媒體數(shù)據(jù)的方法,該方法包括根據(jù)待存儲(chǔ)的數(shù)據(jù)塊得到該數(shù)據(jù)塊對(duì)應(yīng)的索引信息;其中,所述索引信息包括所述信息塊的存儲(chǔ)位置和存儲(chǔ)長度,以及所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間;
將所得到的索引信息添加到所述數(shù)據(jù)塊之前,并將該索引信息和所述數(shù)據(jù)塊構(gòu)成的信息塊順序?qū)懭氪鎯?chǔ)單元。一種存儲(chǔ)流媒體數(shù)據(jù)的裝置,該裝置包括處理單元和寫入單元;所述處理單元,用于根據(jù)待存儲(chǔ)的數(shù)據(jù)塊得到該數(shù)據(jù)塊對(duì)應(yīng)的索引信息;其中,所述索引信息包括所述信息塊的存儲(chǔ)位置和存儲(chǔ)長度,以及所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間所述寫入單元,用于將所述處理單元得到的索引信息添加到所述數(shù)據(jù)塊之前,并將該索引信息和所述數(shù)據(jù)塊構(gòu)成的信息塊順序?qū)懭氪鎯?chǔ)單元。本發(fā)明所提供了一種存儲(chǔ)流媒體數(shù)據(jù)的方法及裝置。本發(fā)明的技術(shù)方案通過將索引信息添加到數(shù)據(jù)塊之前,在寫入數(shù)據(jù)時(shí)直接將索引信息連同數(shù)據(jù)塊一起寫入存儲(chǔ)單元, 從而避免了在寫入數(shù)據(jù)時(shí)每寫入一個(gè)數(shù)據(jù)塊就將磁頭移動(dòng)到對(duì)應(yīng)的索引區(qū)域?qū)懭胂鄳?yīng)的索引信息的操作,因此減少了磁頭尋道時(shí)間,提高了寫數(shù)據(jù)性能。
圖1為現(xiàn)有技術(shù)中流媒體存儲(chǔ)結(jié)構(gòu)圖;圖2為本發(fā)明方法的示例性流程圖;圖3為本發(fā)明實(shí)施例中提出的存儲(chǔ)結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例提供的寫操作流程圖;圖5為本發(fā)明實(shí)施例提供的檢索流程圖;圖6為本發(fā)明實(shí)施例提供的查找最近時(shí)間標(biāo)簽的流程圖;圖7為本發(fā)明實(shí)施例提供的確定停止前位置的流程圖;圖8為本發(fā)明提供的裝置結(jié)構(gòu)圖。
具體實(shí)施例方式在本部分的詳細(xì)描述中,僅通過對(duì)實(shí)施本發(fā)明的發(fā)明者所預(yù)期的最佳方式的示例,示出并描述了本發(fā)明的較佳實(shí)施例。應(yīng)意識(shí)到,可以在不背離本發(fā)明的前提下,就各個(gè)顯而易見的方面對(duì)其進(jìn)行修改。相應(yīng)地,附圖和說明書應(yīng)被視為在本質(zhì)上是示例性的,而不是限制性的。參見圖2,為了實(shí)現(xiàn)本發(fā)明的發(fā)明目的,本發(fā)明提供了一種存儲(chǔ)流媒體數(shù)據(jù)的方法,具體包括在步驟201中,根據(jù)待存儲(chǔ)的數(shù)據(jù)塊得到該數(shù)據(jù)塊對(duì)應(yīng)的索引信息;其中,所述索引信息包括所述信息塊的存儲(chǔ)位置和存儲(chǔ)長度,以及所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間;在步驟202中,將所得到的索引信息添加到所述數(shù)據(jù)塊之前,并將該索引信息和所述數(shù)據(jù)塊構(gòu)成的信息塊順序?qū)懭氪鎯?chǔ)單元。通過在寫入數(shù)據(jù)時(shí),將索引信息添加到數(shù)據(jù)塊之前, 將索引信息連同數(shù)據(jù)塊一起寫入存儲(chǔ)單元,避免了在寫入數(shù)據(jù)時(shí)每寫入一個(gè)數(shù)據(jù)塊就將磁頭移動(dòng)到對(duì)應(yīng)的索引區(qū)域?qū)懭胂鄳?yīng)的索引信息的操作,減少了磁頭尋道時(shí)間,提高了寫數(shù)據(jù)性能。在索引信息中可以進(jìn)一步包括索引標(biāo)志,該索引標(biāo)志用來指示該索引信息對(duì)應(yīng)信息塊的起始。參見表一,表一為包括索引標(biāo)志的索引頭結(jié)構(gòu)示意圖。索引標(biāo)志存儲(chǔ)位置數(shù)據(jù)塊起始時(shí)間存儲(chǔ)長度表一數(shù)據(jù)結(jié)構(gòu)可以設(shè)計(jì)成如下形式struct STORDATAINDEX{int indexflag ;int indexoffset ;int frmtime ;int frmlen ;}其中indexflag為索引標(biāo)志,為一個(gè)常量,用來標(biāo)識(shí)是一個(gè)索引信息的開頭,如 0x55aaaa55 ;Indexoffset代表索引信息和數(shù)據(jù)塊組成的信息塊的存儲(chǔ)位置,即存儲(chǔ)開始的位置;frmtime代表信息塊對(duì)應(yīng)數(shù)據(jù)塊起始時(shí)間,本發(fā)明中的數(shù)據(jù)塊主要對(duì)應(yīng)媒流體數(shù)據(jù),因此每個(gè)數(shù)據(jù)塊都有一個(gè)起始時(shí)間;frmlen代表信息塊中存儲(chǔ)長度,信息塊中包括索
弓I fe息O為了快速檢索,在存儲(chǔ)單元上還可以均勻的設(shè)置了多個(gè)時(shí)間標(biāo)簽區(qū)域,即在固定位置上設(shè)置時(shí)間標(biāo)簽。這樣,在磁盤中的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)如圖3所示。在存儲(chǔ)單元中,由于時(shí)間標(biāo)簽是設(shè)置在固定位置的,這樣就存在兩類信息塊。一類信息塊中包含了時(shí)間標(biāo)簽;另一類信息塊中未包含時(shí)間標(biāo)簽。在本發(fā)明的技術(shù)方案中,通過在時(shí)間標(biāo)簽中記錄所在信息塊的數(shù)據(jù)塊起始時(shí)間以及所在信息塊的存儲(chǔ)位置,就能夠大致了解到存儲(chǔ)單元中固定位置上媒流體的起始時(shí)間,進(jìn)而就能夠根據(jù)設(shè)定的檢索時(shí)間方便檢索對(duì)應(yīng)的數(shù)據(jù)塊。時(shí)間標(biāo)簽的結(jié)構(gòu)如表二所示
所在信息塊中數(shù)據(jù)塊起始時(shí)間所在信息塊的存儲(chǔ)位置表二數(shù)據(jù)結(jié)構(gòu)可以設(shè)計(jì)成如下形式struct STORTIMEFLAG{int frmtime ;int frmoffset ;}其中frmtime為記錄的時(shí)間,即所在信息塊中數(shù)據(jù)塊起始時(shí)間;frmoffset為所在信息塊的存儲(chǔ)位置。時(shí)間標(biāo)簽可以被均勻的安插在存儲(chǔ)單元的固定位置,其中固定位置可以根據(jù)存儲(chǔ)空間大小,存儲(chǔ)的碼率來合理的分配。例如,在監(jiān)控行業(yè)中,由于存儲(chǔ)數(shù)據(jù)量較大,時(shí)間標(biāo)簽所占的空間比幾乎可以忽略不計(jì),可以設(shè)置每隔IOMB間隔安插時(shí)間標(biāo)簽。在存儲(chǔ)單元中設(shè)置了時(shí)間標(biāo)簽之后,在寫入信息塊時(shí),就需要進(jìn)一步考慮寫入的信息塊是否會(huì)包含時(shí)間標(biāo)簽,具體的處理可以是將所得到的索引信息添加到所述數(shù)據(jù)塊之后,將所述信息塊寫入存儲(chǔ)單元之前,該方法進(jìn)一步包括判斷所述信息塊寫入存儲(chǔ)單元之后,占用的存儲(chǔ)區(qū)域是否會(huì)包含時(shí)間標(biāo)簽區(qū)域,如果會(huì),則將所述信息塊的存儲(chǔ)位置和所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間作為該時(shí)間標(biāo)簽區(qū)域的內(nèi)容,在所述信息塊中插入該時(shí)間標(biāo)簽,使插入時(shí)間標(biāo)簽后的信息塊寫入存儲(chǔ)單元后,該時(shí)間標(biāo)簽占用自身對(duì)應(yīng)的時(shí)間標(biāo)簽區(qū)域,再將插入時(shí)間標(biāo)簽后的信息塊順序?qū)懭氪鎯?chǔ)單元,其中所述索引信息為該信息塊加入時(shí)間標(biāo)簽后的存儲(chǔ)長度;如果不會(huì),則將所述信息塊順序?qū)懭氪鎯?chǔ)單元。參見圖4,圖4為考慮時(shí)間標(biāo)簽時(shí),本發(fā)明寫入信息塊的流程圖。在步驟401中,得到待存儲(chǔ)的數(shù)據(jù)塊。在視頻監(jiān)控領(lǐng)域,本發(fā)明中所指的數(shù)據(jù)塊為I幀組。在步驟402中,根據(jù)待存儲(chǔ)的數(shù)據(jù)塊,得到該數(shù)據(jù)塊對(duì)應(yīng)的索引信息。其中,所述索引信息包括所述信息塊的存儲(chǔ)位置和存儲(chǔ)長度,以及所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間。在步驟403中,將該索引信息添加到該數(shù)據(jù)塊頭部構(gòu)成信息塊。在步驟404中,判斷該信息塊寫入存儲(chǔ)單元之后,占用的存儲(chǔ)區(qū)域是否會(huì)包含時(shí)間標(biāo)簽區(qū)域,如果是,則執(zhí)行步驟405 ;否則,執(zhí)行步驟406。在步驟405中,將時(shí)間標(biāo)簽插入信息塊中,然后寫入存儲(chǔ)單元。結(jié)束當(dāng)前處理流程。將時(shí)間標(biāo)簽插入信息塊的操作可以是將所述信息塊的存儲(chǔ)位置和所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間作為該時(shí)間標(biāo)簽區(qū)域的時(shí)間標(biāo)簽,在所述信息塊中插入該時(shí)間標(biāo)簽,使插入時(shí)間標(biāo)簽后的信息塊寫入存儲(chǔ)單元后,該時(shí)間標(biāo)簽占用自身對(duì)應(yīng)的時(shí)間標(biāo)簽區(qū)域,再將插入時(shí)間標(biāo)簽后的信息塊順序?qū)懭氪鎯?chǔ)單元。其中,所述索引信息為該信息塊加入時(shí)間標(biāo)簽后的存儲(chǔ)長度。在步驟406中,直接將信息塊順序?qū)懭氪鎯?chǔ)單元。下面介紹本發(fā)明的另一方面,即數(shù)據(jù)檢索。本明提供時(shí)間標(biāo)簽的前提下,本發(fā)明可以利用時(shí)間標(biāo)簽來實(shí)現(xiàn)檢索。具體參見圖5,圖5為本發(fā)明所提供的檢索過程。在步驟501中,當(dāng)根據(jù)檢索時(shí)間檢索流媒體數(shù)據(jù)時(shí),根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,查找得到等于檢索時(shí)間或離檢索時(shí)間最近的時(shí)間標(biāo)簽。在步驟502中,根據(jù)查找得到的時(shí)間標(biāo)簽確定檢索到的信息塊。在步驟503中,根據(jù)信息塊中索引信息的記錄返回對(duì)應(yīng)數(shù)據(jù)塊的存儲(chǔ)位置。在步驟504中,根據(jù)返回的存儲(chǔ)位置進(jìn)行數(shù)據(jù)讀取,并在讀取過程中剔除其中包含的時(shí)間標(biāo)簽。其中,步驟501中的根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,查找得到等于檢索時(shí)間或離檢索時(shí)間最近的時(shí)間標(biāo)簽可以通過如圖6所示的流程實(shí)現(xiàn)。在步驟601中,取所述存儲(chǔ)單元中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m禾口 t。在步驟602中,根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,判斷當(dāng)前所取位置的時(shí)間標(biāo)簽中是否存在等于檢索時(shí)間S的時(shí)間標(biāo)簽,如果是,則執(zhí)行步驟603 ;否則,執(zhí)行步驟 604。為了方便描述用S代替檢索時(shí)間。在步驟603中,等于S的時(shí)間標(biāo)簽即為查找得到的時(shí)間標(biāo)簽。
在步驟604中,判斷當(dāng)前三個(gè)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間是否都小于S,如果是,執(zhí)行步驟605 ;否則,執(zhí)行步驟606。在步驟605中,當(dāng)h >=m時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇h,m],執(zhí)行步驟607 ; 當(dāng)m > = t時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇m,t],執(zhí)行步驟607 ;當(dāng)t > = h時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇t,h],執(zhí)行步驟607。在步驟606中,根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,在大于S的時(shí)間標(biāo)簽中選擇最接近S的時(shí)間標(biāo)簽χ ;當(dāng)χ = h時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇t,h],執(zhí)行步驟607 ; 當(dāng)χ = m,確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇h,m],執(zhí)行步驟607 ;當(dāng)χ = t時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇m,t],執(zhí)行步驟607。在步驟607中,判斷所述確定的存儲(chǔ)區(qū)域內(nèi)是否存在三個(gè)或三個(gè)以上的時(shí)間標(biāo)簽,如果是,執(zhí)行步驟608 ;否則,執(zhí)行609。在步驟608中,取所述當(dāng)前查找的存儲(chǔ)區(qū)域中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m和t,返回執(zhí)行步驟602。在步驟609中,取所述當(dāng)前查找的存儲(chǔ)區(qū)域中頭部尾部兩個(gè)位置的時(shí)間標(biāo)簽,依次記為h和t,執(zhí)行步驟610。在存儲(chǔ)區(qū)域[t,h]、[h,m]或[m,t]中,由于其中已經(jīng)包含了時(shí)間標(biāo)簽t、h,h、m, m、t,因此判斷存儲(chǔ)區(qū)域內(nèi)是否存在三個(gè)或三個(gè)以上的時(shí)間標(biāo)簽實(shí)際就是判斷除兩個(gè)端點(diǎn)外,在存儲(chǔ)區(qū)域內(nèi)是否還存在其他的時(shí)間標(biāo)簽。在步驟610中,當(dāng)S和h或t相等時(shí),則相等的時(shí)間標(biāo)簽為查找得到的時(shí)間標(biāo)簽, 結(jié)束當(dāng)前處理流程;當(dāng)S大于h、小于t時(shí),則h為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程; 當(dāng)S大于h和t時(shí),則h和t中較大的時(shí)間標(biāo)簽為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程; 當(dāng)S小于h和t時(shí),執(zhí)行步驟611。在步驟611中,選擇時(shí)間標(biāo)簽h和t中較小的記為P ;找到該時(shí)間標(biāo)簽P之前的時(shí)間標(biāo)簽Q,根據(jù)時(shí)間記錄的數(shù)據(jù)塊起始時(shí)間比較時(shí)間標(biāo)簽的大小,當(dāng)Q > = P時(shí),確定P為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S >= Q,確定Q為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S < Q,將時(shí)間標(biāo)簽Q記錄為當(dāng)前時(shí)間標(biāo)簽P,返回執(zhí)行找到當(dāng)前時(shí)間標(biāo)簽之前的時(shí)間標(biāo)簽Q的操作。這里,需要說明的是,當(dāng)在中間位置存在兩個(gè)時(shí)間標(biāo)簽時(shí),選擇位置靠前的一個(gè)作為所選擇的時(shí)間標(biāo)簽。具體可以參見下面的例子。例如,在如表三所示的情況,檢索過程如下所示。
權(quán)利要求
1.一種存儲(chǔ)流媒體數(shù)據(jù)的方法,其特征在于,該方法包括根據(jù)待存儲(chǔ)的數(shù)據(jù)塊得到該數(shù)據(jù)塊對(duì)應(yīng)的索引信息;其中,所述索引信息包括所述信息塊的存儲(chǔ)位置和存儲(chǔ)長度,以及所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間;將所得到的索引信息添加到所述數(shù)據(jù)塊之前,并將該索引信息和所述數(shù)據(jù)塊構(gòu)成的信息塊順序?qū)懭氪鎯?chǔ)單元。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述索引信息中進(jìn)一步包括索引標(biāo)志,用來指示該索引信息對(duì)應(yīng)信息塊的起始。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括在存儲(chǔ)單元上均勻的設(shè)置多個(gè)時(shí)間標(biāo)簽區(qū)域; 將所得到的索引信息添加到所述數(shù)據(jù)塊之后,將所述信息塊寫入存儲(chǔ)單元之前,該方法進(jìn)一步包括判斷所述信息塊寫入存儲(chǔ)單元之后,占用的存儲(chǔ)區(qū)域是否會(huì)包含時(shí)間標(biāo)簽區(qū)域,如果會(huì),則將所述信息塊的存儲(chǔ)位置和所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間作為該時(shí)間標(biāo)簽區(qū)域的內(nèi)容,在所述信息塊中插入該時(shí)間標(biāo)簽,使插入時(shí)間標(biāo)簽后的信息塊寫入存儲(chǔ)單元后,該時(shí)間標(biāo)簽占用自身對(duì)應(yīng)的時(shí)間標(biāo)簽區(qū)域,再將插入時(shí)間標(biāo)簽后的信息塊順序?qū)懭氪鎯?chǔ)單元,其中所述索引信息為該信息塊加入時(shí)間標(biāo)簽后的存儲(chǔ)長度;如果不會(huì),則將所述信息塊順序?qū)懭氪鎯?chǔ)單元。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法進(jìn)一步包括當(dāng)根據(jù)檢索時(shí)間檢索流媒體數(shù)據(jù)時(shí),根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,查找得到等于檢索時(shí)間或離檢索時(shí)間最近的時(shí)間標(biāo)簽;根據(jù)查找得到的時(shí)間標(biāo)簽確定檢索到的信息塊;根據(jù)信息塊中索引信息的記錄返回對(duì)應(yīng)數(shù)據(jù)塊的存儲(chǔ)位置;根據(jù)返回的存儲(chǔ)位置進(jìn)行數(shù)據(jù)讀取,并在讀取過程中剔除其中包含的時(shí)間標(biāo)簽。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,查找得到等于檢索時(shí)間或離檢索時(shí)間最近的時(shí)間標(biāo)簽包括Al、取所述存儲(chǔ)單元中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m和t ; Bi、根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,判斷當(dāng)前所取位置的時(shí)間標(biāo)簽中是否存在等于檢索時(shí)間S的時(shí)間標(biāo)簽,如果存在,則等于S的時(shí)間標(biāo)簽即為查找得到的時(shí)間標(biāo)簽; 如果不存在,執(zhí)行步驟Cl ;Cl、判斷當(dāng)前三個(gè)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間是否都小于S,如果是,執(zhí)行步驟 Dl ;否則,執(zhí)行步驟El ;D1、當(dāng)h>=m時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇h,m],執(zhí)行步驟Fl ^m>= t時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇m,t],執(zhí)行步驟Fl ;當(dāng)t > = h時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)?[t,h],執(zhí)行步驟Fl ;E1、根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,在大于S的時(shí)間標(biāo)簽中選擇最接近S的時(shí)間標(biāo)簽χ ;當(dāng)χ = h時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇t,h],執(zhí)行步驟Fl ;當(dāng)χ = m,確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇h,m],執(zhí)行步驟Fl;當(dāng)x = t時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇m,t], 執(zhí)行步驟Fl ;F1、判斷所述確定的存儲(chǔ)區(qū)域內(nèi)是否存在三個(gè)或三個(gè)以上的時(shí)間標(biāo)簽,如果是,取所述當(dāng)前查找的存儲(chǔ)區(qū)域中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m和t,返回執(zhí)行步驟Bl ;否則,取所述當(dāng)前查找的存儲(chǔ)區(qū)域中頭部尾部兩個(gè)位置的時(shí)間標(biāo)簽,依次記為h 和t,執(zhí)行步驟Gl ;G1、當(dāng)S和h或t相等時(shí),則相等的時(shí)間標(biāo)簽為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S大于h、小于t時(shí),則h為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S大于h和t 時(shí),則h和t中較大的時(shí)間標(biāo)簽為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S小于h和 t時(shí),執(zhí)行步驟Hl;HI、選擇時(shí)間標(biāo)簽h和t中較小的記為P ;找到該時(shí)間標(biāo)簽P之前的時(shí)間標(biāo)簽Q,根據(jù)時(shí)間記錄的數(shù)據(jù)塊起始時(shí)間比較時(shí)間標(biāo)簽的大小,當(dāng)Q > = P時(shí),確定P為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S > = Q,確定Q為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng) S < Q,將時(shí)間標(biāo)簽Q記錄為當(dāng)前時(shí)間標(biāo)簽P,返回執(zhí)行找到當(dāng)前時(shí)間標(biāo)簽之前的時(shí)間標(biāo)簽Q 的操作。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)查找得到的時(shí)間標(biāo)簽確定檢索到的信息塊包括當(dāng)查找到的時(shí)間標(biāo)簽等于或大于檢索時(shí)間時(shí),該時(shí)間標(biāo)簽所對(duì)應(yīng)的信息塊即為檢索到的信息塊;當(dāng)查找到的時(shí)間標(biāo)簽小于檢索時(shí)間時(shí),根據(jù)該時(shí)間標(biāo)簽記錄的存儲(chǔ)位置,讀取到對(duì)應(yīng)信息塊的索引信息,根據(jù)該索引信息記錄的存儲(chǔ)長度讀取下一個(gè)信息塊的索引信息,根據(jù)當(dāng)前讀取的索引信息中記錄的起始時(shí)間判斷該起始時(shí)間是否小于檢索時(shí)間,如果小于,再根據(jù)當(dāng)前索引信息中記錄的存儲(chǔ)長度讀取下一個(gè)信息塊的索引信息,直至找到記錄的起始時(shí)間大于或等于檢索時(shí)間的索引信息,則該索引信息對(duì)應(yīng)的信息塊為檢索到的信息塊;在始終找不到起始時(shí)間大于或等于檢索時(shí)間的索引信息時(shí),則表明檢索失敗,返回檢索失敗指示。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法進(jìn)一步包括在中斷重啟后,A2、取所述存儲(chǔ)單元中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m和t ;B2、根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,選擇其中最大的標(biāo)簽;當(dāng)最大的時(shí)間標(biāo)簽為h時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇h,m],執(zhí)行步驟C2 ;當(dāng)最大的時(shí)間標(biāo)簽為m時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇m,t],執(zhí)行步驟C2 ;當(dāng)最大的時(shí)間標(biāo)簽為t時(shí),確定t為最新的時(shí)間標(biāo)簽,執(zhí)行步驟D2 ;C2、判斷所述確定的存儲(chǔ)區(qū)域內(nèi)是否存在三個(gè)或三個(gè)以上的時(shí)間標(biāo)簽,如果存在,取所述當(dāng)前查找的存儲(chǔ)區(qū)域中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m和t,返回執(zhí)行步驟B2 ;否則,確定所述存儲(chǔ)區(qū)域內(nèi)兩個(gè)時(shí)間標(biāo)簽中最大的時(shí)間標(biāo)簽為最新的時(shí)間標(biāo)簽,執(zhí)行步驟D2 ;D2、根據(jù)確定的最新時(shí)間標(biāo)簽記錄的存儲(chǔ)位置,讀取到對(duì)應(yīng)信息塊的索引信息,根據(jù)該索引信息記錄的存儲(chǔ)長度讀取下一個(gè)信息塊的索引信息;根據(jù)當(dāng)前索引信息中記錄的起始時(shí)間判斷該起始時(shí)間是否小于時(shí)間標(biāo)簽,如果是,則確定當(dāng)前時(shí)間標(biāo)簽對(duì)應(yīng)的信息塊為最新記錄的信息塊,執(zhí)行步驟E2 ;否則,再讀取下一信息塊,直到找到后一信息塊的起始時(shí)間小于前一信息塊起始時(shí)間,則確定此時(shí)在前的信息塊為最新記錄的信息塊,執(zhí)行步驟E2 ;E2、在所確定的最新記錄的信息塊之后,寫入數(shù)據(jù)。
8.一種存儲(chǔ)流媒體數(shù)據(jù)的裝置,其特征在于,該裝置包括處理單元和寫入單元;所述處理單元,用于根據(jù)待存儲(chǔ)的數(shù)據(jù)塊得到該數(shù)據(jù)塊對(duì)應(yīng)的索引信息;其中,所述索引信息包括所述信息塊的存儲(chǔ)位置和存儲(chǔ)長度,以及所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間所述寫入單元,用于將所述處理單元得到的索引信息添加到所述數(shù)據(jù)塊之前,并將該索引信息和所述數(shù)據(jù)塊構(gòu)成的信息塊順序?qū)懭氪鎯?chǔ)單元。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述處理單元,進(jìn)一步用于在索引信息中設(shè)置索引標(biāo)志,用來指示該索引信息對(duì)應(yīng)信息塊的起始。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述寫入單元,在存儲(chǔ)單元上均勻的設(shè)置多個(gè)時(shí)間標(biāo)簽區(qū)域時(shí),進(jìn)一步用于將所得到的索引信息添加到所述數(shù)據(jù)塊之后,將所述信息塊寫入存儲(chǔ)單元之前,判斷所述信息塊寫入存儲(chǔ)單元之后,占用的存儲(chǔ)區(qū)域是否會(huì)包含時(shí)間標(biāo)簽區(qū)域,如果會(huì),則將所述信息塊的存儲(chǔ)位置和所述數(shù)據(jù)塊對(duì)應(yīng)流媒體的起始時(shí)間作為該時(shí)間標(biāo)簽區(qū)域的內(nèi)容,在所述信息塊中插入該時(shí)間標(biāo)簽,使插入時(shí)間標(biāo)簽后的信息塊寫入存儲(chǔ)單元后,該時(shí)間標(biāo)簽占用自身對(duì)應(yīng)的時(shí)間標(biāo)簽區(qū)域,再將插入時(shí)間標(biāo)簽后的信息塊順序?qū)懭氪鎯?chǔ)單元,其中所述索引信息為該信息塊加入時(shí)間標(biāo)簽后的存儲(chǔ)長度;如果不會(huì),則將所述信息塊順序?qū)懭氪鎯?chǔ)單元。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,該裝置進(jìn)一步包括檢索單元和讀取單元;所述檢索單元,用于當(dāng)根據(jù)檢索時(shí)間檢索流媒體數(shù)據(jù)時(shí),根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,查找得到等于檢索時(shí)間或離檢索時(shí)間最近的時(shí)間標(biāo)簽;根據(jù)查找得到的時(shí)間標(biāo)簽確定檢索到的信息塊;根據(jù)信息塊中索引信息的記錄返回對(duì)應(yīng)數(shù)據(jù)塊的存儲(chǔ)位置;所述讀取單元,用于根據(jù)所述檢索單元返回的存儲(chǔ)位置進(jìn)行數(shù)據(jù)讀取,并在讀取過程中剔除其中包含的時(shí)間標(biāo)簽。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述檢索單元,在根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,查找得到等于檢索時(shí)間或離檢索時(shí)間最近的時(shí)間標(biāo)簽時(shí),按照以下操作執(zhí)行Al、取所述存儲(chǔ)單元中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m和t ;Bi、根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,判斷當(dāng)前所取位置的時(shí)間標(biāo)簽中是否存在等于檢索時(shí)間S的時(shí)間標(biāo)簽,如果存在,則等于S的時(shí)間標(biāo)簽即為查找得到的時(shí)間標(biāo)簽; 如果不存在,執(zhí)行步驟Cl ;Cl、判斷當(dāng)前三個(gè)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間是否都小于S,如果是,執(zhí)行步驟 Dl ;否則,執(zhí)行步驟El ;Di、當(dāng)h > = m時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇h,m],執(zhí)行步驟Fl ;當(dāng)m > = t時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇m,t],執(zhí)行步驟Fl ;當(dāng)t > = h時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)?[t,h],執(zhí)行步驟Fl ;E1、根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,在大于S的時(shí)間標(biāo)簽中選擇最接近S的時(shí)間標(biāo)簽χ;當(dāng)χ = h時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇t,h],執(zhí)行步驟Fl ;當(dāng)χ = m,確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇h,m],執(zhí)行步驟Fl ;當(dāng)χ = t時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇m,t], 執(zhí)行步驟Fl ;F1、判斷所述確定的存儲(chǔ)區(qū)域內(nèi)是否存在三個(gè)或三個(gè)以上的時(shí)間標(biāo)簽,如果是,取所述當(dāng)前查找的存儲(chǔ)區(qū)域中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m和t,返回執(zhí)行步驟Bl ;否則,取所述當(dāng)前查找的存儲(chǔ)區(qū)域中頭部尾部兩個(gè)位置的時(shí)間標(biāo)簽,依次記為h 和t,執(zhí)行步驟Gl ;G1、當(dāng)S和h或t相等時(shí),則相等的時(shí)間標(biāo)簽為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S大于h、小于t時(shí),則h為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S大于h和t 時(shí),則h和t中較大的時(shí)間標(biāo)簽為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S小于h和 t時(shí),執(zhí)行步驟Hl ;HI、選擇時(shí)間標(biāo)簽h和t中較小的記為P ;找到該時(shí)間標(biāo)簽P之前的時(shí)間標(biāo)簽Q,根據(jù)時(shí)間記錄的數(shù)據(jù)塊起始時(shí)間比較時(shí)間標(biāo)簽的大小,當(dāng)Q > = P時(shí),確定P為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng)S >= Q,確定Q為查找得到的時(shí)間標(biāo)簽,結(jié)束當(dāng)前處理流程;當(dāng) S < Q,將時(shí)間標(biāo)簽Q記錄為當(dāng)前時(shí)間標(biāo)簽P,返回執(zhí)行找到當(dāng)前時(shí)間標(biāo)簽之前的時(shí)間標(biāo)簽Q 的操作。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述檢索單元在根據(jù)查找得到的時(shí)間標(biāo)簽確定檢索到的信息塊時(shí),按照以下操作執(zhí)行當(dāng)查找到的時(shí)間標(biāo)簽等于或大于檢索時(shí)間時(shí),該時(shí)間標(biāo)簽所對(duì)應(yīng)的信息塊即為檢索到的信息塊;當(dāng)查找到的時(shí)間標(biāo)簽小于檢索時(shí)間時(shí),根據(jù)該時(shí)間標(biāo)簽記錄的存儲(chǔ)位置,讀取到對(duì)應(yīng)信息塊的索引信息,根據(jù)該索引信息記錄的存儲(chǔ)長度讀取下一個(gè)信息塊的索引信息,根據(jù)當(dāng)前讀取的索引信息中記錄的起始時(shí)間判斷該起始時(shí)間是否小于檢索時(shí)間,如果小于,再根據(jù)當(dāng)前索引信息中記錄的存儲(chǔ)長度讀取下一個(gè)信息塊的索引信息,直至找到記錄的起始時(shí)間大于或等于檢索時(shí)間的索引信息,則該索引信息對(duì)應(yīng)的信息塊為檢索到的信息塊;在始終找不到起始時(shí)間大于或等于檢索時(shí)間的索引信息時(shí),則表明檢索失敗,返回檢索失敗指示。
14.根據(jù)權(quán)利要求10所述的裝置,其特征在于,該裝置進(jìn)一步包括中斷控制單元;所述中斷控制單元,用于按照以下操作找到最新記錄的信息塊,用于在中斷重啟后在最新記錄的信息塊后寫入數(shù)據(jù);操作如下A2、取所述存儲(chǔ)單元中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m和t ;B2、根據(jù)時(shí)間標(biāo)簽中記錄的數(shù)據(jù)塊起始時(shí)間,選擇其中最大的標(biāo)簽;當(dāng)最大的時(shí)間標(biāo)簽為h時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇h,m],執(zhí)行步驟C2 ;當(dāng)最大的時(shí)間標(biāo)簽為m時(shí),確定當(dāng)前查找的存儲(chǔ)區(qū)域?yàn)閇m,t],執(zhí)行步驟C2 ;當(dāng)最大的時(shí)間標(biāo)簽為t時(shí),確定t為最新的時(shí)間標(biāo)簽,執(zhí)行步驟D2;C2、判斷所述確定的存儲(chǔ)區(qū)域內(nèi)是否存在三個(gè)或三個(gè)以上的時(shí)間標(biāo)簽,如果存在,取所述當(dāng)前查找的存儲(chǔ)區(qū)域中頭部、中間和尾部三個(gè)位置的時(shí)間標(biāo)簽,依次記為h,m和t,返回執(zhí)行步驟B2 ;否則,確定所述存儲(chǔ)區(qū)域內(nèi)兩個(gè)時(shí)間標(biāo)簽中最大的時(shí)間標(biāo)簽為最新的時(shí)間標(biāo)簽,執(zhí)行步驟D2 ;D2、根據(jù)確定的最新時(shí)間標(biāo)簽記錄的存儲(chǔ)位置,讀取到對(duì)應(yīng)信息塊的索引信息,根據(jù)該索引信息記錄的存儲(chǔ)長度讀取下一個(gè)信息塊的索引信息;根據(jù)當(dāng)前索引信息中記錄的起始時(shí)間判斷該起始時(shí)間是否小于時(shí)間標(biāo)簽,如果是,則確定當(dāng)前時(shí)間標(biāo)簽對(duì)應(yīng)的信息塊為最新記錄的信息塊;否則,再讀取下一信息塊,直到找到后一信息塊的起始時(shí)間小于前一信息塊起始時(shí)間,則確定此時(shí)在前的信息塊為最新記錄的信息塊。
全文摘要
本發(fā)明公開了一種存儲(chǔ)流媒體數(shù)據(jù)的方法及裝置。本發(fā)明的技術(shù)方案通過將索引信息添加到數(shù)據(jù)塊之前,在寫入數(shù)據(jù)時(shí)直接將索引信息連同數(shù)據(jù)塊一起寫入存儲(chǔ)單元,從而避免了在寫入數(shù)據(jù)時(shí)每寫入一個(gè)數(shù)據(jù)塊就將磁頭移動(dòng)到對(duì)應(yīng)的索引區(qū)域?qū)懭胨饕畔⒌牟僮?,減少了磁頭尋道時(shí)間,提高了寫數(shù)據(jù)性能。
文檔編號(hào)G11B27/10GK102243884SQ20101017535
公開日2011年11月16日 申請(qǐng)日期2010年5月12日 優(yōu)先權(quán)日2010年5月12日
發(fā)明者金何泉 申請(qǐng)人:杭州華三通信技術(shù)有限公司