防止視頻編輯時(shí)丟幀的方法、設(shè)備及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例提供一種防止視頻編輯時(shí)丟幀的方法、設(shè)備及系統(tǒng),包括:由客戶端生成虛擬文件鏈表并同步至存儲(chǔ)設(shè)備,該鏈表包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和描述字段,存儲(chǔ)設(shè)備接收讀請求后,根據(jù)讀請求中第一文件片段的序號(hào)從內(nèi)存中讀取第一文件片段的數(shù)據(jù)并返回客戶端,根據(jù)第一文件片段的序號(hào)在虛擬文件鏈表中確定第一文件片段的序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文件片段的描述字段,再根據(jù)該字段從存儲(chǔ)介質(zhì)中讀取第二文件片段的數(shù)據(jù)存入內(nèi)存中。從而使每次讀請求都能命中內(nèi)存中的數(shù)據(jù),防止視頻編輯時(shí)丟幀。
【專利說明】防止視頻編輯時(shí)丟幀的方法、設(shè)備及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例涉及視頻處理技術(shù),尤其涉及一種防止視頻編輯時(shí)丟幀的方法、設(shè) 備及系統(tǒng)。
【背景技術(shù)】
[0002] 在現(xiàn)有的視頻編輯技術(shù)中,對存儲(chǔ)設(shè)備的讀時(shí)延都有著比較嚴(yán)格的要求,讀時(shí)延 是指編輯視頻的客戶端向存儲(chǔ)設(shè)備發(fā)起讀請求后,存儲(chǔ)設(shè)備向客戶端返回?cái)?shù)據(jù)的時(shí)間,如 果讀時(shí)延過長會(huì)導(dǎo)致視頻軟件出現(xiàn)"丟幀"問題。這是因?yàn)椋诂F(xiàn)有技術(shù)中,客戶端運(yùn)行的 視頻編輯軟件一般可以分為:讀數(shù)據(jù)線程、數(shù)據(jù)緩沖區(qū)、視頻編輯線程三部分,其工作流程 為:讀數(shù)據(jù)線程先從存儲(chǔ)設(shè)備中讀出數(shù)據(jù),并填入數(shù)據(jù)緩沖區(qū),視頻編輯線程從數(shù)據(jù)緩沖區(qū) 中讀出緩存的數(shù)據(jù)進(jìn)行視頻處理。現(xiàn)有的存儲(chǔ)設(shè)備大都采用的是磁盤存儲(chǔ)介質(zhì)(比如機(jī) 械硬盤),由于磁盤存儲(chǔ)介質(zhì)的響應(yīng)時(shí)間較長,可能出現(xiàn)視頻編輯線程從數(shù)據(jù)緩沖區(qū)中讀出 數(shù)據(jù)緩沖區(qū)中的所有數(shù)據(jù)時(shí),讀數(shù)據(jù)線程還沒有從存儲(chǔ)設(shè)備中讀出新的數(shù)據(jù)填入數(shù)據(jù)緩沖 區(qū),此時(shí)數(shù)據(jù)緩沖區(qū)是空的,如果視頻編輯線程再試圖從數(shù)據(jù)緩沖區(qū)讀取數(shù)據(jù)就會(huì)出現(xiàn)"丟 幀"的問題。
[0003] 為了解決上述問題,在一種現(xiàn)有技術(shù)中,存儲(chǔ)設(shè)備在接收到讀請求之前就預(yù)先把 數(shù)據(jù)讀取到存儲(chǔ)設(shè)備的內(nèi)存中,當(dāng)收到讀請求時(shí),就可以將內(nèi)存中預(yù)先讀取的數(shù)據(jù)返回給 客戶端。但是,上述方法只能解決線性編輯時(shí)的"丟幀"的問題,線性編輯是指客戶端按照 時(shí)間順序進(jìn)行編輯,比如本次請求的是第η個(gè)數(shù)據(jù)塊,下次請求的就是第n+1個(gè)數(shù)據(jù)塊,這 樣預(yù)先將第n+1個(gè)數(shù)據(jù)塊讀取到內(nèi)存中,當(dāng)?shù)趎+1個(gè)數(shù)據(jù)塊的讀請求到來時(shí),剛好能夠?qū)⒌?n+1個(gè)數(shù)據(jù)塊立即返回給客戶端。當(dāng)非線性編輯時(shí),客戶端請求的數(shù)據(jù)塊可能是隨機(jī)的,t匕 如本次請求的是第η個(gè)數(shù)據(jù)塊,下次請求的可能是第n+3個(gè)數(shù)據(jù)塊,這種情況下就無法命中 預(yù)先讀取到內(nèi)存中的數(shù)據(jù),依然只能等待從磁盤存儲(chǔ)介質(zhì)中讀出第n+3個(gè)數(shù)據(jù)塊后,才能 返回給客戶端,這種情況下依然可能出現(xiàn)"丟幀"的問題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明實(shí)施例提供一種防止視頻編輯時(shí)丟幀的方法、設(shè)備及系統(tǒng),能夠解決視頻 編輯時(shí)丟幀的問題。
[0005] 第一方面,本發(fā)明實(shí)施例提供一種防止視頻編輯時(shí)丟幀的方法,應(yīng)用于存儲(chǔ)設(shè)備, 所述存儲(chǔ)設(shè)備存儲(chǔ)有客戶端發(fā)送的虛擬文件鏈表,所述虛擬文件鏈表與所述客戶端中的虛 擬文件鏈表保持同步,所述虛擬文件鏈表包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件 片段的序號(hào)和所述文件片段的描述字段;所述方法包括:
[0006] 根據(jù)所述第一文件片段的序號(hào)從內(nèi)存中讀取所述第一文件片段的數(shù)據(jù),并將所述 第一文件片段的數(shù)據(jù)返回給所述客戶端;所述第一文件片段的數(shù)據(jù)是接收到所述客戶端的 上一次讀請求時(shí)從存儲(chǔ)介質(zhì)讀取并存入在所述內(nèi)存中的;
[0007] 根據(jù)所述第一文件片段的序號(hào)在所述虛擬文件鏈表中確定所述第一文件片段的 序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從所述下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文件片段的描述 字段;
[0008] 根據(jù)所述第二文件片段的描述字段從所述存儲(chǔ)介質(zhì)中讀取所述第二文件片段的 數(shù)據(jù),并將所述第二文件片段的數(shù)據(jù)存入所述內(nèi)存中。
[0009] 結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述虛擬文件鏈表與所 述客戶端中的虛擬文件鏈表保持同步包括:
[0010] 當(dāng)所述客戶端中的虛擬文件鏈表更新后,從所述客戶端接收更新后的虛擬文件鏈 表;
[0011] 或者,當(dāng)所述客戶端中的虛擬文件鏈表更新后,從所述客戶端接收鏈表更新信息, 并根據(jù)所述鏈表更新信息對已存儲(chǔ)的所述虛擬文件鏈表進(jìn)行更新,得到更新后的虛擬文件 鏈表;
[0012] 或者,周期性的接收所述客戶端發(fā)送的虛擬文件鏈表。
[0013] 結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述描述字段包括:
[0014] 文件片段所屬原始文件的文件名、讀取原始文件的起始地址、讀取原始文件的長 度。
[0015] 結(jié)合第一方面,在第三種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)設(shè)備與所述客戶端通過采 用客戶端/服務(wù)器C/S模式的私有接口傳輸所述虛擬文件鏈表,所述存儲(chǔ)設(shè)備與所述客戶 端之間通過所述私有接口傳輸心跳報(bào)文保持所述私有接口的連接狀態(tài)。
[0016] 第二方面,本發(fā)明實(shí)施例提供一種防止視頻編輯時(shí)丟幀的方法,應(yīng)用于視頻編輯 系統(tǒng),所述視頻編輯系統(tǒng)包括客戶端和存儲(chǔ)設(shè)備,所述客戶端和所述存儲(chǔ)設(shè)備均存儲(chǔ)有所 述客戶端生成的虛擬文件鏈表,所述存儲(chǔ)設(shè)備中的虛擬文件鏈表與所述客戶端中的虛擬文 件鏈表保持同步,所述虛擬文件鏈表包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段 的序號(hào)和所述文件片段的描述字段;所述方法包括:
[0017] 所述客戶端向所述存儲(chǔ)設(shè)備發(fā)送讀請求,所述讀請求中包括要讀取的第一文件片 段的序號(hào);
[0018] 所述存儲(chǔ)設(shè)備根據(jù)所述第一文件片段的序號(hào)從內(nèi)存中讀取所述第一文件片段的 數(shù)據(jù);所述第一文件片段的數(shù)據(jù)是所述存儲(chǔ)設(shè)備接收到所述客戶端的上一次讀請求時(shí)從存 儲(chǔ)介質(zhì)讀取并存入在所述內(nèi)存中的;
[0019] 所述存儲(chǔ)設(shè)備向所述客戶端返回所述第一文件片段的數(shù)據(jù);
[0020] 所述存儲(chǔ)設(shè)備根據(jù)所述第一文件片段的序號(hào)在所述虛擬文件鏈表中確定所述第 一文件片段的序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從所述下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文 件片段的描述字段;
[0021] 所述存儲(chǔ)設(shè)備根據(jù)所述第二文件片段的描述字段從所述存儲(chǔ)介質(zhì)中讀取所述第 二文件片段的數(shù)據(jù),并將所述第二文件片段的數(shù)據(jù)存入所述內(nèi)存中。
[0022] 結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)設(shè)備中的虛擬文件鏈表與 所述客戶端中的虛擬文件鏈表保持同步包括:
[0023] 當(dāng)更新所述虛擬文件鏈表后,所述客戶端向所述存儲(chǔ)設(shè)備發(fā)送更新后的虛擬文件 鏈表;
[0024] 或者,當(dāng)更新所述虛擬文件鏈表后,所述客戶端向所述存儲(chǔ)設(shè)備發(fā)送鏈表更新信 息;
[0025] 所述存儲(chǔ)設(shè)備根據(jù)所述鏈表更新信息對已存儲(chǔ)的虛擬文件鏈表進(jìn)行更新,得到更 新后的虛擬文件鏈表;
[0026] 或者,所述客戶端周期性的向所述存儲(chǔ)設(shè)備發(fā)送虛擬文件鏈表。
[0027] 結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述描述字段包括:
[0028] 文件片段所屬原始文件的文件名、讀取原始文件的起始地址、讀取原始文件的長 度。
[0029] 結(jié)合第二方面,在第三種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)設(shè)備與所述客戶端通過采 用客戶端/服務(wù)器C/S模式的私有接口傳輸所述虛擬文件鏈表,所述存儲(chǔ)設(shè)備與所述客戶 端之間通過所述私有接口傳輸心跳報(bào)文保持所述私有接口的連接狀態(tài)。
[0030] 第三方面,本發(fā)明實(shí)施例提供一種存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備存儲(chǔ)有客戶端發(fā)送的 虛擬文件鏈表,所述虛擬文件鏈表與所述客戶端中的虛擬文件鏈表保持同步,所述虛擬文 件鏈表包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和所述文件片段的描述 字段;所述存儲(chǔ)設(shè)備包括:主機(jī)協(xié)議接口、讀接口、內(nèi)存、預(yù)取模塊和存儲(chǔ)介質(zhì);
[0031] 所述主機(jī)協(xié)議接口,用于接收所述客戶端發(fā)送的讀請求,所述讀請求中包括要讀 取的第一文件片段的序號(hào);
[0032] 所述讀接口,用于根據(jù)所述第一文件片段的序號(hào)從內(nèi)存中讀取所述第一文件片段 的數(shù)據(jù),并將所述第一文件片段的數(shù)據(jù)返回給所述客戶端;所述第一文件片段的數(shù)據(jù)是接 收到所述客戶端的上一次讀請求時(shí)從存儲(chǔ)介質(zhì)讀取并存入在所述內(nèi)存中的;
[0033] 所述讀接口還用于,根據(jù)所述第一文件片段的序號(hào)在所述虛擬文件鏈表中確定所 述第一文件片段的序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從所述下一個(gè)鏈表節(jié)點(diǎn)中獲取第 二文件片段的描述字段;
[0034] 所述預(yù)取模塊,用于根據(jù)所述第二文件片段的描述字段從所述存儲(chǔ)介質(zhì)中讀取所 述第二文件片段的數(shù)據(jù),并將所述第二文件片段的數(shù)據(jù)存入所述內(nèi)存中。
[0035] 結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)設(shè)備還包括:私有接口,所 述私有接口用于從所述客戶端接收所述虛擬文件鏈表,以及所述虛擬文件鏈表與所述客戶 端中的虛擬文件鏈表保持同步,所述私有接口具體用于:
[0036] 當(dāng)所述客戶端中的虛擬文件鏈表更新后,從所述客戶端接收更新后的虛擬文件鏈 表;
[0037] 或者,當(dāng)所述客戶端中的虛擬文件鏈表更新后,從所述客戶端接收鏈表更新信息, 并根據(jù)所述鏈表更新信息對已存儲(chǔ)的所述虛擬文件鏈表進(jìn)行更新,得到更新后的虛擬文件 鏈表;
[0038] 或者,周期性的接收所述客戶端發(fā)送的虛擬文件鏈表。
[0039] 結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述描述字段包括:
[0040] 文件片段所屬原始文件的文件名、讀取原始文件的起始地址、讀取原始文件的長 度。
[0041] 結(jié)合第三方面的第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述私有 接口為采用客戶端/服務(wù)器C/S模式的接口,所述存儲(chǔ)設(shè)備與所述客戶端之間通過所述私 有接口傳輸心跳報(bào)文保持所述私有接口的連接狀態(tài)。
[0042] 第四方面,本發(fā)明實(shí)施例提供一種視頻編輯系統(tǒng),所述視頻編輯系統(tǒng)包括客戶端 和存儲(chǔ)設(shè)備,所述客戶端和所述存儲(chǔ)設(shè)備均存儲(chǔ)有所述客戶端生成的虛擬文件鏈表,所述 存儲(chǔ)設(shè)備中的虛擬文件鏈表與所述客戶端中的虛擬文件鏈表保持同步,所述虛擬文件鏈表 包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和所述文件片段的描述字段; 其中:
[0043] 所述客戶端用于向所述存儲(chǔ)設(shè)備發(fā)送讀請求,所述讀請求中包括要讀取的第一文 件片段的序號(hào);
[0044] 所述存儲(chǔ)設(shè)備用于根據(jù)所述第一文件片段的序號(hào)從內(nèi)存中讀取所述第一文件片 段的數(shù)據(jù),所述第一文件片段的數(shù)據(jù)是所述存儲(chǔ)設(shè)備接收到所述客戶端的上一次讀請求時(shí) 從存儲(chǔ)介質(zhì)讀取并存入在所述內(nèi)存中的;
[0045] 所述存儲(chǔ)設(shè)備還用于向所述客戶端返回所述第一文件片段的數(shù)據(jù);
[0046] 所述存儲(chǔ)設(shè)備還用于根據(jù)所述第一文件片段的序號(hào)在所述虛擬文件鏈表中確定 所述第一文件片段的序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從所述下一個(gè)鏈表節(jié)點(diǎn)中獲取 第二文件片段的描述字段;
[0047] 所述存儲(chǔ)設(shè)備還用于根據(jù)所述第二文件片段的描述字段從所述存儲(chǔ)介質(zhì)中讀取 所述第二文件片段的數(shù)據(jù),并將所述第二文件片段的數(shù)據(jù)存入所述內(nèi)存中。
[0048] 結(jié)合第四方面,在第一種可能的實(shí)現(xiàn)方式中,
[0049] 當(dāng)更新所述虛擬文件鏈表后,所述客戶端還用于向所述存儲(chǔ)設(shè)備發(fā)送更新后的虛 擬文件鏈表;
[0050] 或者,當(dāng)更新所述虛擬文件鏈表后,所述客戶端還用于向所述存儲(chǔ)設(shè)備發(fā)送鏈表 更新信息
[0051] 所述存儲(chǔ)設(shè)備還用于根據(jù)所述鏈表更新信息對已存儲(chǔ)的虛擬文件鏈表進(jìn)行更新, 得到更新后的虛擬文件鏈表;
[0052] 或者,所述客戶端還用于周期性的向所述存儲(chǔ)設(shè)備發(fā)送虛擬文件鏈表。
[0053] 結(jié)合第四方面或第四方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述描述字段包括:
[0054] 文件片段所屬原始文件的文件名、讀取原始文件的起始地址、讀取原始文件的長 度。
[0055] 結(jié)合第四方面的第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述私有 接口為采用客戶端/服務(wù)器C/S模式的接口,所述客戶端與所述存儲(chǔ)設(shè)備之間通過所述私 有接口傳輸心跳報(bào)文保持所述私有接口的連接狀態(tài)。
[0056] 本發(fā)明實(shí)施例提供一種防止視頻編輯時(shí)丟幀的方法、設(shè)備及系統(tǒng),首先由客戶端 生成虛擬文件鏈表并將該虛擬文件鏈表同步至存儲(chǔ)設(shè)備,虛擬文件鏈表包括多個(gè)鏈表節(jié) 點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和文件片段的描述字段,當(dāng)存儲(chǔ)設(shè)備接收到客 戶端的讀請求后,根據(jù)讀請求中的第一文件片段的序號(hào)從內(nèi)存中讀取第一文件片段的數(shù)據(jù) 并返回給客戶端;并且,存儲(chǔ)設(shè)備還根據(jù)第一文件片段的序號(hào)在虛擬文件鏈表中確定第一 文件片段的序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文件片段 的描述字段,再根據(jù)該描述字段從存儲(chǔ)介質(zhì)中讀取第二文件片段的數(shù)據(jù)并存入內(nèi)存中,以 便當(dāng)接收到客戶端的下一次讀請求時(shí),從內(nèi)存中讀取第二文件片段的數(shù)據(jù)返回給客戶端。 可見能夠?qū)崿F(xiàn)每次讀請求都能命中內(nèi)存中預(yù)取的數(shù)據(jù),從而能夠防止視頻編輯時(shí)丟幀。
【專利附圖】
【附圖說明】
[0057] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0058] 圖1為本發(fā)明實(shí)施例提供的防止視頻編輯時(shí)丟幀的方法的流程示意圖;
[0059] 圖2為本發(fā)明實(shí)施例提供的防止視頻編輯時(shí)丟幀的方法的另一流程示意圖;
[0060] 圖3為本發(fā)明實(shí)施例提供的防止視頻編輯時(shí)丟幀的方法的又一流程示意圖; [0061] 圖4為本發(fā)明實(shí)施例提供的虛擬文件鏈表的結(jié)構(gòu)示意圖;
[0062] 圖5為本發(fā)明實(shí)施例提供的存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;
[0063] 圖6為本發(fā)明實(shí)施例提供的客戶端的結(jié)構(gòu)示意圖;
[0064] 圖7為本發(fā)明實(shí)施例提供的視頻編輯系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0065] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0066] 本發(fā)明實(shí)施例提供一種防止視頻編輯時(shí)丟幀的方法,應(yīng)用于存儲(chǔ)設(shè)備,存儲(chǔ)設(shè)備 存儲(chǔ)有客戶端發(fā)送的虛擬文件鏈表,虛擬文件鏈表與客戶端中的虛擬文件鏈表保持同步, 虛擬文件鏈表包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和所述文件片段 的描述字段;如圖1所示,方法包括:
[0067] S101、接收客戶端發(fā)送的讀請求,讀請求中包括要讀取的第一文件片段的序號(hào)。
[0068] S103、根據(jù)第一文件片段的序號(hào)從內(nèi)存中讀取第一文件片段的數(shù)據(jù),并將第一文 件片段的數(shù)據(jù)返回給客戶端;第一文件片段的數(shù)據(jù)是接收到客戶端的上一次讀請求時(shí)從存 儲(chǔ)介質(zhì)讀取并存入在內(nèi)存中的。
[0069] S105、根據(jù)第一文件片段的序號(hào)在虛擬文件鏈表中確定第一文件片段的序號(hào)所屬 鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文件片段的描述字段。
[0070] S107、根據(jù)第二文件片段的描述字段從存儲(chǔ)介質(zhì)中讀取第二文件片段的數(shù)據(jù),并 將第二文件片段的數(shù)據(jù)存入內(nèi)存中。
[0071] 從而,當(dāng)接收到客戶端的下一次讀請求時(shí),從內(nèi)存中讀取第二文件片段的數(shù)據(jù),并 將第二文件片段的數(shù)據(jù)返回給客戶端。
[0072] 本發(fā)明實(shí)施例還提供一種防止視頻編輯時(shí)丟幀的方法,應(yīng)用于視頻編輯系統(tǒng),該 視頻編輯系統(tǒng)包括客戶端和存儲(chǔ)設(shè)備,客戶端和存儲(chǔ)設(shè)備均存儲(chǔ)有客戶端生成的虛擬文件 鏈表,存儲(chǔ)設(shè)備中的虛擬文件鏈表與客戶端中的虛擬文件鏈表保持同步,虛擬文件鏈表包 括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和所述文件片段的描述字段;如 圖2所示,方法包括:
[0073] S102、客戶端向存儲(chǔ)設(shè)備發(fā)送讀請求,讀請求中包括要讀取的第一文件片段的序 號(hào)。
[0074] S104、存儲(chǔ)設(shè)備根據(jù)第一文件片段的序號(hào)從內(nèi)存中讀取第一文件片段的數(shù)據(jù)。其 中,第一文件片段的數(shù)據(jù)是存儲(chǔ)設(shè)備接收到客戶端的上一次讀請求時(shí)從存儲(chǔ)介質(zhì)讀取并存 入在內(nèi)存中的。
[0075] S106、存儲(chǔ)設(shè)備向客戶端返回第一文件片段的數(shù)據(jù)。
[0076] S108、存儲(chǔ)設(shè)備根據(jù)第一文件片段的序號(hào)在虛擬文件鏈表中確定第一文件片段的 序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文件片段的描述字 段。
[0077] S110、存儲(chǔ)設(shè)備根據(jù)第二文件片段的描述字段從存儲(chǔ)介質(zhì)中讀取第二文件片段的 數(shù)據(jù),并將第二文件片段的數(shù)據(jù)存入內(nèi)存中。
[0078] 從而當(dāng)存儲(chǔ)設(shè)備接收到下一次讀請求時(shí),存儲(chǔ)設(shè)備能夠從內(nèi)存中讀取第二文件片 段的數(shù)據(jù),并將第二文件片段的數(shù)據(jù)返回給客戶端。
[0079] 本發(fā)明實(shí)施例提供的一種防止視頻編輯時(shí)丟幀的方法,首先由客戶端生成虛擬文 件鏈表并將該虛擬文件鏈表同步至存儲(chǔ)設(shè)備,虛擬文件鏈表包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表 節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和文件片段的描述字段,當(dāng)存儲(chǔ)設(shè)備接收到客戶端的讀請求 后,根據(jù)讀請求中的第一文件片段的序號(hào)從內(nèi)存中讀取第一文件片段的數(shù)據(jù)并返回給客戶 端;并且,存儲(chǔ)設(shè)備還根據(jù)第一文件片段的序號(hào)在虛擬文件鏈表中確定第一文件片段的序 號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文件片段的描述字段, 再根據(jù)該描述字段從存儲(chǔ)介質(zhì)中讀取第二文件片段的數(shù)據(jù)并存入內(nèi)存中,以便當(dāng)接收到客 戶端的下一次讀請求時(shí),從內(nèi)存中讀取第二文件片段的數(shù)據(jù)返回給客戶端??梢娔軌?qū)崿F(xiàn) 每次讀請求都能命中內(nèi)存中預(yù)取的數(shù)據(jù),從而能夠防止視頻編輯時(shí)丟幀。
[0080] 為了使本領(lǐng)域技術(shù)人員能夠更清楚地理解本發(fā)明實(shí)施例提供的技術(shù)方案,下面通 過具體的實(shí)施例,對本發(fā)明的實(shí)施例提供的防止視頻編輯時(shí)丟幀的方法進(jìn)行詳細(xì)說明,如 圖3所示,該方法包括:
[0081] S201、客戶端生成虛擬文件鏈表。
[0082] 具體的,客戶端可以是視頻編輯工作站,該客戶端運(yùn)行有用于編輯視頻文件的軟 件,用戶可以預(yù)先將需要合成目標(biāo)文件的多個(gè)文件片段的信息以及這多個(gè)文件片段的編 輯順序輸入至客戶端,該客戶端就可以通過視頻編輯軟件的視頻編輯線程生成虛擬文件鏈 表,虛擬文件鏈表包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和文件片段 的描述字段,其中描述字段可以具體包括文件片段所屬原始文件的文件名、讀取原始文件 的起始地址(用于指示獲取該文件片段需要從原始文件的那個(gè)位置開始讀)、讀取原始文 件的長度(用于指示獲取該文件片段需要的原始文件的長度)。
[0083] 示例性的,該虛擬文件鏈表可以如圖4所示,虛擬文件鏈表中的讀取順序可以如 圖4中所示箭頭方向?yàn)槔?,設(shè)置為從虛擬文件鏈表的頭端到尾端依次讀取。圖4中的虛擬 文件鏈表中包括N個(gè)鏈表節(jié)點(diǎn),分別表示為鏈表節(jié)點(diǎn)1?N,每個(gè)鏈表節(jié)點(diǎn)都包括一文件片 段的序號(hào),該文件片段所屬原始文件的文件名、讀取原始文件的起始地址、讀取原始文件的 長度,具體的每個(gè)鏈表節(jié)點(diǎn)中包括的信息可以定義為如下字段:
[0084]
【權(quán)利要求】
1. 一種防止視頻編輯時(shí)丟幀的方法,應(yīng)用于存儲(chǔ)設(shè)備,其特征在于,所述存儲(chǔ)設(shè)備存儲(chǔ) 有客戶端發(fā)送的虛擬文件鏈表,所述虛擬文件鏈表與所述客戶端中的虛擬文件鏈表保持同 步,所述虛擬文件鏈表包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和所述 文件片段的描述字段;所述方法包括: 接收所述客戶端發(fā)送的讀請求,所述讀請求中包括要讀取的第一文件片段的序號(hào); 根據(jù)所述第一文件片段的序號(hào)從內(nèi)存中讀取所述第一文件片段的數(shù)據(jù),并將所述第一 文件片段的數(shù)據(jù)返回給所述客戶端;所述第一文件片段的數(shù)據(jù)是接收到所述客戶端的上一 次讀請求時(shí)從存儲(chǔ)介質(zhì)讀取并存入在所述內(nèi)存中的; 根據(jù)所述第一文件片段的序號(hào)在所述虛擬文件鏈表中確定所述第一文件片段的序號(hào) 所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從所述下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文件片段的描述字 段; 根據(jù)所述第二文件片段的描述字段從所述存儲(chǔ)介質(zhì)中讀取所述第二文件片段的數(shù)據(jù), 并將所述第二文件片段的數(shù)據(jù)存入所述內(nèi)存中。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述虛擬文件鏈表與所述客戶端中的虛 擬文件鏈表保持同步包括: 當(dāng)所述客戶端中的虛擬文件鏈表更新后,從所述客戶端接收更新后的虛擬文件鏈表; 或者,當(dāng)所述客戶端中的虛擬文件鏈表更新后,從所述客戶端接收鏈表更新信息,并 根據(jù)所述鏈表更新信息對已存儲(chǔ)的所述虛擬文件鏈表進(jìn)行更新,得到更新后的虛擬文件鏈 表; 或者,周期性的接收所述客戶端發(fā)送的虛擬文件鏈表。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述描述字段包括: 文件片段所屬原始文件的文件名、讀取原始文件的起始地址、讀取原始文件的長度。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述存儲(chǔ)設(shè)備與所述客戶端通過采用客 戶端/服務(wù)器C/S模式的私有接口傳輸所述虛擬文件鏈表,所述存儲(chǔ)設(shè)備與所述客戶端之 間通過所述私有接口傳輸心跳報(bào)文保持所述私有接口的連接狀態(tài)。
5. -種防止視頻編輯時(shí)丟幀的方法,應(yīng)用于視頻編輯系統(tǒng),其特征在于,所述視頻編輯 系統(tǒng)包括客戶端和存儲(chǔ)設(shè)備,所述客戶端和所述存儲(chǔ)設(shè)備均存儲(chǔ)有所述客戶端生成的虛擬 文件鏈表,所述存儲(chǔ)設(shè)備中的虛擬文件鏈表與所述客戶端中的虛擬文件鏈表保持同步,所 述虛擬文件鏈表包括多個(gè)鏈表節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和所述文件片 段的描述字段;所述方法包括: 所述客戶端向所述存儲(chǔ)設(shè)備發(fā)送讀請求,所述讀請求中包括要讀取的第一文件片段的 序號(hào); 所述存儲(chǔ)設(shè)備根據(jù)所述第一文件片段的序號(hào)從內(nèi)存中讀取所述第一文件片段的數(shù)據(jù); 所述第一文件片段的數(shù)據(jù)是所述存儲(chǔ)設(shè)備接收到所述客戶端的上一次讀請求時(shí)從存儲(chǔ)介 質(zhì)讀取并存入在所述內(nèi)存中的; 所述存儲(chǔ)設(shè)備向所述客戶端返回所述第一文件片段的數(shù)據(jù); 所述存儲(chǔ)設(shè)備根據(jù)所述第一文件片段的序號(hào)在所述虛擬文件鏈表中確定所述第一文 件片段的序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從所述下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文件片 段的描述字段; 所述存儲(chǔ)設(shè)備根據(jù)所述第二文件片段的描述字段從所述存儲(chǔ)介質(zhì)中讀取所述第二文 件片段的數(shù)據(jù),并將所述第二文件片段的數(shù)據(jù)存入所述內(nèi)存中。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述存儲(chǔ)設(shè)備中的虛擬文件鏈表與所述 客戶端中的虛擬文件鏈表保持同步包括: 當(dāng)更新所述虛擬文件鏈表后,所述客戶端向所述存儲(chǔ)設(shè)備發(fā)送更新后的虛擬文件鏈 表; 或者,當(dāng)更新所述虛擬文件鏈表后,所述客戶端向所述存儲(chǔ)設(shè)備發(fā)送鏈表更新信息; 所述存儲(chǔ)設(shè)備根據(jù)所述鏈表更新信息對已存儲(chǔ)的虛擬文件鏈表進(jìn)行更新,得到更新后 的虛擬文件鏈表; 或者,所述客戶端周期性的向所述存儲(chǔ)設(shè)備發(fā)送虛擬文件鏈表。
7. 根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述描述字段包括: 文件片段所屬原始文件的文件名、讀取原始文件的起始地址、讀取原始文件的長度。
8. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述存儲(chǔ)設(shè)備與所述客戶端通過采用客 戶端/服務(wù)器C/S模式的私有接口傳輸所述虛擬文件鏈表,所述存儲(chǔ)設(shè)備與所述客戶端之 間通過所述私有接口傳輸心跳報(bào)文保持所述私有接口的連接狀態(tài)。
9. 一種存儲(chǔ)設(shè)備,其特征在于,所述存儲(chǔ)設(shè)備存儲(chǔ)有客戶端發(fā)送的虛擬文件鏈表,所述 虛擬文件鏈表與所述客戶端中的虛擬文件鏈表保持同步,所述虛擬文件鏈表包括多個(gè)鏈表 節(jié)點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和所述文件片段的描述字段;所述存儲(chǔ)設(shè)備 包括:主機(jī)協(xié)議接口、讀接口、內(nèi)存、預(yù)取模塊和存儲(chǔ)介質(zhì); 所述主機(jī)協(xié)議接口,用于接收所述客戶端發(fā)送的讀請求,所述讀請求中包括要讀取的 第一文件片段的序號(hào); 所述讀接口,用于根據(jù)所述第一文件片段的序號(hào)從內(nèi)存中讀取所述第一文件片段的數(shù) 據(jù),并將所述第一文件片段的數(shù)據(jù)返回給所述客戶端;所述第一文件片段的數(shù)據(jù)是接收到 所述客戶端的上一次讀請求時(shí)從存儲(chǔ)介質(zhì)讀取并存入在所述內(nèi)存中的; 所述讀接口還用于,根據(jù)所述第一文件片段的序號(hào)在所述虛擬文件鏈表中確定所述第 一文件片段的序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從所述下一個(gè)鏈表節(jié)點(diǎn)中獲取第二文 件片段的描述字段; 所述預(yù)取模塊,用于根據(jù)所述第二文件片段的描述字段從所述存儲(chǔ)介質(zhì)中讀取所述第 二文件片段的數(shù)據(jù),并將所述第二文件片段的數(shù)據(jù)存入所述內(nèi)存中。
10. 根據(jù)權(quán)利要求9所述的存儲(chǔ)設(shè)備,其特征在于,所述存儲(chǔ)設(shè)備還包括:私有接口,所 述私有接口用于從所述客戶端接收所述虛擬文件鏈表,以及所述虛擬文件鏈表與所述客戶 端中的虛擬文件鏈表保持同步,所述私有接口具體用于: 當(dāng)所述客戶端中的虛擬文件鏈表更新后,從所述客戶端接收更新后的虛擬文件鏈表; 或者,當(dāng)所述客戶端中的虛擬文件鏈表更新后,從所述客戶端接收鏈表更新信息,并 根據(jù)所述鏈表更新信息對已存儲(chǔ)的所述虛擬文件鏈表進(jìn)行更新,得到更新后的虛擬文件鏈 表; 或者,周期性的接收所述客戶端發(fā)送的虛擬文件鏈表。
11. 根據(jù)權(quán)利要求9或10所述的存儲(chǔ)設(shè)備,其特征在于,所述描述字段包括: 文件片段所屬原始文件的文件名、讀取原始文件的起始地址、讀取原始文件的長度。
12. 根據(jù)權(quán)利要求10所述的存儲(chǔ)設(shè)備,其特征在于,所述私有接口為采用客戶端/服務(wù) 器C/S模式的接口,所述存儲(chǔ)設(shè)備與所述客戶端之間通過所述私有接口傳輸心跳報(bào)文保持 所述私有接口的連接狀態(tài)。
13. -種視頻編輯系統(tǒng),其特征在于,所述視頻編輯系統(tǒng)包括客戶端和存儲(chǔ)設(shè)備,所述 客戶端和所述存儲(chǔ)設(shè)備均存儲(chǔ)有所述客戶端生成的虛擬文件鏈表,所述存儲(chǔ)設(shè)備中的虛擬 文件鏈表與所述客戶端中的虛擬文件鏈表保持同步,所述虛擬文件鏈表包括多個(gè)鏈表節(jié) 點(diǎn),每個(gè)鏈表節(jié)點(diǎn)包括一個(gè)文件片段的序號(hào)和所述文件片段的描述字段;其中: 所述客戶端用于向所述存儲(chǔ)設(shè)備發(fā)送讀請求,所述讀請求中包括要讀取的第一文件片 段的序號(hào); 所述存儲(chǔ)設(shè)備用于根據(jù)所述第一文件片段的序號(hào)從內(nèi)存中讀取所述第一文件片段的 數(shù)據(jù),所述第一文件片段的數(shù)據(jù)是所述存儲(chǔ)設(shè)備接收到所述客戶端的上一次讀請求時(shí)從存 儲(chǔ)介質(zhì)讀取并存入在所述內(nèi)存中的; 所述存儲(chǔ)設(shè)備還用于向所述客戶端返回所述第一文件片段的數(shù)據(jù); 所述存儲(chǔ)設(shè)備還用于根據(jù)所述第一文件片段的序號(hào)在所述虛擬文件鏈表中確定所述 第一文件片段的序號(hào)所屬鏈表節(jié)點(diǎn)的下一個(gè)鏈表節(jié)點(diǎn),從所述下一個(gè)鏈表節(jié)點(diǎn)中獲取第二 文件片段的描述字段; 所述存儲(chǔ)設(shè)備還用于根據(jù)所述第二文件片段的描述字段從所述存儲(chǔ)介質(zhì)中讀取所述 第二文件片段的數(shù)據(jù),并將所述第二文件片段的數(shù)據(jù)存入所述內(nèi)存中。
14. 根據(jù)權(quán)利要求13所述的視頻編輯系統(tǒng),其特征在于, 當(dāng)更新所述虛擬文件鏈表后,所述客戶端還用于向所述存儲(chǔ)設(shè)備發(fā)送更新后的虛擬文 件鏈表; 或者,當(dāng)更新所述虛擬文件鏈表后,所述客戶端還用于向所述存儲(chǔ)設(shè)備發(fā)送鏈表更新 信息; 所述存儲(chǔ)設(shè)備還用于根據(jù)所述鏈表更新信息對已存儲(chǔ)的虛擬文件鏈表進(jìn)行更新,得到 更新后的虛擬文件鏈表; 或者,所述客戶端還用于周期性的向所述存儲(chǔ)設(shè)備發(fā)送虛擬文件鏈表。
15. 根據(jù)權(quán)利要求13或14所述的視頻編輯系統(tǒng),其特征在于,所述描述字段包括: 文件片段所屬原始文件的文件名、讀取原始文件的起始地址、讀取原始文件的長度。
16. 根據(jù)權(quán)利要求14所述的視頻編輯系統(tǒng),其特征在于,所述私有接口為采用客戶端/ 服務(wù)器C/S模式的接口,所述客戶端與所述存儲(chǔ)設(shè)備之間通過所述私有接口傳輸心跳報(bào)文 保持所述私有接口的連接狀態(tài)。
【文檔編號(hào)】H04N21/458GK104333803SQ201410594344
【公開日】2015年2月4日 申請日期:2014年10月29日 優(yōu)先權(quán)日:2014年10月29日
【發(fā)明者】劉淵, 王錦 申請人:華為技術(shù)有限公司