本發(fā)明涉及電子技術(shù),尤其涉及一種數(shù)據(jù)處理方法及設(shè)備。
背景技術(shù):
對于遠程編輯視頻而言,目前通用的緩存方法是首先通過遠程請求分片文件到本地,所述分片文件為視音頻合一的文件;然后本地通過緩存寫的方式將該文件保存在本地磁盤,當下次需要讀取該文件時,首先從本地文件查找,若有該文件,就從本地文件讀取解碼視音頻并播放。
以蘋果的HTTP流媒體直播(HTTP Live Streaming)協(xié)議為例,M3U8文件存放不同的分片文件,每一個分片文件相當于一個傳送流(Transport Stream,TS)。TS流的特點是沒有索引,不適合編輯的隨機訪問;在瀏覽視頻時需要從頭解析到尾,音頻重復讀取,不能多個IO設(shè)備協(xié)同工作,碎片文件太多,不利于緩存管理。再以微軟的平滑流(Smooth Streaming)協(xié)議為例,擴展名為ISM的文件存放不同碼率的信息,ISMC存放時間分片信息,ISMV存放具體的媒體信息,由于ISMC為單獨的一個索引文件,擴展了協(xié)議的復雜性,只能用于傳輸和播放,不適合編輯;因視音頻合一,在瀏覽視頻時音頻重復讀取,不能多個IO設(shè)備協(xié)同工作。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例為解決現(xiàn)有技術(shù)中存在的問題而提供一種數(shù)據(jù)處理方法及設(shè)備。
本發(fā)明實施例的技術(shù)方案是這樣實現(xiàn)的:
本發(fā)明實施例提供一種數(shù)據(jù)處理方法,所述方法包括:
接收數(shù)據(jù)文件的創(chuàng)建請求;
響應(yīng)所述創(chuàng)建請求,解析所述數(shù)據(jù)文件,獲得與所述數(shù)據(jù)文件相關(guān)的特征參數(shù);
根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到歸類結(jié)果;所述歸類結(jié)果包括視頻數(shù)據(jù)類型或音頻數(shù)據(jù)類型;
根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件;
對所述數(shù)據(jù)文件進行關(guān)鍵幀分片處理后存儲至所述緩存目錄文件。
上述方案中,所述特征參數(shù)包括數(shù)據(jù)類型和數(shù)據(jù)長度;所述數(shù)據(jù)類型為視頻數(shù)據(jù)或音頻數(shù)據(jù);
根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到歸類結(jié)果,包括:
所述特征參數(shù)的數(shù)據(jù)類型為視頻數(shù)據(jù),則所得到的歸類結(jié)果為視頻數(shù)據(jù)類型;所述特征參數(shù)的數(shù)據(jù)類型為音頻數(shù)據(jù),則所得到的歸類結(jié)果為音頻數(shù)據(jù)類型。
上述方案中,所述根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件,包括:
根據(jù)所述數(shù)據(jù)長度,寫入對應(yīng)所述數(shù)據(jù)長度倍數(shù)的空白字節(jié)到緩存,以獲得緩存目錄文件;
根據(jù)所述歸類結(jié)果為所述緩存目錄文件擴展相應(yīng)數(shù)據(jù)類型的擴展名。
上述方案中,所述對所述數(shù)據(jù)文件進行關(guān)鍵幀分片處理后存儲至所述緩存目錄文件之前,所述方法還包括:
檢測所述數(shù)據(jù)文件;
當所述數(shù)據(jù)文件未結(jié)束時,解析所述數(shù)據(jù)文件的當前幀數(shù)據(jù),構(gòu)建所述當前幀數(shù)據(jù)對應(yīng)的幀索引數(shù)據(jù);
保存所述當前幀數(shù)據(jù)及對應(yīng)的幀索引數(shù)據(jù)至所述緩存目錄文件。
上述方案中,所述對所述數(shù)據(jù)文件進行關(guān)鍵幀分片處理后存儲至所述緩存目錄文件,包括:
檢測所述數(shù)據(jù)文件的當前幀數(shù)據(jù);
當所述當前幀數(shù)據(jù)屬于關(guān)鍵幀數(shù)據(jù),在內(nèi)存中創(chuàng)建當前塊索引項,寫入當 前幀數(shù)據(jù)對應(yīng)的關(guān)鍵幀號和幀偏移量;
將所述當前塊索引項寫入所述緩存目錄文件的文件頭,并將所述當前幀之前的幀索引數(shù)據(jù)和幀數(shù)據(jù)寫入所述緩存目錄文件;
循環(huán)檢測所述數(shù)據(jù)文件,直至所述數(shù)據(jù)文件結(jié)束為止。
上述方案中,所述方法還包括:
當所述當前幀數(shù)據(jù)不屬于關(guān)鍵幀數(shù)據(jù),繼續(xù)檢測所述數(shù)據(jù)文件。
上述方案中,所述幀偏移量包括絕對幀偏移量和相對幀偏移量;
所述絕對幀偏移量為所述關(guān)鍵幀數(shù)據(jù)的起始偏移、所述相對幀偏移量及與所述關(guān)鍵幀相關(guān)的幀的大小之和。
本發(fā)明實施例還提供一種數(shù)據(jù)處理設(shè)備,所述數(shù)據(jù)處理設(shè)備包括接收模塊、解析模塊、歸類模塊、創(chuàng)建模塊和分片處理模塊;
所述接收模塊,用于接收數(shù)據(jù)文件的創(chuàng)建請求;
所述解析模塊,用于響應(yīng)所述創(chuàng)建請求,解析所述數(shù)據(jù)文件,獲得與所述數(shù)據(jù)文件相關(guān)的特征參數(shù);
所述歸類模塊,用于根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到歸類結(jié)果;所述歸類結(jié)果包括視頻數(shù)據(jù)類型或音頻數(shù)據(jù)類型;
所述創(chuàng)建模塊,用于根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件;
所述分片處理模塊,用于對所述數(shù)據(jù)文件進行關(guān)鍵幀分片處理后存儲至所述緩存目錄文件。
上述方案中,所述特征參數(shù)包括數(shù)據(jù)類型和數(shù)據(jù)長度;所述數(shù)據(jù)類型為視頻數(shù)據(jù)或音頻數(shù)據(jù);
所述歸類模塊根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到歸類結(jié)果,包括:所述特征參數(shù)的數(shù)據(jù)類型為視頻數(shù)據(jù),則所得到的歸類結(jié)果為視頻數(shù)據(jù)類型;所述特征參數(shù)的數(shù)據(jù)類型為音頻數(shù)據(jù),則所得到的歸類結(jié)果為音頻數(shù)據(jù)類型。
上述方案中,所述創(chuàng)建模塊包括第一寫入單元和擴展單元;
所述第一寫入單元,用于根據(jù)所述數(shù)據(jù)長度,寫入對應(yīng)所述數(shù)據(jù)長度倍數(shù)的空白字節(jié)到緩存,以獲得緩存目錄文件;
所述擴展單元,用于根據(jù)所述歸類結(jié)果為所述緩存目錄文件擴展相應(yīng)數(shù)據(jù)類型的擴展名。
上述方案中,所述數(shù)據(jù)處理設(shè)備還包括檢測模塊、構(gòu)建模塊和存儲模塊;
所述檢測模塊,用于檢測所述數(shù)據(jù)文件;
所述構(gòu)建模塊,用于當所述數(shù)據(jù)文件未結(jié)束時,解析所述數(shù)據(jù)文件的當前幀數(shù)據(jù),構(gòu)建所述當前幀數(shù)據(jù)對應(yīng)的幀索引數(shù)據(jù);
所述存儲模塊,用于保存所述當前幀數(shù)據(jù)及對應(yīng)的幀索引數(shù)據(jù)至所述緩存目錄文件。
上述方案中,所述分片處理模塊包括檢測單元、創(chuàng)建單元和第二寫入單元;
所述檢測單元,用于檢測所述數(shù)據(jù)文件的當前幀數(shù)據(jù);還用于循環(huán)檢測所述數(shù)據(jù)文件,直至所述數(shù)據(jù)文件結(jié)束為止。
所述創(chuàng)建單元,用于當所述當前幀數(shù)據(jù)屬于關(guān)鍵幀數(shù)據(jù),在內(nèi)存中創(chuàng)建當前塊索引項,寫入當前幀數(shù)據(jù)對應(yīng)的關(guān)鍵幀號和幀偏移量;
所述第二寫入單元,用于將所述當前塊索引項寫入所述緩存目錄文件的文件頭,并將所述當前幀之前的幀索引數(shù)據(jù)和幀數(shù)據(jù)寫入所述緩存目錄文件。
上述方案中,所述檢測單元,還用于當所述當前幀數(shù)據(jù)不屬于關(guān)鍵幀數(shù)據(jù),繼續(xù)檢測所述數(shù)據(jù)文件。
上述方案中,所述幀偏移量包括絕對幀偏移量和相對幀偏移量;
所述絕對幀偏移量為所述關(guān)鍵幀數(shù)據(jù)的起始偏移、所述相對幀偏移量及與所述關(guān)鍵幀相關(guān)的幀的大小之和。
本發(fā)明實施例中,接收并響應(yīng)數(shù)據(jù)文件的創(chuàng)建請求,解析所述數(shù)據(jù)文件,獲得與所述數(shù)據(jù)文件相關(guān)的特征參數(shù);再根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到包括視頻數(shù)據(jù)類型或音頻數(shù)據(jù)類型的歸類結(jié)果;進一步根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件;再對所述數(shù)據(jù)文件進行關(guān)鍵幀分片處理后存儲至所述緩存目錄文件。如此,通過本發(fā)明實施例數(shù)據(jù)處理方 法,得以實現(xiàn)對音視頻合一文件的分布式存放,有效避免非線性編輯軟件對IO設(shè)備的冗余訪問,提高IO設(shè)備的使用效率,以實現(xiàn)分布式讀取數(shù)據(jù)文件的快速響應(yīng)。
附圖說明
圖1為本發(fā)明實施例一數(shù)據(jù)處理方法的實現(xiàn)流程示意圖;
圖2為本發(fā)明實施例根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件的實現(xiàn)流程示意圖;
圖3為本發(fā)明實施例二數(shù)據(jù)處理方法的實現(xiàn)流程示意圖;
圖4為本發(fā)明實施例三數(shù)據(jù)處理方法的實現(xiàn)流程示意圖;
圖5為本發(fā)明實施例對應(yīng)于所述數(shù)據(jù)文件的二級索引存儲結(jié)構(gòu)圖;
圖6為本發(fā)明實施例數(shù)據(jù)處理設(shè)備的組成結(jié)構(gòu)示意圖;
圖7為本發(fā)明實施例數(shù)據(jù)處理方法的具體實現(xiàn)流程示意圖一;
圖8為本發(fā)明實施例數(shù)據(jù)處理方法的具體實現(xiàn)流程示意圖二;
圖9為本發(fā)明實施例分離文件分布式存儲的具體實現(xiàn)流程示意圖;
圖10為本發(fā)明實施例數(shù)據(jù)處理設(shè)備作為硬件實體的一個示例圖。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明的技術(shù)方案進一步詳細闡述。
方法實施例一:
圖1為本發(fā)明實施例一數(shù)據(jù)處理方法的實現(xiàn)流程示意圖,如圖1所示,所述方法包括:
步驟S101:接收數(shù)據(jù)文件的創(chuàng)建請求;
這里,所述數(shù)據(jù)文件可以是視頻數(shù)據(jù)文件或音頻數(shù)據(jù)文件。其中,所述視頻數(shù)據(jù)文件為包括圖片或動畫在內(nèi)的數(shù)據(jù)文件,如MP4格式的數(shù)據(jù)文件;所述音頻數(shù)據(jù)文件為僅包括聲音的數(shù)據(jù)文件,如MP3格式的數(shù)據(jù)文件。當終端或服務(wù)器接收到視頻數(shù)據(jù)文件的創(chuàng)建請求時,將執(zhí)行從音視頻合一的文件中分離視 頻數(shù)據(jù)文件,并按照視頻關(guān)鍵幀進行分片存儲;當終端或服務(wù)器接收到音頻數(shù)據(jù)文件的創(chuàng)建請求時,將執(zhí)行從音視頻合一的文件中分離音頻文件,并按照音頻關(guān)鍵幀進行分片存儲;如此,以實現(xiàn)對音視頻合一文件的分布式存放。
步驟S102:響應(yīng)所述創(chuàng)建請求,解析所述數(shù)據(jù)文件,獲得與所述數(shù)據(jù)文件相關(guān)的特征參數(shù);
其中,所述與所述數(shù)據(jù)文件相關(guān)的特征參數(shù)通常包括數(shù)據(jù)類型和數(shù)據(jù)長度;所述數(shù)據(jù)類型可以為視頻數(shù)據(jù)或音頻數(shù)據(jù)。
步驟S103:根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到歸類結(jié)果;
其中,所述歸類結(jié)果包括視頻數(shù)據(jù)類型或音頻數(shù)據(jù)類型。
這里,當所述特征參數(shù)的數(shù)據(jù)類型為視頻數(shù)據(jù)時,根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,所得到的歸類結(jié)果為視頻數(shù)據(jù)類型;當所述特征參數(shù)的數(shù)據(jù)類型為音頻數(shù)據(jù)時,根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,所得到的歸類結(jié)果為音頻數(shù)據(jù)類型。
步驟S104:根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件;
具體地,如圖2所示,根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件,包括:
步驟S1041:根據(jù)所述數(shù)據(jù)長度,寫入對應(yīng)所述數(shù)據(jù)長度倍數(shù)的空白字節(jié)到緩存,以獲得緩存目錄文件;
步驟S1042:根據(jù)所述歸類結(jié)果為所述緩存目錄文件擴展相應(yīng)數(shù)據(jù)類型的擴展名。
具體地,由于所述歸類結(jié)果包括視頻數(shù)據(jù)類型或音頻數(shù)據(jù)類型,故根據(jù)所述歸類結(jié)果為所述緩存目錄文件擴展相應(yīng)數(shù)據(jù)類型的擴展名可以包括:根據(jù)所述視頻數(shù)據(jù)類型為所述緩存目錄文件擴展視頻類型的擴展名,如.vdo,或根據(jù)所述音頻數(shù)據(jù)類型為所述緩存目錄文件擴展音頻類型的擴展名,如.ado。
步驟S105:對所述數(shù)據(jù)文件進行關(guān)鍵幀分片處理后存儲至所述緩存目錄文件。
其中,所述關(guān)鍵幀包括視頻關(guān)鍵幀和音頻關(guān)鍵幀。具體地,如果根據(jù)所述 特征參數(shù)對所述數(shù)據(jù)文件進行歸類所得到的歸類結(jié)果為視頻數(shù)據(jù)類型,則對所述數(shù)據(jù)文件進行視頻關(guān)鍵幀分片處理,并將得到的分片依次按照時間先后順序存儲至所述緩存目錄文件;如果根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類所得到的歸類結(jié)果為音頻數(shù)據(jù)類型,則對所述數(shù)據(jù)文件進行音頻關(guān)鍵幀分配處理,并將得到的分片依次按照時間先后順序存儲至所述緩存目錄文件。
采用本發(fā)明實施例的技術(shù)方案,接收并響應(yīng)數(shù)據(jù)文件的創(chuàng)建請求,解析所述數(shù)據(jù)文件,獲得與所述數(shù)據(jù)文件相關(guān)的特征參數(shù);再根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到包括視頻數(shù)據(jù)類型或音頻數(shù)據(jù)類型的歸類結(jié)果;進一步根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件;再對所述數(shù)據(jù)文件進行關(guān)鍵幀分片處理后存儲至所述緩存目錄文件。如此,得以實現(xiàn)對音視頻合一文件的分布式存放,有效避免非線性編輯軟件對IO設(shè)備的冗余訪問,提高IO設(shè)備的使用效率,以實現(xiàn)分布式讀取數(shù)據(jù)文件的快速響應(yīng)。
方法實施例二:
圖3為本發(fā)明實施例二數(shù)據(jù)處理方法的實現(xiàn)流程示意圖,如圖3所示,所述方法包括:
步驟S301:接收數(shù)據(jù)文件的創(chuàng)建請求;
步驟S302:響應(yīng)所述創(chuàng)建請求,解析所述數(shù)據(jù)文件,獲得與所述數(shù)據(jù)文件相關(guān)的特征參數(shù);
步驟S303:根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到歸類結(jié)果;所述歸類結(jié)果包括視頻數(shù)據(jù)類型或音頻數(shù)據(jù)類型;
步驟S304:根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件;
步驟S305:檢測所述數(shù)據(jù)文件;
具體地,在從內(nèi)存中存儲的視音頻合一的文件中讀取所述數(shù)據(jù)文件的過程中,對所述數(shù)據(jù)文件進行檢測,以確定所述數(shù)據(jù)文件是否讀取完成,即確定所述數(shù)據(jù)文件是否已結(jié)束。
步驟S306:當所述數(shù)據(jù)文件未結(jié)束時,解析所述數(shù)據(jù)文件的當前幀數(shù)據(jù), 構(gòu)建所述當前幀數(shù)據(jù)對應(yīng)的幀索引數(shù)據(jù);
步驟S307:保存所述當前幀數(shù)據(jù)及對應(yīng)的幀索引數(shù)據(jù)至所述緩存目錄文件;
這里,通過本發(fā)明實施例步驟S306~S307,能夠?qū)⑺鰯?shù)據(jù)文件按照時間先后順序通過每一幀數(shù)據(jù)對應(yīng)的幀索引數(shù)據(jù)緩存至所述緩存目錄文件,以實現(xiàn)對數(shù)據(jù)文件的一級緩存,為后續(xù)本發(fā)明實施例三的二級關(guān)鍵幀分片緩存奠定了基礎(chǔ)。
步驟S308:對所述數(shù)據(jù)文件進行關(guān)鍵幀分片處理后存儲至所述緩存目錄文件。
需要說明的是,本發(fā)明實施例二所述步驟S301~S304和步驟S308的具體實現(xiàn)過程與本發(fā)明實施例一所述步驟S101~S105相類似,為節(jié)省篇幅,這里不再贅述。
如此,采用本發(fā)明實施例二的技術(shù)方案,在實現(xiàn)對音視頻合一文件的分布式存放,有效避免非線性編輯軟件對IO設(shè)備的冗余訪問,提高IO設(shè)備的使用效率,以實現(xiàn)分布式讀取數(shù)據(jù)文件的快速響應(yīng)的基礎(chǔ)上,通過檢測所述數(shù)據(jù)文件,當所述數(shù)據(jù)文件未結(jié)束時,解析所述數(shù)據(jù)文件的當前幀數(shù)據(jù),構(gòu)建所述當前幀數(shù)據(jù)對應(yīng)的幀索引數(shù)據(jù);保存所述當前幀數(shù)據(jù)及對應(yīng)的幀索引數(shù)據(jù)至所述緩存目錄文件,以實現(xiàn)對數(shù)據(jù)文件的一級緩存,為后續(xù)的二級關(guān)鍵幀分片緩存奠定了基礎(chǔ)。
方法實施例三:
圖4為本發(fā)明實施例三數(shù)據(jù)處理方法的實現(xiàn)流程示意圖,如圖4所示,所述方法包括:
步驟S401:接收數(shù)據(jù)文件的創(chuàng)建請求;
步驟S402:響應(yīng)所述創(chuàng)建請求,解析所述數(shù)據(jù)文件,獲得與所述數(shù)據(jù)文件相關(guān)的特征參數(shù);
步驟S403:根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到歸類結(jié)果; 所述歸類結(jié)果包括視頻數(shù)據(jù)類型或音頻數(shù)據(jù)類型;
步驟S404:根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件;
需要說明的是,本發(fā)明實施例三所述步驟S401~S404的具體實現(xiàn)過程與本發(fā)明實施例一所述步驟S101~S104相類似,為節(jié)省篇幅,這里不再贅述。
步驟S405:檢測所述數(shù)據(jù)文件;
步驟S406:當所述數(shù)據(jù)文件未結(jié)束時,解析所述數(shù)據(jù)文件的當前幀數(shù)據(jù),構(gòu)建所述當前幀數(shù)據(jù)對應(yīng)的幀索引數(shù)據(jù);
步驟S407:保存所述當前幀數(shù)據(jù)及對應(yīng)的幀索引數(shù)據(jù)至所述緩存目錄文件;
需要說明的是,本發(fā)明實施例三所述步驟S405~S407的具體實現(xiàn)過程與本發(fā)明實施例二所述步驟S305~S307相類似,為節(jié)省篇幅,這里不再贅述。
步驟S408:檢測所述數(shù)據(jù)文件的當前幀數(shù)據(jù);
具體地,在保存所述當前數(shù)據(jù)及對應(yīng)的幀索引數(shù)據(jù)至所述緩存目錄文件,以完成對所述數(shù)據(jù)文件的一級緩存之后,進一步對所述數(shù)據(jù)文件的當前幀數(shù)據(jù)進行檢測,以確定所述當前幀數(shù)據(jù)是否屬于關(guān)鍵幀數(shù)據(jù)。當然,如果所述數(shù)據(jù)文件為視頻數(shù)據(jù)文件,則通過檢測來確定所述當前幀數(shù)據(jù)是否屬于視頻關(guān)鍵幀數(shù)據(jù),如果所述數(shù)據(jù)幀文件為音頻數(shù)據(jù)文件,則通過檢測來確定所述當前幀數(shù)據(jù)是否屬于音頻關(guān)鍵幀數(shù)據(jù)。
這里,當經(jīng)檢測確定所述數(shù)據(jù)文件的當前幀數(shù)據(jù)屬于關(guān)鍵幀數(shù)據(jù)時,繼續(xù)執(zhí)行后續(xù)步驟S409;當經(jīng)檢測確定所述當前幀數(shù)據(jù)不屬于關(guān)鍵幀數(shù)據(jù)時,繼續(xù)返回步驟S405重新檢測所述數(shù)據(jù)文件,以確定所述數(shù)據(jù)文件是否結(jié)束。
步驟S409:當所述當前幀數(shù)據(jù)屬于關(guān)鍵幀數(shù)據(jù),在內(nèi)存中創(chuàng)建當前塊chunk索引項,寫入當前幀數(shù)據(jù)對應(yīng)的關(guān)鍵幀號和幀偏移量;
這里,所述幀偏移量包括絕對幀偏移量和相對幀偏移量;所述絕對幀偏移量為所述關(guān)鍵幀數(shù)據(jù)的起始偏移、所述相對幀偏移量及與所述關(guān)鍵幀相關(guān)的幀的大小之和,即絕對幀偏移量frame offset=關(guān)鍵幀數(shù)據(jù)的起始偏移chunk offset+相對幀偏移量frame index size+與所述關(guān)鍵幀相關(guān)的幀的大小(key frame to current frame size)。
步驟S410:將所述當前塊索引項寫入所述緩存目錄文件的文件頭,并將所述當前幀之前的幀索引數(shù)據(jù)和幀數(shù)據(jù)寫入所述緩存目錄文件;
步驟S411:循環(huán)檢測所述數(shù)據(jù)文件,直至所述數(shù)據(jù)文件結(jié)束為止。
如此,采用本發(fā)明實施例三的技術(shù)方案,在本發(fā)明實施例二實現(xiàn)對數(shù)據(jù)文件的一級緩存的基礎(chǔ)上,通過檢測所述數(shù)據(jù)文件的當前幀數(shù)據(jù);當所述當前幀數(shù)據(jù)屬于關(guān)鍵幀數(shù)據(jù),在內(nèi)存中創(chuàng)建當前塊索引項,寫入當前幀數(shù)據(jù)對應(yīng)的關(guān)鍵幀號和幀偏移量;將所述當前塊索引項寫入所述緩存目錄文件的文件頭,并將所述當前幀之前的幀索引數(shù)據(jù)和幀數(shù)據(jù)寫入所述緩存目錄文件;循環(huán)檢測所述數(shù)據(jù)文件,直至所述數(shù)據(jù)文件結(jié)束為止,進一步得到對應(yīng)于所述數(shù)據(jù)文件的如圖5所示的二級索引存儲結(jié)構(gòu)圖。如此,得以實現(xiàn)對所述數(shù)據(jù)文件的二級關(guān)鍵幀分片緩存,進一步有效避免非線性編輯軟件對IO設(shè)備的冗余訪問,提高IO設(shè)備的使用效率,以實現(xiàn)分布式讀取數(shù)據(jù)文件的快速響應(yīng)。
設(shè)備實施例:
圖6為本發(fā)明實施例數(shù)據(jù)處理設(shè)備的組成結(jié)構(gòu)示意圖,所述數(shù)據(jù)處理設(shè)備可以為服務(wù)器,也可以為終端;如圖6所示,所述數(shù)據(jù)處理設(shè)備包括接收模塊601、解析模塊602、歸類模塊603、創(chuàng)建模塊604和分片處理模塊605;
所述接收模塊601,用于接收數(shù)據(jù)文件的創(chuàng)建請求;
所述解析模塊602,用于響應(yīng)所述創(chuàng)建請求,解析所述數(shù)據(jù)文件,獲得與所述數(shù)據(jù)文件相關(guān)的特征參數(shù);
其中,所述特征參數(shù)包括數(shù)據(jù)類型和數(shù)據(jù)長度;所述數(shù)據(jù)類型為視頻數(shù)據(jù)或音頻數(shù)據(jù)。
所述歸類模塊603,用于根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到歸類結(jié)果;所述歸類結(jié)果包括視頻數(shù)據(jù)類型或音頻數(shù)據(jù)類型;
這里,所述歸類模塊603根據(jù)所述特征參數(shù)對所述數(shù)據(jù)文件進行歸類,得到歸類結(jié)果,包括:所述特征參數(shù)的數(shù)據(jù)類型為視頻數(shù)據(jù),則所得到的歸類結(jié) 果為視頻數(shù)據(jù)類型;所述特征參數(shù)的數(shù)據(jù)類型為音頻數(shù)據(jù),則所得到的歸類結(jié)果為音頻數(shù)據(jù)類型。
所述創(chuàng)建模塊604,用于根據(jù)所述歸類結(jié)果創(chuàng)建對應(yīng)所述數(shù)據(jù)文件的緩存目錄文件;
所述分片處理模塊605,用于對所述數(shù)據(jù)文件進行關(guān)鍵幀分片處理后存儲至所述緩存目錄文件。
在一實施例中,如圖6所示,所述創(chuàng)建模塊604包括第一寫入單元6041和擴展單元6042;
所述第一寫入單元6041,用于根據(jù)所述數(shù)據(jù)長度,寫入對應(yīng)所述數(shù)據(jù)長度倍數(shù)的空白字節(jié)到緩存,以獲得緩存目錄文件;
所述擴展單元6042,用于根據(jù)所述歸類結(jié)果為所述緩存目錄文件擴展相應(yīng)數(shù)據(jù)類型的擴展名。
在一實施例中,如圖6所示,所述數(shù)據(jù)處理設(shè)備還包括檢測模塊606、構(gòu)建模塊607和存儲模塊608;
所述檢測模塊606,用于檢測所述數(shù)據(jù)文件;
所述構(gòu)建模塊607,用于當所述數(shù)據(jù)文件未結(jié)束時,解析所述數(shù)據(jù)文件的當前幀數(shù)據(jù),構(gòu)建所述當前幀數(shù)據(jù)對應(yīng)的幀索引數(shù)據(jù);
所述存儲模塊608,用于保存所述當前幀數(shù)據(jù)及對應(yīng)的幀索引數(shù)據(jù)至所述緩存目錄文件。
在一實施例中,所述分片處理模塊605包括檢測單元6051、創(chuàng)建單元6052和第二寫入單元6053;
所述檢測單元6051,用于檢測所述數(shù)據(jù)文件的當前幀數(shù)據(jù);還用于循環(huán)檢測所述數(shù)據(jù)文件,直至所述數(shù)據(jù)文件結(jié)束為止。
這里,所述檢測單元6051,還可以用于當所述當前幀數(shù)據(jù)不屬于關(guān)鍵幀數(shù)據(jù),繼續(xù)檢測所述數(shù)據(jù)文件。
所述創(chuàng)建單元6052,用于當所述檢測單元6051檢測有所述當前幀數(shù)據(jù)屬于關(guān)鍵幀數(shù)據(jù),在內(nèi)存中創(chuàng)建當前塊索引項,寫入當前幀數(shù)據(jù)對應(yīng)的關(guān)鍵幀號 和幀偏移量;
所述第二寫入單元6053,用于將所述當前塊索引項寫入所述緩存目錄文件的文件頭,并將所述當前幀之前的幀索引數(shù)據(jù)和幀數(shù)據(jù)寫入所述緩存目錄文件。
其中,所述幀偏移量包括絕對幀偏移量和相對幀偏移量;
所述絕對幀偏移量為所述關(guān)鍵幀數(shù)據(jù)的起始偏移、所述相對幀偏移量及與所述關(guān)鍵幀相關(guān)的幀的大小之和。
這里需要指出的是:以上數(shù)據(jù)處理設(shè)備實施例項的描述,與上述方法描述是類似的,具有同方法實施例相同的有益效果,因此不做贅述。對于本發(fā)明數(shù)據(jù)處理設(shè)備實施例中未披露的技術(shù)細節(jié),本領(lǐng)域的技術(shù)人員請參照本發(fā)明方法實施例的描述而理解,為節(jié)約篇幅,這里不再贅述。
具體應(yīng)用場景一:
圖7為本發(fā)明實施例數(shù)據(jù)處理方法的具體實現(xiàn)流程示意圖一,其中,所述數(shù)據(jù)文件為視頻數(shù)據(jù)文件,如圖7所示,所述方法包括:
步驟S701:接收創(chuàng)建視頻數(shù)據(jù)文件請求;
步驟S702:得到原數(shù)據(jù)文件的視頻長度,寫入視頻長度倍數(shù)空白字節(jié)到緩存目錄文件;
步驟S703:判斷視頻數(shù)據(jù)文件是否結(jié)束,如果結(jié)束,轉(zhuǎn)到S711;
步驟S704:如果未結(jié)束,解析所述視頻數(shù)據(jù)文件的當前幀數(shù)據(jù);
步驟S705:構(gòu)建所述當前幀數(shù)據(jù)對應(yīng)的幀索引數(shù)據(jù)并進行緩存;
步驟S706:檢測當前幀數(shù)據(jù)是否屬于視頻關(guān)鍵幀,如果不屬于,轉(zhuǎn)到S703;
步驟S707:當所述當前幀數(shù)據(jù)屬于視頻關(guān)鍵幀數(shù)據(jù),在內(nèi)存中創(chuàng)建當前塊索引chunk項,寫入當前幀數(shù)據(jù)對應(yīng)的關(guān)鍵幀號和幀偏移量;
步驟S708:將所述當前塊索引項寫入所述緩存目錄文件的文件頭;
步驟S709:將所述當前幀之前的幀索引數(shù)據(jù)和幀數(shù)據(jù)寫入所述緩存目錄文件;
步驟S710:如果文件結(jié)束,結(jié)束流程,否則轉(zhuǎn)到S703。
如此,通過如圖7所示的數(shù)據(jù)處理方法,能夠?qū)崿F(xiàn)對音視頻合一文件的分布式存放,有效避免非線性編輯軟件對IO設(shè)備的冗余訪問,提高IO設(shè)備的使用效率,以實現(xiàn)分布式讀取數(shù)據(jù)文件的快速響應(yīng)。
具體應(yīng)用場景二:
圖8為本發(fā)明實施例數(shù)據(jù)處理方法的具體實現(xiàn)流程示意圖二,其中,所述數(shù)據(jù)文件為音頻數(shù)據(jù)文件,如圖8所示,所述方法包括:
步驟S801:接收創(chuàng)建音頻數(shù)據(jù)文件請求;
步驟S802:得到原數(shù)據(jù)文件的音頻長度,寫入音頻長度倍數(shù)空白字節(jié)到緩存目錄文件;
步驟S803:判斷音頻數(shù)據(jù)文件是否結(jié)束,如果結(jié)束,轉(zhuǎn)到S811;
步驟S804:如果未結(jié)束,解析所述音頻數(shù)據(jù)文件的當前幀數(shù)據(jù);
步驟S805:構(gòu)建所述當前幀數(shù)據(jù)對應(yīng)的幀索引數(shù)據(jù)并進行緩存;
步驟S806:檢測當前幀數(shù)據(jù)是否屬于音頻關(guān)鍵幀,如果不屬于,轉(zhuǎn)到S803;
步驟S807:當所述當前幀數(shù)據(jù)屬于音頻關(guān)鍵幀數(shù)據(jù),在內(nèi)存中創(chuàng)建當前塊索引chunk項,寫入當前幀數(shù)據(jù)對應(yīng)的關(guān)鍵幀號和幀偏移量;
步驟S808:將所述當前塊索引項寫入所述緩存目錄文件的文件頭;
步驟S809:將所述當前幀之前的幀索引數(shù)據(jù)和幀數(shù)據(jù)寫入所述緩存目錄文件;
步驟S810:如果文件結(jié)束,結(jié)束流程,否則轉(zhuǎn)到S803。
如此,通過如圖8所示的數(shù)據(jù)處理方法,能夠?qū)崿F(xiàn)對音視頻合一文件的分布式存放,有效避免非線性編輯軟件對IO設(shè)備的冗余訪問,提高IO設(shè)備的使用效率,以實現(xiàn)分布式讀取數(shù)據(jù)文件的快速響應(yīng)。
需要補充說明的是,如圖9所示,所述具體應(yīng)用場景一分離文件分布式存儲的步驟S701~S702和具體應(yīng)用場景二分離文件分布式存儲的步驟S801~S802的具體實現(xiàn)流程如下:
步驟S901:接受打開或創(chuàng)建數(shù)據(jù)文件請求;
步驟S902:計算所述數(shù)據(jù)文件對應(yīng)文件名的哈希hash值;
步驟S903:根據(jù)hash值映射對應(yīng)的磁盤;
步驟S904:打開對應(yīng)磁盤的緩存目錄,如果不存在則創(chuàng)建它;
步驟S905:判斷所述數(shù)據(jù)文件是否是視頻數(shù)據(jù);
步驟S906:如果是視頻數(shù)據(jù),加擴展名.vdo,如果是音頻數(shù)據(jù),加擴展名.ado;
步驟S907:在緩存目錄文件中創(chuàng)建數(shù)據(jù)文件;
步驟S908:返回所述數(shù)據(jù)文件的句柄值。
這里,需要補充說明的是,上述實施例中所涉及的數(shù)據(jù)處理設(shè)備可以為PC這種電子設(shè)備,還可以為如PAD,平板電腦,手提電腦這種便攜電子設(shè)備、還可以為如手機這種智能移動終端,不限于這里的描述;所述數(shù)據(jù)處理設(shè)備至少包括用于存儲數(shù)據(jù)的數(shù)據(jù)庫和用于數(shù)據(jù)處理的處理器,或者包括設(shè)置于所述數(shù)據(jù)處理設(shè)備內(nèi)的存儲介質(zhì)或獨立設(shè)置的存儲介質(zhì)。
其中,對于用于數(shù)據(jù)處理的處理器而言,在執(zhí)行處理時,可以采用微處理器、中央處理器(CPU,Central Processing Unit)、數(shù)字信號處理器(DSP,Digital Singnal Processor)或可編程邏輯陣列(FPGA,F(xiàn)ield-Programmable Gate Array)實現(xiàn);對于存儲介質(zhì)來說,包含操作指令,該操作指令可以為計算機可執(zhí)行代碼,通過所述操作指令來實現(xiàn)上述本發(fā)明實施例信息處理方法流程中的各個步驟。
所述數(shù)據(jù)處理設(shè)備S10作為硬件實體的一個示例如圖10所示。所述裝置包括處理器1001、存儲介質(zhì)1002以及至少一個外部通信接口1003;所述處理器1001、存儲介質(zhì)1002以及外部通信接口1003均通過總線1004連接。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的設(shè)備和方法,可以通過其它的方式實現(xiàn)。以上所描述的設(shè)備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,如:多個單元或組件可以結(jié)合,或可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦 合、或通信連接可以是通過一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性的、機械的或其它形式的。
上述作為分離部件說明的單元可以是、或也可以不是物理上分開的,作為單元顯示的部件可以是、或也可以不是物理單元;既可以位于一個地方,也可以分布到多個網(wǎng)絡(luò)單元上;可以根據(jù)實際的需要選擇其中的部分或全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各實施例中的各功能單元可以全部集成在一個處理單元中,也可以是各單元分別單獨作為一個單元,也可以兩個或兩個以上單元集成在一個單元中;上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:移動存儲設(shè)備、只讀存儲器(Read-Only Memory,ROM)、隨機存取存儲器(Random Access Memory,RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
或者,本發(fā)明上述集成的單元如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分。而前述的存儲介質(zhì)包括:移動存儲設(shè)備、ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng) 以所述權(quán)利要求的保護范圍為準。