本發(fā)明涉及視頻存儲技術(shù)領域,具體而言,涉及一種實時視頻存儲、檢索方法及裝置。
背景技術(shù):
在安防等行業(yè),實時視頻存儲系統(tǒng)需要將成千上萬路的實時視頻存儲到存儲介質(zhì)中,同時還要支持按時間對視頻的快速定位,實現(xiàn)視頻的快速檢索,定位準確度基本精確到幀級別。
為了提升存儲系統(tǒng)的穩(wěn)定性,相關技術(shù)中進行視頻存儲時,大都是提前將存儲空間按塊進行分配,然后將視頻流寫入每個塊中,并為每個塊建立一個索引文件,將該索引文件稱為塊索引文件,在塊索引文件中存儲著該塊內(nèi)所有的幀信息,當需要進行視頻檢索時,將對視頻的檢索轉(zhuǎn)換成相應的塊索引的檢索。
但是,采用上述方法進行視頻存儲,當塊索引文件損壞或者丟失時,視頻檢索就會變得非常低效,甚至無法檢索,并且,即使塊索引文件正常,如果內(nèi)存不足也會導致塊索引加載異常,從而導致無法快速檢索視頻,雖然,當塊索引文件損壞或者丟失時,可以通過遍歷塊內(nèi)的數(shù)據(jù)重建塊索引文件,但是,這樣無法實現(xiàn)快速檢索視頻。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例的目的在于提供一種實時視頻存儲、檢索方法及裝置,以解決采用現(xiàn)有技術(shù)中的視頻存儲方法進行視頻存儲,當塊索引文件損壞、丟失時,視頻檢索會變得非常低效、甚至無法檢索,或者由于存儲內(nèi)存不足使得塊索引文件加載異常,從而導致無法快速檢索視頻的問題。
第一方面,本發(fā)明實施例提供了一種實時視頻存儲方法,其中,所述方法包括:
從存儲介質(zhì)中選擇用于存儲實時視頻的存儲塊,所述存儲塊包括多個頁框,每個所述頁框包括頁頭和頁體;
將接收的所述實時視頻以視頻幀為單位存儲在所述頁體內(nèi),確定每個視頻幀在所述存儲塊內(nèi)的偏移量,將占據(jù)所述頁體的起始位置的所述視頻幀的偏移量存儲在所述頁體對應的頁頭內(nèi)。
結(jié)合第一方面,本發(fā)明實施例提供了上述第一方面的第一種可能的實現(xiàn)方式,其中,所述將占據(jù)所述頁體的起始位置的所述視頻幀的偏移量存儲在所述頁體對應的頁頭內(nèi),包括:
當所述視頻幀的幀頭占據(jù)所述頁體的起始位置時,將所述視頻幀的偏移量存儲在所述頁體對應的頁頭內(nèi);
當所述視頻幀的幀頭未占據(jù)所述頁體的起始位置,且所述視頻幀存儲在多個頁框內(nèi)時,將所述視頻幀的偏移量存儲在所述視頻幀占據(jù)起始位置的頁體對應的頁頭內(nèi)。
結(jié)合第一方面,本發(fā)明實施例提供了上述第一方面的第二種可能的實現(xiàn)方式,其中,所述將占據(jù)所述頁體的起始位置的所述視頻幀的偏移量存儲在所述頁體對應的頁頭內(nèi)之后,還包括:
獲取所述存儲塊內(nèi)存儲的實時視頻的視頻幀信息,所述視頻幀信息包括所述視頻幀的幀號、所述視頻幀的實際發(fā)生時間、所述視頻幀在所述存儲塊內(nèi)的偏移量、所述視頻幀的大小及關鍵幀標識;
根據(jù)所述視頻幀信息,生成所述存儲塊的塊索引文件。
結(jié)合第一方面,本發(fā)明實施例提供了上述第一方面的第三種可能的實現(xiàn)方式,其中,所述從存儲介質(zhì)中選擇用于存儲實時視頻的存儲塊,包括:
從所述存儲介質(zhì)中的無效塊集合中選擇用于存儲所述實時視頻的存儲塊,所述無效塊集合用于放置存儲的實時視頻超過預設時間的存儲塊;
當所述無效塊集合中不存在存儲塊時,則從所述存儲介質(zhì)的有效塊集合中選擇存儲的實時視頻的時間最長的存儲塊,所述有效塊集合用于放置存儲的實時視頻沒有超過所述預設時間的存儲塊。
結(jié)合第一方面,本發(fā)明實施例提供了上述第一方面的第四種可能的實現(xiàn)方式,其中,所述存儲塊的容量為所述頁框的容量的整數(shù)倍。
第二方面,本發(fā)明實施例提供了一種實時視頻檢索方法,其中,所述方法包括:
確定存儲塊包括的頁框的個數(shù),根據(jù)所述頁框的個數(shù)、所述存儲塊內(nèi)存儲的實時視頻的時長以及待檢索視頻的時間,采用線性比例的方法定位出所述待檢索視頻所在的頁框;
根據(jù)所述頁框的頁頭獲取所述頁頭對應的頁體內(nèi)的視頻幀及視頻幀信息,所述視頻幀信息包括所述視頻幀的時間;
將所述視頻幀信息與所述待檢索視頻的時間進行比對,根據(jù)所述視頻幀信息與所述待檢索視頻的時間的偏差,以所述視頻幀為起始位置繼續(xù)采用所述線性比例的方法進行檢索,直至檢索出與所述待檢索視頻的時間相匹配的視頻幀。
結(jié)合第二方面,本發(fā)明實施例提供了上述第二方面的第一種可能的實現(xiàn)方式,其中,所述根據(jù)所述頁框的個數(shù)、所述存儲塊內(nèi)存儲的視頻的時長以及待檢索視頻的時間,采用線性比例的方法定位出所述待檢索視頻所在的頁框,包括:
根據(jù)所述頁框的個數(shù)、所述存儲塊內(nèi)存儲的視頻的時長及待檢索視頻的時間,通過公式(1)計算所述待檢索視頻所在的頁框:
其中,在公式(1)中,P為所述待檢索視頻所在的頁框,M為所述頁框的個數(shù),t為所述存儲塊內(nèi)存儲的視頻的時長,t1為所述待檢索視頻的時間。
第三方面,本發(fā)明實施例提供了一種實時視頻存儲裝置,其中,所述裝置包括:
選擇模塊,用于從存儲介質(zhì)中選擇用于存儲實時視頻的存儲塊,所述存儲塊包括多個頁框,每個所述頁框包括頁頭和頁體;
存儲模塊,用于將接收的所述實時視頻以視頻幀為單位存儲在所述頁體內(nèi),確定每個視頻幀在所述存儲塊內(nèi)的偏移量,將占據(jù)所述頁體的起始位置的所述視頻幀的偏移量存儲在所述頁體對應的頁頭內(nèi)。
結(jié)合第三方面,本發(fā)明實施例提供了上述第三方面的第一種可能的實現(xiàn)方式,其中,所述存儲模塊包括:
第一存儲單元,用于當所述視頻幀的幀頭占據(jù)所述頁體的起始位置時,將所述視頻幀的偏移量存儲在所述頁體對應的頁頭內(nèi);
第二存儲單元,用于當所述視頻幀的幀頭未占據(jù)所述頁體的起始位置,且所述視頻幀存儲在多個頁框內(nèi)時,將所述視頻幀的偏移量存儲在所述視頻幀占據(jù)起始位置的頁體對應的頁頭內(nèi)。
結(jié)合第三方面,本發(fā)明實施例提供了上述第三方面的第二種可能的實現(xiàn)方式,其中,所述裝置還包括:
獲取模塊,用于獲取所述存儲塊內(nèi)存儲的實時視頻的視頻幀信息,所述視頻幀信息包括所述視頻幀的幀號、所述視頻幀的實際發(fā)生時間、所述視頻幀在所述存儲塊內(nèi)的偏移量、所述視頻幀的大小及關鍵幀標識;
生成模塊,用于根據(jù)所述視頻幀信息,生成所述存儲塊的塊索引文件。
結(jié)合第三方面,本發(fā)明實施例提供了上述第三方面的第三種可能的實現(xiàn)方式,其中,所述選擇模塊包括:
第一選擇單元,用于從所述存儲介質(zhì)中的無效塊集合中選擇用于存儲所述實時視頻的存儲塊,所述無效塊集合用于放置存儲的實時視頻超過預設時間的存儲塊;
第二選擇單元,用于當所述無效塊集合中不存在存儲塊時,則從所述存儲介質(zhì)的有效塊集合中選擇存儲的實時視頻的時間最長的存儲塊,所述有效塊集合用于放置存儲的實時視頻沒有超過所述預設時間的存儲塊。
第四方面,本發(fā)明實施例提供了一種實時視頻檢索裝置,其中,所述裝置包括:
定位模塊,用于確定存儲塊包括的頁框的個數(shù),根據(jù)所述頁框的個數(shù)、所述存儲塊內(nèi)存儲的實時視頻的時長以及待檢索視頻的時間,采用線性比例的方法定位出所述待檢索視頻所在的頁框;
獲取模塊,用于根據(jù)所述頁框的頁頭獲取所述頁頭對應的頁體內(nèi)的視頻幀及視頻幀信息,所述視頻幀信息包括所述視頻幀的時間;
檢索模塊,用于將所述視頻幀信息與所述待檢索視頻的時間進行比對,根據(jù)所述視頻幀信息與所述待檢索視頻的時間的偏差,以所述視頻幀為起始位置繼續(xù)采用所述線性比例的方法進行檢索,直至檢索出與所述待檢索視頻的時間相匹配的視頻幀。
本發(fā)明實施例提供的實時視頻存儲、檢索方法及裝置,存儲塊包括多個頁框,每個頁框包括頁頭和頁體,將接收到的實時視頻以視頻幀為單位存儲在頁體內(nèi),將占據(jù)頁體的起始位置的視頻幀的偏移量存儲在頁體對應的頁體內(nèi),通過按頁框可以實現(xiàn)實時視頻的檢索,因此,即使存儲塊索引失效時,也能夠?qū)崿F(xiàn)實時視頻的快速檢索。
為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細說明如下。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應當理解,以下附圖僅示出了本發(fā)明的某些實施例,因此不應被看作是對范圍的限定,對于本領域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關的附圖。
圖1示出了本發(fā)明實施例1所提供的實時視頻存儲方法的流程圖;
圖2示出了本發(fā)明實施例1所提供的實時視頻存儲方法中存儲塊的結(jié)構(gòu)示意圖;
圖3示出了本發(fā)明實施例2所提供的實時視頻檢索方法的流程圖;
圖4示出了本發(fā)明實施例3所提供的實時視頻存儲裝置的結(jié)構(gòu)示意圖;
圖5示出了本發(fā)明實施例4所提供的實時視頻檢索裝置的結(jié)構(gòu)示意圖。
圖2附圖標記說明:
210,存儲塊;220,頁頭;230,頁體。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發(fā)明實施例的組件可以以各種不同的配置來布置和設計。因此,以下對在附圖中提供的本發(fā)明的實施例的詳細描述并非旨在限制要求保護的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實施例?;诒景l(fā)明的實施例,本領域技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
考慮到相關技術(shù)中在進行實時視頻存儲時,大都是提前將存儲空間劃分成多個存儲塊,將接收到的實時視頻存儲到存儲塊中,并建立塊索引文件,這樣當需要進行視頻檢索時,將對視頻的檢索轉(zhuǎn)換成相應的塊索引的檢索,但是,采用上述方式進行視頻存儲,當塊索引文件損壞或者丟失時,視頻檢索就會變得非常低效,甚至無法檢索,并且,即使塊索引文件正常,當內(nèi)存不足時,也會導致塊索引加載異常,從而導致無法快速檢索視頻。基于此,本發(fā)明實施例提供了一種實時視頻存儲、檢索方法及裝置,下面通過實施例進行描述。
實施例1
本發(fā)明實施例提供了一種實時視頻存儲方法,在本發(fā)明中,將存儲介質(zhì)劃分為多個存儲塊,將每個存儲塊劃分為多個頁框,每個頁框包括頁體和頁頭,將實時視頻存儲在頁體里,在頁頭記錄實時視頻索引,這樣,通過頁框就可以實現(xiàn)實時視頻的快速檢索,即使塊索引文件異常時,也能夠?qū)崿F(xiàn)實時視頻的快速檢索。
如圖1所示,采用本發(fā)明實施例提供的方法進行實時視頻存儲,包括步驟S110-S120,具體如下。
S110,從存儲介質(zhì)中選擇用于存儲實時視頻的存儲塊,該存儲塊包括多個頁框,每個頁框包括頁頭和頁體。
其中,上述存儲介質(zhì)可以是硬件,比如說,硬盤、SAN(storage area network,存儲區(qū)域網(wǎng)絡)、NAS(Network Attached Storage,網(wǎng)絡附屬存儲)等,也可以是軟件,比如說云存儲等等,本發(fā)明實施例并不限定具體的存儲介質(zhì)。
在本發(fā)明實施例中,存儲介質(zhì)被劃分為多個塊,每個塊稱為存儲塊,當需要進行實時視頻存儲時,將該實時視頻寫入存儲塊中,每個存儲塊的存儲容量很大,可能一次寫入的實時視頻數(shù)據(jù)并不能占據(jù)一個完整的存儲塊,這樣,當下次再進行實時視頻存儲時,如果上次的存儲塊的容量還沒有被完全占用,則選擇上次的存儲塊繼續(xù)進行實時視頻存儲,當該存儲塊的存儲容量被完全占用時,需要選取新的存儲塊進行存儲,由于存儲介質(zhì)中都包含有多個存儲塊,因此,從存儲介質(zhì)中選擇用于存儲實時視頻的存儲塊,具體包括:
從上述存儲介質(zhì)的無效塊集合中選擇用于存儲實時視頻的存儲塊,上述無效塊集合用于放置存儲的實時視頻超過預設時間的存儲塊;當上述無效塊集合中不存在存儲塊時,則從上述存儲介質(zhì)的有效塊集合中選擇存儲的實時視頻的時間最長的存儲塊,上述有效塊集合用于放置存儲的實時視頻沒有超過上述預設時間的存儲塊。
其中,實時視頻的存儲具有時效性,即存儲在存儲塊內(nèi)的實時視頻數(shù)據(jù)具有時效性,當存儲塊內(nèi)存儲的實時視頻超過預設時間后,視頻就會失效,即成為無用數(shù)據(jù),這時候可以刪除該存儲塊內(nèi)存儲的視頻,繼續(xù)在該存儲塊內(nèi)存儲新的實時視頻,或者再次使用該存儲塊存儲新的實時視頻時,直接覆蓋原來的實時視頻數(shù)據(jù)。
上述預設時間為預先設定的時間值,該時間值可以為一個月,或者還可以為其它數(shù)值,上述預設時間的設定可以根據(jù)具體應用場景進行設置,本發(fā)明實施例并不限定上述預設時間的具體數(shù)值。
在本發(fā)明實施例中,存儲介質(zhì)中存在兩個集合,分別是有效塊集合和無效塊集合,當存儲塊內(nèi)存儲的實時視頻沒有超過上述預設時間時,將該存儲塊放置在有效塊集合中,當存儲塊內(nèi)的實時視頻的存儲時間超過上述預設時間后,則將該存儲塊轉(zhuǎn)移到無效塊集合中,上述實時視頻數(shù)據(jù)的失效是以存儲塊為單位的,從存儲塊開始寫入實時視頻開始計時。
上述存儲介質(zhì)會實時監(jiān)測有效塊集合中每個存儲塊內(nèi)存儲的實時視頻的時間,并且定期將有效塊集合中超過上述預設時間的存儲塊內(nèi)存儲的實時視頻轉(zhuǎn)移到無效塊集合中。
在本發(fā)明實施例中,當存儲的實時視頻需要寫入新的存儲塊時,首先從無效塊集合中選取存儲塊,用來存儲接收到的實時視頻,如果當前無效塊集合中不存在存儲塊,則從有效塊集合中選取實時視頻存儲時間最長的存儲塊。
現(xiàn)有技術(shù)中,將實時視頻數(shù)據(jù)存儲到存儲塊內(nèi),并建立塊索引文件,通過塊索引文件來進行視頻檢索,但是,當塊索引文件損壞或者異常時,則無法實現(xiàn)實時視頻的快速檢索,為了能夠在塊索引文件異常時,也能夠?qū)崿F(xiàn)實時視頻的快速檢索,本發(fā)明實施例中將存儲塊進行了更細致的劃分,即將存儲塊劃分為多個頁框,因此,每個存儲塊包括多個頁框,每個頁框包括頁頭和頁體。
其中,在將存儲塊劃分為多個頁框時,頁框的容量大小可以自定義設置,一般為了避免存儲空間的浪費,頁框的容量大小一般設置為能夠被存儲塊的容量整除,即存儲塊的容量為頁框的容量的整數(shù)倍。
并且,頁框的容量越大,在進行實時視頻檢索時檢索效率越低,頁框的容量越小,在進行實時視頻檢索時檢索效率越高,因此頁框的具體大小可以根據(jù)實際應用情況進行設置。
S120,將接收的實時視頻以視頻幀為單位存儲在頁體內(nèi),確定每個視頻幀在存儲塊內(nèi)的偏移量,將占據(jù)上述頁體的起始位置的視頻幀的偏移量存儲在該頁體對應的頁頭內(nèi)。
當存儲介質(zhì)接收到實時視頻后,首先將接收到的實時視頻進行分割,將實時視頻分割為一幀一幀連續(xù)的圖像,每一幀圖像稱為一個視頻幀,然后將分割后得到的視頻以視頻幀為單位進行存儲,將上述視頻幀存儲在頁體內(nèi)。
其中,上述一個頁體內(nèi)可以存儲有一個或者多個視頻幀,還可以是一個視頻幀占據(jù)多個頁體。
當將視頻幀存儲在頁體內(nèi)后,需要確定每個視頻幀在存儲塊內(nèi)的偏移量,上述偏移量指的是每個視頻幀的存儲地址與存儲塊的起始存儲地址之間的間隔,上述間隔可以是字節(jié)的偏移,因此,將每個視頻幀與存儲塊的起始存儲位置之間的字節(jié)偏移確定為每個視頻幀在存儲塊內(nèi)的偏移量。
當確定出每個視頻幀在存儲塊內(nèi)的偏移量之后,將占據(jù)頁體的起始位置的視頻幀的偏移量存儲在頁體對應的頁頭內(nèi),具體包括:
當視頻幀的幀頭占據(jù)頁體的起始位置時,將上述視頻幀的偏移量存儲在頁體對應的頁頭內(nèi);當視頻幀的幀頭未占據(jù)頁體的起始位置,且視頻幀存儲在多個頁框內(nèi)時,將該視頻幀的偏移量存儲在該視頻幀占據(jù)起始位置的頁體對應的頁頭內(nèi)。
為了更清楚的介紹上述將占據(jù)頁體的起始位置的視頻幀的偏移量存儲在頁體對應的頁頭內(nèi),下面將以其中一個存儲塊為例進行詳細說明。
如圖2所示為存儲塊210內(nèi)的頁框的示意圖,圖2只是畫出了存儲塊210內(nèi)的幾個四個頁框,并沒有限定存儲塊210內(nèi)的頁框的具體個數(shù),在圖2中,210為存儲介質(zhì)中的任意一個存儲塊,220為頁框的頁頭,230為頁框的頁體,將存儲塊210劃分成了若干個頁框,當接收到實時視頻后,將實時視頻以視頻幀為單位存儲在頁體內(nèi),實時視頻中的第一個視頻幀,簡稱為幀1,存儲在第一個頁框和第二個頁框中,且?guī)?的幀頭占據(jù)了第一個頁體230的起始位置,因此第一個頁框的頁頭220存儲幀1在存儲塊210內(nèi)的偏移量,由于幀1還有一部分存儲在第二個頁框的頁體內(nèi),且?guī)?占據(jù)了第二個頁框的頁體230的起始位置,因此,第二個頁框的頁頭220存儲幀1在存儲塊210內(nèi)的偏移量,第二個視頻幀,簡稱為幀2,存儲在第二個頁框、第三個頁框及第四個頁框內(nèi),且?guī)?的幀頭沒有占據(jù)第二個頁框的頁體230的起始位置,因此,第二個頁框的頁頭220不存儲幀2在存儲塊210內(nèi)的偏移量,但是幀2占據(jù)了第三個頁框的頁體230及第四個頁框的頁體230的起始位置,因此第三個頁框的頁頭220及第四個頁框的頁頭220均存儲幀2在存儲塊210內(nèi)的偏移量,第三個視頻幀(簡稱幀3)及四個視頻幀(簡稱幀4)均沒有占據(jù)第四個頁框的頁體230的起始位置,因此,第四個頁框的頁頭220不存儲幀3和幀4在存儲塊210內(nèi)的偏移量。
上述將視頻幀的偏移量存儲在頁體對應的頁頭內(nèi)后,還需要生成上述存儲塊的塊索引文件,具體過程包括:
獲取存儲塊內(nèi)存儲的實時視頻的視頻幀信息,該視頻幀信息包括視頻幀的幀號、視頻幀的實際發(fā)生時間、視頻幀在存儲塊內(nèi)的偏移量、視頻幀的大小及關鍵幀標識;根據(jù)上述視頻幀信息,生成存儲塊的塊索引文件。
將上述視頻幀存儲在存儲塊內(nèi)后,將視頻幀按照存儲的順序進行編號,得到該視頻幀的唯一編碼(Identity,ID),該ID作為對應的視頻幀的幀號;上述實時視頻中每一個視頻幀均有一個實際發(fā)生時間,該實際發(fā)生時間指的是攝像機等設備錄制該視頻幀的時間,當按照時間進行視頻檢索時,通過視頻幀的實際發(fā)生時間可以實現(xiàn)視頻的快速定位;視頻幀在存儲塊內(nèi)的偏移量指的是視頻幀相對于存儲塊的起始位置的偏移量,該偏移量指的是視頻幀與存儲塊的起始位置之間的字節(jié)偏移;上述視頻幀的大小指的是該視頻幀實際的占用空間,上述關鍵幀標識記錄當前視頻幀是否為關鍵幀,如果是關鍵幀則記錄該關鍵幀的信息。
將上述獲取的視頻幀信息,存儲在某一個數(shù)據(jù)庫或者文件夾中,確定為該存儲塊的塊索引文件。
本發(fā)明實施例提供的實時視頻存儲方法,存儲塊包括多個頁框,每個頁框包括頁頭和頁體,將接收到的實時視頻以視頻幀為單位存儲在頁體內(nèi),將占據(jù)頁體的起始位置的視頻幀的偏移量存儲在頁體對應的頁頭內(nèi),通過按頁框可以實現(xiàn)實時視頻的檢索,因此,即使存儲塊索引失效時,也能夠?qū)崿F(xiàn)實時視頻的快速檢索。
實施例2
本發(fā)明實施例提供了一種實時視頻檢索方法,如圖3所示,包括步驟S310-S330,具體如下。
S310,確定存儲塊包括的頁框的個數(shù),根據(jù)頁框的個數(shù)、存儲塊內(nèi)存儲的實時視頻的時長以及待檢索視頻的時間,采用線性比例的方法定位出待檢索視頻所在的頁框。
上述待檢索視頻的時間指的是待檢索視頻的實際發(fā)生時間,即該待檢索視頻幀的實際采集時間。
上述存儲塊包括的頁框的個數(shù)可以根據(jù)存儲塊的容量及頁框的容量,通過存儲塊的容量/頁框的容量計算得出。
上述存儲塊內(nèi)存儲的實時視頻的時長指的是上述存儲塊內(nèi)存儲的實時視頻的總時間,比如說,上述存儲塊內(nèi)存儲了1個小時的實時視頻,當然,存儲的時長還可以是其它數(shù)值,本發(fā)明實施例并不限定上述時長的具體數(shù)值。
由于實時視頻具有穩(wěn)定碼率的特性,因此可以采用線性比例的方法定位出待檢索視頻所在的頁框,具體包括:
根據(jù)頁框的個數(shù)、存儲塊內(nèi)存儲的視頻的時長及待檢索視頻的時間,通過公式(1)計算待檢索視頻所在的頁框;
其中,在公式(1)中,P為待檢索視頻所在的頁框,M為頁框的個數(shù),t為存儲塊內(nèi)存儲的視頻的時長,t1為待檢索視頻的時間。
通過上述方法可以定位出待檢索視頻所在的頁框,比如說,上述存儲塊被分割成了100萬個頁框,該存儲塊內(nèi)存儲了1個小時的視頻,待檢索的視頻為第37分56秒的,因此通過上述公式(1)可以定位出該待檢索視頻所在的頁框為第632222個頁框。
上述只是舉例說明采用公式(1)定位出待檢索視頻所在的頁框的具體過程,并沒有限定上述存儲塊內(nèi)頁框的個數(shù)、存儲塊內(nèi)存儲的實時視頻的時長以及待檢索視頻的時間。
S320,根據(jù)頁框的頁頭獲取上述頁頭對應的頁體內(nèi)的視頻幀及視頻幀信息,該視頻幀信息包括視頻幀的時間。
當定位出待檢索視頻所在的頁框后,在該頁框的頁頭內(nèi)存儲有占據(jù)該頁框的頁體的起始位置的視頻幀的偏移量,根據(jù)該頁框的頁頭可以定位出占據(jù)該頁體的起始位置的視頻幀,并視頻幀獲取該視頻幀的視頻幀信息,該視頻幀信息包括該視頻幀的時間,即攝像機等設備采集該視頻幀是的實際發(fā)生時間。
S330,將上述視頻幀信息與待檢索視頻的時間進行比對,根據(jù)視頻幀信息與待檢索視頻的時間的偏差,以該視頻幀為起始位置繼續(xù)采用線性比例的方法進行檢索,直至檢索出與待檢索視頻的時間相匹配的視頻幀。
當定位出上述視頻幀后,將上述視頻幀的時間與待檢索視頻的時間進行比對,如果兩者的時間一致,這說明上述獲取的視頻幀就是待檢索的視頻;如果上述視頻幀的時間與待檢索視頻的時間存在偏差,則計算兩者之間的時間偏差,如果兩者之間的時間偏差很小,即待檢索視頻就在當前定位出的頁框的前兩個或者后兩個頁框內(nèi)時,這時,直接遍歷當前頁框的前面兩個頁框或者后面兩個頁框,從而檢索出與待檢索視頻的時間相匹配的視頻幀,如果兩者之間的偏差較大,根據(jù)上述時間偏差向前或者向后繼續(xù)采用線性比例的方法進行頁框的定位,直到檢索到與待檢索的視頻的時間相匹配的視頻幀。
比如說,當前定位的視頻幀的時間為30分,而待檢索視頻的時間為37分56秒,這時以30分的位置為起始位置,向后繼續(xù)采用上述線性比例的方法定位待檢索視頻所在的頁框,此處只是舉例進行說明,并沒有限定上述當前定位的視頻幀的時間及待檢索視頻的時間。
本發(fā)明實施例提供的實時視頻檢索方法,可以采用線性比例的方法按頁框進行實時視頻檢索,且檢索效率高,在塊索引文件異常時,也能夠?qū)崿F(xiàn)視頻的快速檢索。
實時例3
本發(fā)明實施例提供了一種實時視頻存儲裝置,該裝置用于執(zhí)行上述實施例1所提供的實時視頻存儲方法。
如圖4所示,本發(fā)明實施例提供的實時視頻存儲裝置,包括選擇模塊410和存儲模塊420;
上述選擇模塊410,用于從存儲介質(zhì)中選擇用于存儲實時視頻的存儲塊,該存儲塊包括多個頁框,每個頁框包括頁頭和頁體;
上述存儲模塊420,用于將接收的實時視頻以視頻幀為單位存儲在頁體內(nèi),確定每個視頻幀在存儲塊內(nèi)的偏移量,將占據(jù)頁體的起始位置的視頻幀的偏移量存儲在上述頁體對應的頁頭內(nèi)。
其中,上述存儲模塊將占據(jù)頁體的起始位置的視頻幀的偏移量存儲在上述頁體對應的頁頭內(nèi),是通過第一存儲單元和第二存儲單元來實現(xiàn)的,具體包括:
上述第一存儲單元,用于當視頻幀的幀頭占據(jù)頁體的起始位置時,將視頻幀的偏移量存儲在頁體對應的頁頭內(nèi);上述第二存儲單元,用于當視頻幀的幀頭未占據(jù)頁體的起始位置,且視頻幀存儲在多個頁框內(nèi)時,將視頻幀的偏移量存儲在視頻幀占據(jù)起始位置的頁體對應的頁頭內(nèi)。
當存儲模塊420將占據(jù)頁體的起始位置的視頻幀的偏移量存儲在上述頁體對應的頁頭內(nèi)之后,還需要生成存儲塊的塊索引文件,是通過獲取模塊和生成模塊實現(xiàn)的,具體包括:
上述獲取模塊,用于獲取存儲塊內(nèi)存儲的實時視頻的視頻幀信息,該視頻幀信息包括視頻幀的幀號、視頻幀的實際發(fā)生時間、視頻幀在存儲塊內(nèi)的偏移量、視頻幀的大小及關鍵幀標識;上述生成模塊,用于根據(jù)上述視頻幀信息,生成存儲塊的塊索引文件。
其中,上述選擇模塊從存儲介質(zhì)中選擇用于存儲實時視頻的存儲塊是通過第一選擇單元和第二選擇單元來實現(xiàn)的,具體包括:
上述第一選擇單元,用于從存儲介質(zhì)的無效塊集合中選擇用于存儲實時視頻的存儲塊,該無效塊集合用于放置存儲的實時視頻超過預設時間的存儲塊;上述第二選擇單元,用于當上述無效塊集合中不存在存儲塊時,從上述存儲介質(zhì)的有效塊集合中選擇存儲的實時視頻的時間最長的存儲塊,上述有效塊集合用于放置存儲的實時視頻沒有超過上述預設時間的存儲塊。
本發(fā)明實施例提供的實時視頻存儲裝置,存儲塊包括多個頁框,每個頁框包括頁頭和頁體,將接收到的實時視頻以視頻幀為單位存儲在頁體內(nèi),將占據(jù)頁體的起始位置的視頻幀的偏移量存儲在頁體對應的頁頭內(nèi),通過按頁框可以實現(xiàn)實時視頻的檢索,因此,即使存儲塊索引失效時,也能夠?qū)崿F(xiàn)實時視頻的快速檢索。
實施例4
本發(fā)明實施例提供了一種實時視頻檢索裝置,該裝置用于執(zhí)行上述實施例2提供的實時視頻檢索方法。
如圖5所示,本發(fā)明實施例提供的實時視頻檢索裝置,包括定位模塊510、獲取模塊520和檢索模塊530;
上述定位模塊510,用于確定存儲塊包括的頁框的個數(shù),根據(jù)頁框的個數(shù)、存儲塊內(nèi)存儲的實時視頻的時長及待檢索視頻的時間,采用限定比例的方法定位出上述待檢索視頻所在的頁框;
上述獲取模塊520,用于根據(jù)上述頁框的頁頭獲取該頁頭對應的頁體內(nèi)的視頻幀及視頻幀信息,該視頻幀信息包括該視頻幀的時間;
上述檢索模塊530,用于將上述視頻幀信息與待檢索視頻的時間進行比對,根據(jù)上述視頻幀信息與待檢索視頻的時間的偏差,以上述視頻幀為起始位置繼續(xù)采用線性比例的方式進行檢索,直至檢索出與待檢索視頻的時間相匹配的視頻幀。
上述待檢索視頻的時間指的是待檢索視頻的實際發(fā)生時間,即該待檢索視頻幀的實際采集時間。
上述存儲塊包括的頁框的個數(shù)可以根據(jù)存儲塊的容量及頁框的容量,通過存儲塊的容量/頁框的容量計算得出。
上述存儲塊內(nèi)存儲的實時視頻的時長指的是上述存儲塊內(nèi)存儲的實時視頻的總時間,比如說,上述存儲塊內(nèi)存儲了1個小時的實時視頻,當然,存儲的時長還可以是其它數(shù)值,本發(fā)明實施例并不限定上述時長的具體數(shù)值。
本發(fā)明實施例提供的實時視頻檢索裝置,可以采用線性比例的方法按頁框進行實時視頻檢索,且檢索效率高,在塊索引文件異常時,也能夠?qū)崿F(xiàn)視頻的快速檢索。
本發(fā)明實施例所提供的實時視頻存儲裝置和實時視頻檢索裝置可以為設備上的特定硬件或者安裝于設備上的軟件或固件等。本發(fā)明實施例所提供的裝置,其實現(xiàn)原理及產(chǎn)生的技術(shù)效果和前述方法實施例相同,為簡要描述,裝置實施例部分未提及之處,可參考前述方法實施例中相應內(nèi)容。所屬領域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,前述描述的系統(tǒng)、裝置和單元的具體工作過程,均可以參考上述方法實施例中的對應過程,在此不再贅述。
在本發(fā)明所提供的實施例中,應該理解到,所揭露裝置和方法,可以通過其它的方式實現(xiàn)。以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,又例如,多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些通信接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明提供的實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋,此外,術(shù)語“第一”、“第二”、“第三”等僅用于區(qū)分描述,而不能理解為指示或暗示相對重要性。
最后應說明的是:以上所述實施例,僅為本發(fā)明的具體實施方式,用以說明本發(fā)明的技術(shù)方案,而非對其限制,本發(fā)明的保護范圍并不局限于此,盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術(shù)人員應當理解:任何熟悉本技術(shù)領域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),其依然可以對前述實施例所記載的技術(shù)方案進行修改或可輕易想到變化,或者對其中部分技術(shù)特征進行等同替換;而這些修改、變化或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明實施例技術(shù)方案的精神和范圍。都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應以所述權(quán)利要求的保護范圍為準。