本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種視頻流的存儲方法、讀取方法及裝置。
背景技術(shù):
隨著生活水平的提高,越來越多的視頻涌入人們的生活。隨著海量視頻的產(chǎn)生,關(guān)于如何提高視頻的存儲效率成為一大難題。眾所周知,視頻的格式種類多種多樣,在眾多種類的格式中,對于實時視頻(視頻流)的存儲效率的提高尤為重要。
然而,現(xiàn)有技術(shù)的在存儲視頻流時,往往是按照視頻流發(fā)來的順序依次逐幀進(jìn)行存儲,這導(dǎo)致對數(shù)據(jù)量較大的視頻流存儲較為緩慢,特別是在面臨大量視頻流均需存儲時,還可能導(dǎo)致系統(tǒng)運行緩慢甚至癱瘓。
針對上述的問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種視頻流的存儲方法、讀取方法及裝置,以至少解決由于現(xiàn)有技術(shù)在存儲視頻流時是按照視頻流發(fā)來的順序依次逐幀進(jìn)行存儲造成的視頻流存儲效率較低的技術(shù)問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種視頻流的存儲方法,應(yīng)用于視頻流的存儲裝置,包括:將獲取到的視頻流分離為I幀數(shù)據(jù)以及與所述I幀數(shù)據(jù)對應(yīng)的非I幀數(shù)據(jù),其中,所述非I幀數(shù)據(jù)包含所述視頻流中除所述I幀數(shù)據(jù)以外的數(shù)據(jù);獲取由數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中;將所述存儲地址添加至所述I幀數(shù)據(jù)中;將包含有所述存儲地址的所述I幀數(shù)據(jù)存儲至所述數(shù)據(jù)存儲服務(wù)器。
進(jìn)一步地,在將包含有所述存儲地址的所述I幀數(shù)據(jù)存儲至所述數(shù)據(jù)存儲服務(wù)器之前,所述方法還包括:計算包含有所述存儲地址的所述I幀數(shù)據(jù)的校驗值,其中,所述校驗值用于在包含有所述存儲地址的所述I幀數(shù)據(jù)丟失的情況下,恢復(fù)包含有所述存儲地址的所述I幀數(shù)據(jù);其中,所述將包含有所述存儲地址的所述I幀數(shù)據(jù)存儲 至所述數(shù)據(jù)存儲服務(wù)器,包括:將包含有所述存儲地址的所述I幀數(shù)據(jù)以及所述校驗值存儲至所述數(shù)據(jù)存儲服務(wù)器。
進(jìn)一步地,所述計算包含有所述存儲地址的所述I幀數(shù)據(jù)的校驗值,包括:依據(jù)兩種存儲的奇偶校驗碼的磁盤結(jié)構(gòu)RAID-6算法對包含有所述存儲地址的所述I幀數(shù)據(jù)進(jìn)行計算,得到包含有所述存儲地址的所述I幀數(shù)據(jù)的所述校驗值。
進(jìn)一步地,所述獲取由數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中,包括:發(fā)送存儲地址請求至元數(shù)據(jù)服務(wù)器,其中,由所述元數(shù)據(jù)服務(wù)器向所述數(shù)據(jù)存儲服務(wù)器請求為所述非I幀數(shù)據(jù)分配所述存儲地址;接收所述元數(shù)據(jù)服務(wù)器響應(yīng)于所述存儲地址請求所返回的所述存儲地址;依據(jù)所述存儲地址,將所述非I幀數(shù)據(jù)寫入所述數(shù)據(jù)存儲服務(wù)器中所述存儲地址所指向的存儲空間;將已寫入所述數(shù)據(jù)存儲服務(wù)器的所述非I幀數(shù)據(jù)的數(shù)據(jù)量上報至所述元數(shù)據(jù)服務(wù)器。
進(jìn)一步地,在獲取由數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中之前,所述方法還包括:依據(jù)分布式奇偶校驗的獨立磁盤結(jié)構(gòu)RAID-5算法對所述非I幀數(shù)據(jù)進(jìn)行計算,得到所述非I幀數(shù)據(jù)的異或校驗數(shù)據(jù),所述異或校驗數(shù)據(jù)用于在所述非I幀數(shù)據(jù)丟失的情況下,恢復(fù)所述非I幀數(shù)據(jù);其中,所述獲取由數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中,包括:獲取由所述數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)以及所述異或校驗數(shù)據(jù)分配的所述存儲地址;將所述非I幀數(shù)據(jù)以及所述異或校驗數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種視頻流的讀取方法,應(yīng)用于視頻流的讀取裝置,包括:獲取視頻流的I幀數(shù)據(jù)的存儲地址;依據(jù)所述I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取所述I幀數(shù)據(jù);從所述I幀數(shù)據(jù)中解析出所述視頻流的非I幀數(shù)據(jù)的存儲地址;依據(jù)所述非I幀數(shù)據(jù)的存儲地址,從所述數(shù)據(jù)存儲服務(wù)器中讀取所述非I幀數(shù)據(jù),其中,所述非I幀數(shù)據(jù)包含所述視頻流中除所述I幀數(shù)據(jù)以外的數(shù)據(jù);將所述I幀數(shù)據(jù)及所述非I幀數(shù)據(jù)聚合為所述視頻流。
進(jìn)一步地,在依據(jù)所述I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取所述I幀數(shù)據(jù)之后,從所述I幀數(shù)據(jù)中解析出所述視頻流的非I幀數(shù)據(jù)的存儲地址之前,所述方法還包括:從所述數(shù)據(jù)存儲服務(wù)器中讀取所述I幀數(shù)據(jù)的校驗值,所述校驗值為預(yù)先依據(jù)兩種存儲的奇偶校驗碼的磁盤結(jié)構(gòu)RAID-6算法對所述I幀數(shù)據(jù)進(jìn)行計算得到的;對所述I幀數(shù)據(jù)進(jìn)行校驗,其中,在校驗出所述I幀數(shù)據(jù)丟失的情況下,依據(jù)所述校 驗值恢復(fù)所述I幀數(shù)據(jù)。
進(jìn)一步地,在依據(jù)所述非I幀數(shù)據(jù)的存儲地址,從所述數(shù)據(jù)存儲服務(wù)器中讀取所述非I幀數(shù)據(jù)之后,將所述I幀數(shù)據(jù)及所述非I幀數(shù)據(jù)聚合為所述視頻流之前,所述方法還包括:從所述數(shù)據(jù)存儲服務(wù)器中讀取所述非I幀數(shù)據(jù)的異或校驗數(shù)據(jù),其中,所述異或校驗數(shù)據(jù)為預(yù)先依據(jù)分布式奇偶校驗的獨立磁盤結(jié)構(gòu)RAID-5算法對所述非I幀數(shù)據(jù)進(jìn)行計算得到的;對所述非I幀數(shù)據(jù)進(jìn)行校驗,其中,在校驗出所述非I幀數(shù)據(jù)丟失的情況下,依據(jù)所述異或校驗數(shù)據(jù)恢復(fù)所述非I幀數(shù)據(jù)。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種視頻流的存儲裝置,包括:數(shù)據(jù)分離單元,用于將獲取到的視頻流分離為I幀數(shù)據(jù)以及與所述I幀數(shù)據(jù)對應(yīng)的非I幀數(shù)據(jù),其中,所述非I幀數(shù)據(jù)包含所述視頻流中除所述I幀數(shù)據(jù)以外的數(shù)據(jù);數(shù)據(jù)下發(fā)單元,用于獲取由數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中;數(shù)據(jù)添加單元,用于將所述存儲地址添加至所述I幀數(shù)據(jù)中;所述數(shù)據(jù)下發(fā)單元,還用于將包含有所述存儲地址的所述I幀數(shù)據(jù)存儲至所述數(shù)據(jù)存儲服務(wù)器。
進(jìn)一步地,視頻流的存儲裝置還包括:第一計算單元,用于計算包含有所述存儲地址的所述I幀數(shù)據(jù)的校驗值,其中,所述校驗值用于在包含有所述存儲地址的所述I幀數(shù)據(jù)丟失的情況下,恢復(fù)包含有所述存儲地址的所述I幀數(shù)據(jù);其中,所述數(shù)據(jù)下發(fā)單元用于執(zhí)行以下步驟將包含有所述存儲地址的所述I幀數(shù)據(jù)存儲至所述數(shù)據(jù)存儲服務(wù)器:將包含有所述存儲地址的所述I幀數(shù)據(jù)以及所述校驗值存儲至所述數(shù)據(jù)存儲服務(wù)器。
進(jìn)一步地,所述第一計算單元用于執(zhí)行以下步驟計算包含有所述存儲地址的所述I幀數(shù)據(jù)的校驗值:依據(jù)兩種存儲的奇偶校驗碼的磁盤結(jié)構(gòu)RAID-6算法對包含有所述存儲地址的所述I幀數(shù)據(jù)進(jìn)行計算,得到包含有所述存儲地址的所述I幀數(shù)據(jù)的所述校驗值。
進(jìn)一步地,所述數(shù)據(jù)下發(fā)單元用于執(zhí)行以下步驟獲取由數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中:發(fā)送存儲地址請求至元數(shù)據(jù)服務(wù)器,其中,由所述元數(shù)據(jù)服務(wù)器向所述數(shù)據(jù)存儲服務(wù)器請求為所述非I幀數(shù)據(jù)分配所述存儲地址;接收所述元數(shù)據(jù)服務(wù)器響應(yīng)于所述存儲地址請求所返回的所述存儲地址;依據(jù)所述存儲地址,將所述非I幀數(shù)據(jù)寫入所述數(shù)據(jù)存儲服務(wù)器中所述存儲地址所指向的存儲空間;將已寫入所述數(shù)據(jù)存儲服務(wù)器的所述非I幀數(shù)據(jù)的數(shù)據(jù)量上報至所述元數(shù)據(jù)服務(wù)器。
進(jìn)一步地,視頻流的存儲裝置還包括:第二計算單元,用于依據(jù)分布式奇偶校驗的獨立磁盤結(jié)構(gòu)RAID-5算法對所述非I幀數(shù)據(jù)進(jìn)行計算,得到所述非I幀數(shù)據(jù)的異或校驗數(shù)據(jù),所述異或校驗數(shù)據(jù)用于在所述非I幀數(shù)據(jù)丟失的情況下,恢復(fù)所述非I幀數(shù)據(jù);其中,所述數(shù)據(jù)下發(fā)單元用于執(zhí)行以下步驟獲取由數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中:獲取由所述數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)以及所述異或校驗數(shù)據(jù)分配的所述存儲地址;將所述非I幀數(shù)據(jù)以及所述異或校驗數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種視頻流的讀取裝置,包括:獲取單元,用于獲取視頻流的I幀數(shù)據(jù)的存儲地址;第一讀取單元,用于依據(jù)所述I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取所述I幀數(shù)據(jù);解析單元,用于從所述I幀數(shù)據(jù)中解析出所述視頻流的非I幀數(shù)據(jù)的存儲地址;第二讀取單元,用于依據(jù)所述非I幀數(shù)據(jù)的存儲地址,從所述數(shù)據(jù)存儲服務(wù)器中讀取所述非I幀數(shù)據(jù),其中,所述非I幀數(shù)據(jù)包含所述視頻流中除所述I幀數(shù)據(jù)以外的數(shù)據(jù);聚合單元,用于將所述I幀數(shù)據(jù)及所述非I幀數(shù)據(jù)聚合為所述視頻流。
進(jìn)一步地,所述第一讀取單元,還用于從所述數(shù)據(jù)存儲服務(wù)器中讀取所述I幀數(shù)據(jù)的校驗值,所述校驗值為預(yù)先依據(jù)兩種存儲的奇偶校驗碼的磁盤結(jié)構(gòu)RAID-6算法對所述I幀數(shù)據(jù)進(jìn)行計算得到的;所述視頻流的讀取裝置還包括:第一校驗單元,用于對所述I幀數(shù)據(jù)進(jìn)行校驗,其中,在校驗出所述I幀數(shù)據(jù)丟失的情況下,依據(jù)所述校驗值恢復(fù)所述I幀數(shù)據(jù)。
進(jìn)一步地,所述第二讀取單元,還用于從所述數(shù)據(jù)存儲服務(wù)器中讀取所述非I幀數(shù)據(jù)的異或校驗數(shù)據(jù),其中,所述異或校驗數(shù)據(jù)為預(yù)先依據(jù)分布式奇偶校驗的獨立磁盤結(jié)構(gòu)RAID-5算法對所述非I幀數(shù)據(jù)進(jìn)行計算得到的;所述視頻流的讀取裝置還包括:第二校驗單元,用于對所述非I幀數(shù)據(jù)進(jìn)行校驗,其中,在校驗出所述非I幀數(shù)據(jù)丟失的情況下,依據(jù)所述異或校驗數(shù)據(jù)恢復(fù)所述非I幀數(shù)據(jù)。
在本發(fā)明實施例中,采用將獲取到的視頻流分離為I幀數(shù)據(jù)以及與I幀數(shù)據(jù)對應(yīng)的非I幀數(shù)據(jù),其中,非I幀數(shù)據(jù)包含視頻流中除I幀數(shù)據(jù)以外的數(shù)據(jù);獲取由數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配的存儲地址,并將非I幀數(shù)據(jù)存儲至存儲地址所指向的數(shù)據(jù)存儲服務(wù)器的存儲空間中;將存儲地址添加至I幀數(shù)據(jù)中;將包含有存儲地址的I幀數(shù)據(jù)存儲至數(shù)據(jù)存儲服務(wù)器的方式,通過將視頻流分離為I幀數(shù)據(jù)和非I幀數(shù)據(jù),在分離之后,為了建立I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,將獲取到的非I幀數(shù)據(jù)的存儲地址添加至I幀數(shù)據(jù)中,由于建立了I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,因此無 需按照現(xiàn)有技術(shù)只能先存I幀數(shù)據(jù)再存非I幀數(shù)據(jù)的方法,可以并行存儲I幀數(shù)據(jù)和非I幀數(shù)據(jù),達(dá)到了快速存儲視頻流的目的,從而實現(xiàn)了視頻流存儲效率較高的技術(shù)效果,進(jìn)而解決了由于現(xiàn)有技術(shù)在存儲視頻流時是按照視頻流發(fā)來的順序依次逐幀進(jìn)行存儲造成的視頻流存儲效率較低的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的一種可選的視頻流的存儲方法的流程示意圖;
圖2是根據(jù)本發(fā)明實施例的一種可選的視頻流的幀格式的結(jié)構(gòu)示意圖;
圖3是根據(jù)本發(fā)明實施例的一種可選的系統(tǒng)架構(gòu)示意圖;
圖4是根據(jù)本發(fā)明實施例的一種可選的視頻流的讀取方法的流程示意圖;
圖5是根據(jù)本發(fā)明實施例的一種可選的視頻流的存儲裝置的結(jié)構(gòu)示意圖;
圖6是根據(jù)本發(fā)明實施例的另一種可選的視頻流的存儲裝置的結(jié)構(gòu)示意圖;
圖7是根據(jù)本發(fā)明實施例的又一種可選的視頻流的存儲裝置的結(jié)構(gòu)示意圖;
圖8是根據(jù)本發(fā)明實施例的一種可選的視頻流的讀取裝置的結(jié)構(gòu)示意圖;
圖9是根據(jù)本發(fā)明實施例的另一種可選的視頻流的讀取裝置的結(jié)構(gòu)示意圖;
圖10是根據(jù)本發(fā)明實施例的又一種可選的視頻流的讀取裝置的結(jié)構(gòu)示意圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這 樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
實施例1
根據(jù)本發(fā)明實施例,提供了一種視頻流的存儲方法的方法實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機(jī)可執(zhí)行指令的計算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖1是根據(jù)本發(fā)明實施例的視頻流的存儲方法,該方法為視頻流的存儲裝置側(cè)的方法,如圖1所示,該方法包括如下步驟:
步驟S102,將獲取到的視頻流分離為I幀數(shù)據(jù)以及與I幀數(shù)據(jù)對應(yīng)的非I幀數(shù)據(jù),其中,非I幀數(shù)據(jù)包含視頻流中除I幀數(shù)據(jù)以外的數(shù)據(jù)。
本申請上述步驟S102中,視頻流可以是由監(jiān)控攝像頭實時拍攝傳輸來的數(shù)據(jù)。如圖2所示,本發(fā)明實施例中視頻流中包含I幀數(shù)據(jù)和非I幀數(shù)據(jù),其中,I幀數(shù)據(jù)(I frame)又稱為內(nèi)部畫面,I幀通常是每個GOP(Group of Picture,畫面組)的第一個幀,作為隨機(jī)訪問的參考點,可以當(dāng)成圖像。I幀數(shù)據(jù)也稱關(guān)鍵幀,它是幀間壓縮編碼的重要幀,解碼時僅用I幀數(shù)據(jù)就可重構(gòu)完整圖像。非I幀數(shù)據(jù)包括P幀數(shù)據(jù)和B幀數(shù)據(jù),P幀數(shù)據(jù)和B幀數(shù)據(jù)也可稱為參考幀,由前面的I幀預(yù)測而來,解碼時必須基于I幀數(shù)據(jù)才可重構(gòu)圖像。其中,視頻流的存儲裝置通過檢查幀首部確定幀類型。
仍如圖2所示,本發(fā)明實施例的視頻流的存儲方法,可以將視頻流分離為I幀數(shù)據(jù)以及非I幀數(shù)據(jù),在視頻流中包含多個I幀數(shù)據(jù)時,可以將多個I幀數(shù)據(jù)聚合(也稱按順序存放)為條帶,即如圖2中的DI1至DI6,其中,DI1至DI6與I幀數(shù)據(jù)一一對應(yīng),即DI1對應(yīng)第一個I幀數(shù)據(jù),DI2對應(yīng)第二個I幀數(shù)據(jù)等等,在視頻流中包含多個非I幀數(shù)據(jù)時,可以將多個非I幀數(shù)據(jù)聚合為條帶,即D1至D6,其中,D1至D6與非I幀數(shù)據(jù)一一對應(yīng),即D1對應(yīng)第一個非I幀數(shù)據(jù),D2對應(yīng)第二個非I幀數(shù)據(jù)等等。
例如,圖2中第一個I幀數(shù)據(jù)的大小為15K,第二個I幀數(shù)據(jù)的大小為9K,第三個I幀數(shù)據(jù)的大小是27K,第四個I幀數(shù)據(jù)的大小為30K,第五個I幀數(shù)據(jù)的大小為21K,第六個I幀數(shù)據(jù)的大小為11K,那么在將第一個I幀數(shù)據(jù)到第六個I幀數(shù)據(jù)聚合 為條帶的過程中,首先確定第一個I幀數(shù)據(jù)到第六個I幀數(shù)據(jù)中最大的I幀數(shù)據(jù)是第四個I幀數(shù)據(jù)(大小為30K),其次以30K(或大于30K)為基準(zhǔn),為每個I幀數(shù)據(jù)預(yù)留大小為30K的空間(即DI1至DI6,此時的DI1至DI6中并沒有數(shù)據(jù)),最后,將第一個I幀數(shù)據(jù)放置在DI1中,以此類推,將各個I幀數(shù)據(jù)按照順序放置在對應(yīng)的空間中。同樣地,將多個非I幀數(shù)據(jù)聚合為條帶的方法與將多個I幀數(shù)據(jù)聚合為條帶的方法類似。
步驟S104,獲取由數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配的存儲地址,并將非I幀數(shù)據(jù)存儲至存儲地址所指向的數(shù)據(jù)存儲服務(wù)器的存儲空間中。
本申請上述步驟S104中,由于I幀數(shù)據(jù)和非I幀數(shù)據(jù)具有時間相關(guān)性(即一個I幀數(shù)據(jù)與一組非I幀數(shù)據(jù)構(gòu)成一個GOP),讀取時需要重新組合,因此為了后續(xù)讀取視頻流時,能夠找到I幀數(shù)據(jù)對應(yīng)的非I幀數(shù)據(jù)并且無需向元數(shù)據(jù)服務(wù)器請求,減少信令開銷,本發(fā)明實施例的視頻流的存儲方法,在將視頻流分離為I幀數(shù)據(jù)以及非I幀數(shù)據(jù)之后,首先獲取由數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配的存儲地址,進(jìn)而將在I幀數(shù)據(jù)中添加該存儲地址。
需要說明的是,只要獲取到非I幀數(shù)據(jù)的存儲地址后,就可以執(zhí)行后續(xù)步驟S106及步驟S108,同時并行處理將非I幀數(shù)據(jù)存儲至存儲地址所指向的數(shù)據(jù)存儲服務(wù)器的存儲空間中,加快數(shù)據(jù)的存儲速度。
一種可選的實施方式,上述步驟S104,獲取由數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配的存儲地址,并將非I幀數(shù)據(jù)存儲至存儲地址所指向的數(shù)據(jù)存儲服務(wù)器的存儲空間中,可以包括:
步驟S10,發(fā)送存儲地址請求至元數(shù)據(jù)服務(wù)器,其中,由元數(shù)據(jù)服務(wù)器向數(shù)據(jù)存儲服務(wù)器請求為非I幀數(shù)據(jù)分配存儲地址。
本申請上述步驟S10中,在針對云存儲的系統(tǒng)架構(gòu)中,視頻流的存儲裝置在申請存儲空間時需要經(jīng)過元數(shù)據(jù)服務(wù)器,由元數(shù)據(jù)服務(wù)器向數(shù)據(jù)服務(wù)請求為非I幀數(shù)據(jù)分配存儲地址。
如圖3所示,為本實施方式的系統(tǒng)架構(gòu)圖。其中,視頻流的存儲裝置首先將包含有存儲地址請求的命令流發(fā)送至元數(shù)據(jù)服務(wù)器,其中,存儲地址請求中應(yīng)包含需存儲的非I幀數(shù)據(jù)的大小,進(jìn)而元數(shù)據(jù)服務(wù)器再將包含有存儲地址請求的命令流發(fā)送至數(shù)據(jù)存儲服務(wù)器,數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配存儲地址,并將包含有該存儲地址的命令流發(fā)送給元數(shù)據(jù)服務(wù)器,進(jìn)而元數(shù)據(jù)服務(wù)器將包含有該存儲地址的命令流轉(zhuǎn)發(fā)給視頻流的存儲裝置,視頻流的存儲裝置在獲取到存儲地址之后,可以依據(jù)存儲地址 將包含非I幀數(shù)據(jù)的數(shù)據(jù)流寫入數(shù)據(jù)存儲服務(wù)器,后續(xù)的I幀數(shù)據(jù)的存儲流程與之類似,此處不再贅述。
步驟S12,接收元數(shù)據(jù)服務(wù)器響應(yīng)于存儲地址請求所返回的存儲地址。
本申請上述步驟S12中,在數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配存儲地址后,視頻流的存儲裝置會接收到元數(shù)據(jù)服務(wù)器響應(yīng)于存儲地址請求所返回的非I幀數(shù)據(jù)的存儲地址。
步驟S14,依據(jù)存儲地址,將非I幀數(shù)據(jù)寫入數(shù)據(jù)存儲服務(wù)器中存儲地址所指向的存儲空間。
本申請上述步驟S14中,視頻流的存儲裝置在獲取到存儲地址之后,可以將非I幀數(shù)據(jù)直接寫入數(shù)據(jù)存儲服務(wù)器中。
步驟S16,將已寫入數(shù)據(jù)存儲服務(wù)器的非I幀數(shù)據(jù)的數(shù)據(jù)量上報至元數(shù)據(jù)服務(wù)器。
本申請上述步驟S16中,在將非I幀數(shù)據(jù)寫入數(shù)據(jù)存儲服務(wù)器之后,視頻流的存儲裝置需要將已寫入數(shù)據(jù)存儲服務(wù)器的非I幀數(shù)據(jù)的數(shù)據(jù)量上報至元數(shù)據(jù)服務(wù)器,以便元數(shù)據(jù)服務(wù)器記錄最終寫入的非I幀數(shù)據(jù)的大小。
步驟S106,將存儲地址添加至I幀數(shù)據(jù)中。
本申請上述步驟S106中,視頻流的存儲裝置在獲取到非I幀數(shù)據(jù)的存儲地址之后,可以將該存儲地址添加至與該非I幀數(shù)據(jù)對應(yīng)的I幀數(shù)據(jù)中,即添加后的I幀數(shù)據(jù)包括真實數(shù)據(jù)以及非I幀數(shù)據(jù)的存儲地址。
步驟S108,將包含有存儲地址的I幀數(shù)據(jù)存儲至數(shù)據(jù)存儲服務(wù)器。
本申請上述步驟S108中,基于上述步驟S106,視頻流的存儲裝置將包含有存儲地址的I幀數(shù)據(jù)存儲至數(shù)據(jù)存儲服務(wù)器。其中,將包含有存儲地址的I幀數(shù)據(jù)存儲至數(shù)據(jù)存儲服務(wù)器的方法與上述存儲非I幀數(shù)據(jù)的方法類似,即發(fā)送存儲地址請求至元數(shù)據(jù)服務(wù)器,其中,由元數(shù)據(jù)服務(wù)器向數(shù)據(jù)存儲服務(wù)器請求為包含有存儲地址的I幀數(shù)據(jù)分配存儲地址,存儲地址請求中應(yīng)包含需存儲的包含有存儲地址的I幀數(shù)據(jù)的大小;接收元數(shù)據(jù)服務(wù)器響應(yīng)于存儲地址請求所返回的存儲地址;依據(jù)存儲地址,將包含有存儲地址的I幀數(shù)據(jù)寫入數(shù)據(jù)存儲服務(wù)器中存儲地址所指向的存儲空間;將已寫入數(shù)據(jù)存儲服務(wù)器的包含有存儲地址的I幀數(shù)據(jù)的數(shù)據(jù)量上報至元數(shù)據(jù)服務(wù)器。
通過上述步驟,可以將視頻流分離為I幀數(shù)據(jù)和非I幀數(shù)據(jù),在分離之后,為了建立I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,將獲取到的非I幀數(shù)據(jù)的存儲地址添加至I 幀數(shù)據(jù)中,由于建立了I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,因此無需按照現(xiàn)有技術(shù)只能先存I幀數(shù)據(jù)再存非I幀數(shù)據(jù)的方法,可以并行存儲I幀數(shù)據(jù)和非I幀數(shù)據(jù),達(dá)到了快速存儲視頻流的目的,從而實現(xiàn)了視頻流存儲效率較高的技術(shù)效果,進(jìn)而解決了由于現(xiàn)有技術(shù)在存儲視頻流時是按照視頻流發(fā)來的順序依次逐幀進(jìn)行存儲造成的視頻流存儲效率較低的技術(shù)問題。
可選地,在將包含有存儲地址的I幀數(shù)據(jù)存儲至數(shù)據(jù)存儲服務(wù)器之前,本實施例的視頻流的存儲方法,還可以包括:
步驟S20,計算包含有存儲地址的I幀數(shù)據(jù)的校驗值,其中,校驗值用于在包含有存儲地址的I幀數(shù)據(jù)丟失的情況下,恢復(fù)包含有存儲地址的I幀數(shù)據(jù)。
本申請上述步驟S20中,為了基于不同的數(shù)據(jù)類型,提供不同的數(shù)據(jù)保護(hù)模式,增強(qiáng)數(shù)據(jù)的安全性,視頻流的存儲裝置可以通過計算包含有存儲地址的I幀數(shù)據(jù)的校驗值,實現(xiàn)對包含有存儲地址的I幀數(shù)據(jù)的保護(hù)。其中,校驗值用于在包含有存儲地址的I幀數(shù)據(jù)丟失的情況下,恢復(fù)包含有存儲地址的I幀數(shù)據(jù)。
可選地,計算包含有存儲地址的I幀數(shù)據(jù)的校驗值,包括:依據(jù)兩種存儲的奇偶校驗碼的磁盤結(jié)構(gòu)RAID-6算法對包含有存儲地址的I幀數(shù)據(jù)進(jìn)行計算,得到包含有存儲地址的I幀數(shù)據(jù)的校驗值。
其中,將包含有存儲地址的I幀數(shù)據(jù)存儲至數(shù)據(jù)存儲服務(wù)器,包括:將包含有存儲地址的I幀數(shù)據(jù)以及校驗值存儲至數(shù)據(jù)存儲服務(wù)器。
仍如圖2所示,在I幀數(shù)據(jù)的數(shù)量為多個的情況下,視頻流的存儲裝置可以計算出多個校驗值,校驗值的個數(shù)應(yīng)小于等于I幀數(shù)據(jù)的個數(shù),如圖2中的PI1和PI2,當(dāng)DI1至DI6中哪個I幀數(shù)據(jù)丟失時,可以通過校驗值恢復(fù)出丟失的I幀數(shù)據(jù),需要指出的是,校驗值可恢復(fù)的數(shù)據(jù)個數(shù)小于等于校驗值的個數(shù),即若計算出兩個校驗值,則最多可支持恢復(fù)兩個丟失的I幀數(shù)據(jù)。為了增加I幀數(shù)據(jù)的安全性,也可計算多個校驗值,均應(yīng)在本發(fā)明實施例的保護(hù)范圍之內(nèi)。
需要補(bǔ)充的是,為了提高I幀數(shù)據(jù)的安全性,本實施例的視頻流的存儲裝置還可以采用糾刪碼重構(gòu)或副本的方式對I幀數(shù)據(jù)進(jìn)行保護(hù)。
可選地,在獲取由數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配的存儲地址,并將非I幀數(shù)據(jù)存儲至存儲地址所指向的數(shù)據(jù)存儲服務(wù)器的存儲空間中之前,本實施例的視頻流的存儲方法,還可以包括:
步驟S30,依據(jù)分布式奇偶校驗的獨立磁盤結(jié)構(gòu)RAID-5算法對非I幀數(shù)據(jù)進(jìn)行計 算,得到非I幀數(shù)據(jù)的異或校驗數(shù)據(jù),異或校驗數(shù)據(jù)用于在非I幀數(shù)據(jù)丟失的情況下,恢復(fù)非I幀數(shù)據(jù)。
本申請上述步驟S30中,為了基于不同的數(shù)據(jù)類型,提供不同的數(shù)據(jù)保護(hù)模式,增強(qiáng)數(shù)據(jù)的安全性,視頻流的存儲裝置還可以依據(jù)分布式奇偶校驗的獨立磁盤結(jié)構(gòu)RAID-5算法為非I幀數(shù)據(jù)進(jìn)行保護(hù)。
其中,獲取由數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配的存儲地址,并將非I幀數(shù)據(jù)存儲至存儲地址所指向的數(shù)據(jù)存儲服務(wù)器的存儲空間中,包括:獲取由數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)以及異或校驗數(shù)據(jù)分配的存儲地址;將非I幀數(shù)據(jù)以及異或校驗數(shù)據(jù)存儲至存儲地址所指向的數(shù)據(jù)存儲服務(wù)器的存儲空間中。
仍如圖2所示,在非I幀數(shù)據(jù)的數(shù)量為多個的情況下,視頻流的存儲裝置可以計算出多個異或校驗數(shù)據(jù),異或校驗數(shù)據(jù)的個數(shù)應(yīng)小于等于非I幀數(shù)據(jù)的個數(shù),如圖2中的P1,當(dāng)D1至D6中哪個非I幀數(shù)據(jù)丟失時,可以通過異或校驗數(shù)據(jù)恢復(fù)出丟失的非I幀數(shù)據(jù),需要指出的是,異或校驗數(shù)據(jù)可恢復(fù)的數(shù)據(jù)個數(shù)小于等于異或校驗數(shù)據(jù)的個數(shù),即若計算出一個異或校驗數(shù)據(jù),則最多可支持恢復(fù)一個丟失的非I幀數(shù)據(jù)。為了增加非I幀數(shù)據(jù)的安全性,也可計算多個異或校驗數(shù)據(jù),均應(yīng)在本發(fā)明實施例的保護(hù)范圍之內(nèi)。
在本發(fā)明實施例中,采用將獲取到的視頻流分離為I幀數(shù)據(jù)以及與I幀數(shù)據(jù)對應(yīng)的非I幀數(shù)據(jù),其中,非I幀數(shù)據(jù)包含視頻流中除I幀數(shù)據(jù)以外的數(shù)據(jù);獲取由數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配的存儲地址,并將非I幀數(shù)據(jù)存儲至存儲地址所指向的數(shù)據(jù)存儲服務(wù)器的存儲空間中;將存儲地址添加至I幀數(shù)據(jù)中;將包含有存儲地址的I幀數(shù)據(jù)存儲至數(shù)據(jù)存儲服務(wù)器的方式,通過將視頻流分離為I幀數(shù)據(jù)和非I幀數(shù)據(jù),在分離之后,為了建立I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,將獲取到的非I幀數(shù)據(jù)的存儲地址添加至I幀數(shù)據(jù)中,由于建立了I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,因此無需按照現(xiàn)有技術(shù)只能先存I幀數(shù)據(jù)再存非I幀數(shù)據(jù)的方法,可以并行存儲I幀數(shù)據(jù)和非I幀數(shù)據(jù),達(dá)到了快速存儲視頻流的目的,從而實現(xiàn)了視頻流存儲效率較高的技術(shù)效果,進(jìn)而解決了由于現(xiàn)有技術(shù)在存儲視頻流時是按照視頻流發(fā)來的順序依次逐幀進(jìn)行存儲造成的視頻流存儲效率較低的技術(shù)問題。
實施例2
根據(jù)本發(fā)明實施例,提供了一種視頻流的讀取方法的方法實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機(jī)可執(zhí)行指令的計算機(jī)系統(tǒng)中執(zhí)行, 并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖4是根據(jù)本發(fā)明實施例的視頻流的讀取方法,該方法為視頻流的讀取裝置側(cè)的方法,如圖4所示,該方法包括如下步驟:
步驟S402,獲取視頻流的I幀數(shù)據(jù)的存儲地址。
本申請上述步驟S402中,依據(jù)上述的視頻流的存儲方法,本實施例對其對應(yīng)的視頻流的讀取方法進(jìn)行描述。在讀取視頻流的過程中,只需找到I幀數(shù)據(jù),即可以通過I幀數(shù)據(jù)中包含的非I幀數(shù)據(jù)的存儲地址找到非I幀數(shù)據(jù),無需多次向元數(shù)據(jù)服務(wù)器請求,減少信令開銷,提高讀取速率。在讀取視頻流的過程中,視頻流的讀取裝置首先可以向元數(shù)據(jù)服務(wù)器請求需讀取的I幀數(shù)據(jù)的存儲地址。
步驟S404,依據(jù)I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取I幀數(shù)據(jù)。
本申請上述步驟S404中,視頻流的讀取裝置根據(jù)獲取到的I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取I幀數(shù)據(jù)。其中,I幀數(shù)據(jù)包含有與其對應(yīng)的非I幀數(shù)據(jù)的存儲地址。
步驟S406,從I幀數(shù)據(jù)中解析出視頻流的非I幀數(shù)據(jù)的存儲地址。
本申請上述步驟S406中,視頻流的讀取裝置從讀取到的I幀數(shù)據(jù)中解析出視頻流的非I幀數(shù)據(jù)的存儲地址。
可選地,為了基于不同的數(shù)據(jù)類型,提供不同的數(shù)據(jù)保護(hù)模式,增強(qiáng)數(shù)據(jù)的安全性,在依據(jù)I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取I幀數(shù)據(jù)之后,從I幀數(shù)據(jù)中解析出視頻流的非I幀數(shù)據(jù)的存儲地址之前,方法還包括:從數(shù)據(jù)存儲服務(wù)器中讀取I幀數(shù)據(jù)的校驗值,校驗值為預(yù)先依據(jù)兩種存儲的奇偶校驗碼的磁盤結(jié)構(gòu)RAID-6算法對I幀數(shù)據(jù)進(jìn)行計算得到的;對I幀數(shù)據(jù)進(jìn)行校驗,其中,在校驗出I幀數(shù)據(jù)丟失的情況下,依據(jù)校驗值恢復(fù)I幀數(shù)據(jù)。
步驟S408,依據(jù)非I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取非I幀數(shù)據(jù),其中,非I幀數(shù)據(jù)包含視頻流中除I幀數(shù)據(jù)以外的數(shù)據(jù)。
本申請上述步驟S408中,視頻流的讀取裝置依據(jù)解析出的非I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取非I幀數(shù)據(jù),其中,非I幀數(shù)據(jù)包含視頻流中除I幀數(shù)據(jù)以外的數(shù)據(jù)。
步驟S410,將I幀數(shù)據(jù)及非I幀數(shù)據(jù)聚合為視頻流。
本申請上述步驟S410中,視頻流的讀取裝置將I幀數(shù)據(jù)及非I幀數(shù)據(jù)聚合為視頻流,此處聚合可以理解為按順序擺放。
可選地,為了基于不同的數(shù)據(jù)類型,提供不同的數(shù)據(jù)保護(hù)模式,增強(qiáng)數(shù)據(jù)的安全性,在依據(jù)非I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取非I幀數(shù)據(jù)之后,將I幀數(shù)據(jù)及非I幀數(shù)據(jù)聚合為視頻流之前,方法還包括:從數(shù)據(jù)存儲服務(wù)器中讀取非I幀數(shù)據(jù)的異或校驗數(shù)據(jù),其中,異或校驗數(shù)據(jù)為預(yù)先依據(jù)分布式奇偶校驗的獨立磁盤結(jié)構(gòu)RAID-5算法對非I幀數(shù)據(jù)進(jìn)行計算得到的;對非I幀數(shù)據(jù)進(jìn)行校驗,其中,在校驗出非I幀數(shù)據(jù)丟失的情況下,依據(jù)異或校驗數(shù)據(jù)恢復(fù)非I幀數(shù)據(jù)。
由上可知,本申請上述實施例所提供的方案,通過將視頻流分離為I幀數(shù)據(jù)和非I幀數(shù)據(jù),并在獲取到非I幀數(shù)據(jù)的存儲地址后將該存儲地址添加至I幀數(shù)據(jù)中,進(jìn)而可以只需找到I幀數(shù)據(jù)即可找到非I幀數(shù)據(jù),達(dá)到了無需多次請求元數(shù)據(jù)服務(wù)器目的,從而實現(xiàn)了減少信令開銷,提高讀取速率的技術(shù)效果。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例的方法。
實施例3
根據(jù)本發(fā)明實施例,還提供了一種用于實施上述方法實施例的裝置實施例,本申請上述實施例所提供的裝置可以在計算機(jī)終端上運行。
圖5是根據(jù)本申請實施例的視頻流的存儲裝置的結(jié)構(gòu)示意圖。
如圖5所示,該視頻流的存儲裝置可以包括數(shù)據(jù)分離單元502、數(shù)據(jù)下發(fā)單元504 以及數(shù)據(jù)添加單元506。
其中,數(shù)據(jù)分離單元502,用于將獲取到的視頻流分離為I幀數(shù)據(jù)以及與所述I幀數(shù)據(jù)對應(yīng)的非I幀數(shù)據(jù),其中,所述非I幀數(shù)據(jù)包含所述視頻流中除所述I幀數(shù)據(jù)以外的數(shù)據(jù);數(shù)據(jù)下發(fā)單元504,用于獲取由數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中;數(shù)據(jù)添加單元506,用于將所述存儲地址添加至所述I幀數(shù)據(jù)中;所述數(shù)據(jù)下發(fā)單元502,還用于將包含有所述存儲地址的所述I幀數(shù)據(jù)存儲至所述數(shù)據(jù)存儲服務(wù)器。
由上可知,本申請上述實施例三所提供的方案,通過將視頻流分離為I幀數(shù)據(jù)和非I幀數(shù)據(jù),在分離之后,為了建立I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,將獲取到的非I幀數(shù)據(jù)的存儲地址添加至I幀數(shù)據(jù)中,由于建立了I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,因此無需按照現(xiàn)有技術(shù)只能先存I幀數(shù)據(jù)再存非I幀數(shù)據(jù)的方法,可以并行存儲I幀數(shù)據(jù)和非I幀數(shù)據(jù),達(dá)到了快速存儲視頻流的目的,從而實現(xiàn)了視頻流存儲效率較高的技術(shù)效果,進(jìn)而解決了由于現(xiàn)有技術(shù)在存儲視頻流時是按照視頻流發(fā)來的順序依次逐幀進(jìn)行存儲造成的視頻流存儲效率較低的技術(shù)問題。
此處需要說明的是,上述數(shù)據(jù)分離單元502、數(shù)據(jù)下發(fā)單元504以及數(shù)據(jù)添加單元506對應(yīng)于實施例一中的步驟S102至步驟S108,三個模塊與對應(yīng)的步驟所實現(xiàn)的示例和應(yīng)用場景相同,但不限于上述實施例一所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運行在計算機(jī)終端中,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn)。
可選地,如圖6所示,視頻流的存儲裝置還包括:第一計算單元602。
第一計算單元602,用于計算包含有所述存儲地址的所述I幀數(shù)據(jù)的校驗值,其中,所述校驗值用于在包含有所述存儲地址的所述I幀數(shù)據(jù)丟失的情況下,恢復(fù)包含有所述存儲地址的所述I幀數(shù)據(jù);其中,所述數(shù)據(jù)下發(fā)單元504用于執(zhí)行以下步驟將包含有所述存儲地址的所述I幀數(shù)據(jù)存儲至所述數(shù)據(jù)存儲服務(wù)器:將包含有所述存儲地址的所述I幀數(shù)據(jù)以及所述校驗值存儲至所述數(shù)據(jù)存儲服務(wù)器。
可選地,所述第一計算單元602用于執(zhí)行以下步驟計算包含有所述存儲地址的所述I幀數(shù)據(jù)的校驗值:依據(jù)兩種存儲的奇偶校驗碼的磁盤結(jié)構(gòu)RAID-6算法對包含有所述存儲地址的所述I幀數(shù)據(jù)進(jìn)行計算,得到包含有所述存儲地址的所述I幀數(shù)據(jù)的所述校驗值。
可選地,所述數(shù)據(jù)下發(fā)單元504用于執(zhí)行以下步驟獲取由數(shù)據(jù)存儲服務(wù)器為所述 非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中:發(fā)送存儲地址請求至元數(shù)據(jù)服務(wù)器,其中,由所述元數(shù)據(jù)服務(wù)器向所述數(shù)據(jù)存儲服務(wù)器請求為所述非I幀數(shù)據(jù)分配所述存儲地址;接收所述元數(shù)據(jù)服務(wù)器響應(yīng)于所述存儲地址請求所返回的所述存儲地址;依據(jù)所述存儲地址,將所述非I幀數(shù)據(jù)寫入所述數(shù)據(jù)存儲服務(wù)器中所述存儲地址所指向的存儲空間;將已寫入所述數(shù)據(jù)存儲服務(wù)器的所述非I幀數(shù)據(jù)的數(shù)據(jù)量上報至所述元數(shù)據(jù)服務(wù)器。
可選地,如圖7所示,視頻流的存儲裝置還包括:第二計算單元702。
第二計算單元702,用于依據(jù)分布式奇偶校驗的獨立磁盤結(jié)構(gòu)RAID-5算法對所述非I幀數(shù)據(jù)進(jìn)行計算,得到所述非I幀數(shù)據(jù)的異或校驗數(shù)據(jù),所述異或校驗數(shù)據(jù)用于在所述非I幀數(shù)據(jù)丟失的情況下,恢復(fù)所述非I幀數(shù)據(jù);其中,所述數(shù)據(jù)下發(fā)單元504用于執(zhí)行以下步驟獲取由數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)分配的存儲地址,并將所述非I幀數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中:獲取由所述數(shù)據(jù)存儲服務(wù)器為所述非I幀數(shù)據(jù)以及所述異或校驗數(shù)據(jù)分配的所述存儲地址;將所述非I幀數(shù)據(jù)以及所述異或校驗數(shù)據(jù)存儲至所述存儲地址所指向的所述數(shù)據(jù)存儲服務(wù)器的存儲空間中。
在本發(fā)明實施例中,采用將獲取到的視頻流分離為I幀數(shù)據(jù)以及與I幀數(shù)據(jù)對應(yīng)的非I幀數(shù)據(jù),其中,非I幀數(shù)據(jù)包含視頻流中除I幀數(shù)據(jù)以外的數(shù)據(jù);獲取由數(shù)據(jù)存儲服務(wù)器為非I幀數(shù)據(jù)分配的存儲地址,并將非I幀數(shù)據(jù)存儲至存儲地址所指向的數(shù)據(jù)存儲服務(wù)器的存儲空間中;將存儲地址添加至I幀數(shù)據(jù)中;將包含有存儲地址的I幀數(shù)據(jù)存儲至數(shù)據(jù)存儲服務(wù)器的方式,通過將視頻流分離為I幀數(shù)據(jù)和非I幀數(shù)據(jù),在分離之后,為了建立I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,將獲取到的非I幀數(shù)據(jù)的存儲地址添加至I幀數(shù)據(jù)中,由于建立了I幀數(shù)據(jù)和非I幀數(shù)據(jù)的對應(yīng)關(guān)系,因此無需按照現(xiàn)有技術(shù)只能先存I幀數(shù)據(jù)再存非I幀數(shù)據(jù)的方法,可以并行存儲I幀數(shù)據(jù)和非I幀數(shù)據(jù),達(dá)到了快速存儲視頻流的目的,從而實現(xiàn)了視頻流存儲效率較高的技術(shù)效果,進(jìn)而解決了由于現(xiàn)有技術(shù)在存儲視頻流時是按照視頻流發(fā)來的順序依次逐幀進(jìn)行存儲造成的視頻流存儲效率較低的技術(shù)問題。
實施例4
根據(jù)本發(fā)明實施例,還提供了一種用于實施上述方法實施例的裝置實施例,本申請上述實施例所提供的裝置可以在計算機(jī)終端上運行。
圖8是根據(jù)本申請實施例的視頻流的讀取裝置的結(jié)構(gòu)示意圖。
如圖8所示,該視頻流的讀取裝置可以包括獲取單元802、第一讀取單元804、解析單元806、第二讀取單元808以及聚合單元810。
其中,獲取單元802,用于獲取視頻流的I幀數(shù)據(jù)的存儲地址;第一讀取單元804,用于依據(jù)所述I幀數(shù)據(jù)的存儲地址,從數(shù)據(jù)存儲服務(wù)器中讀取所述I幀數(shù)據(jù);解析單元806,用于從所述I幀數(shù)據(jù)中解析出所述視頻流的非I幀數(shù)據(jù)的存儲地址;第二讀取單元808,用于依據(jù)所述非I幀數(shù)據(jù)的存儲地址,從所述數(shù)據(jù)存儲服務(wù)器中讀取所述非I幀數(shù)據(jù),其中,所述非I幀數(shù)據(jù)包含所述視頻流中除所述I幀數(shù)據(jù)以外的數(shù)據(jù);聚合單元810,用于將所述I幀數(shù)據(jù)及所述非I幀數(shù)據(jù)聚合為所述視頻流。
由上可知,本申請上述實施例三所提供的方案,通過將視頻流分離為I幀數(shù)據(jù)和非I幀數(shù)據(jù),并在獲取到非I幀數(shù)據(jù)的存儲地址后將該存儲地址添加至I幀數(shù)據(jù)中,進(jìn)而可以只需找到I幀數(shù)據(jù)即可找到非I幀數(shù)據(jù),達(dá)到了無需多次請求元數(shù)據(jù)服務(wù)器目的,從而實現(xiàn)了減少信令開銷,提高讀取速率的技術(shù)效果。
此處需要說明的是,上述獲取單元802、第一讀取單元804、解析單元806、第二讀取單元808以及聚合單元810對應(yīng)于實施例二中的步驟S402至步驟S410,五個模塊與對應(yīng)的步驟所實現(xiàn)的示例和應(yīng)用場景相同,但不限于上述實施例二所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運行在計算機(jī)終端中,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn)。
可選地,所述第一讀取單元804,還用于從所述數(shù)據(jù)存儲服務(wù)器中讀取所述I幀數(shù)據(jù)的校驗值,所述校驗值為預(yù)先依據(jù)兩種存儲的奇偶校驗碼的磁盤結(jié)構(gòu)RAID-6算法對所述I幀數(shù)據(jù)進(jìn)行計算得到的。
如圖9所示,所述裝置還包括:第一校驗單元902,用于對所述I幀數(shù)據(jù)進(jìn)行校驗,其中,在校驗出所述I幀數(shù)據(jù)丟失的情況下,依據(jù)所述校驗值恢復(fù)所述I幀數(shù)據(jù)。
可選地,所述第二讀取單元808,還用于從所述數(shù)據(jù)存儲服務(wù)器中讀取所述非I幀數(shù)據(jù)的異或校驗數(shù)據(jù),其中,所述異或校驗數(shù)據(jù)為預(yù)先依據(jù)分布式奇偶校驗的獨立磁盤結(jié)構(gòu)RAID-5算法對所述非I幀數(shù)據(jù)進(jìn)行計算得到的。
如圖10所示,所述裝置還包括:第二校驗單元1002,用于對所述非I幀數(shù)據(jù)進(jìn)行校驗,其中,在校驗出所述非I幀數(shù)據(jù)丟失的情況下,依據(jù)所述異或校驗數(shù)據(jù)恢復(fù)所述非I幀數(shù)據(jù)。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有 詳述的部分,可以參見其他實施例的相關(guān)描述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可為個人計算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。