基于http代理的移動流媒體離線緩存系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻數(shù)據(jù)存儲領(lǐng)域,具體涉及一種基于HTTP代理的移動流媒體離線緩存系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著移動互聯(lián)網(wǎng)的高速發(fā)展,移動終端流媒體應(yīng)用成為移動通信行業(yè)的重量級業(yè)務(wù),尤其是視頻行業(yè)、教育行業(yè),但是移動互聯(lián)網(wǎng)其自身存在區(qū)域盲點或覆蓋不均衡、流量昂貴等缺點,導(dǎo)致傳統(tǒng)移動流媒體在無網(wǎng)或網(wǎng)絡(luò)極差的環(huán)境、用戶免費移動流量用完的情況下完全得不到應(yīng)用。
【發(fā)明內(nèi)容】
[0003]本發(fā)明在于克服上述不足,提供一種基于HTTP代理的移動流媒體離線緩存系統(tǒng)及方法,預(yù)先緩存數(shù)據(jù),然后離線提供視頻流服務(wù),解決移動流媒體在無網(wǎng)或網(wǎng)絡(luò)極差的環(huán)境、用戶免費移動流量用完的情況下完全得不到應(yīng)用的問題。
[0004]本發(fā)明技術(shù)方案如下:
[0005]—種基于HTTP代理的移動流媒體離線緩存系統(tǒng),包括移動端應(yīng)用層,接口層,緩存代理層,數(shù)據(jù)層,其特殊之處在于:
[0006]所述移動端應(yīng)用層,采用代碼兼容技術(shù)使移動流媒體緩存的各個功能模塊代碼都能在 Android、1S、Windows CE 平臺上運行;
[0007]所述接口層包含API接口與Web Services接口;所述API接口實現(xiàn)移動平臺應(yīng)用的兼容調(diào)用,完成代理啟動、停止、設(shè)置路徑的功能;所述Web Services接口采用HTTP調(diào)用方式實現(xiàn)下載任務(wù)啟動、停止、信息讀取、緩存清理的功能;
[0008]所述緩存代理層包含HTTP代理、會話調(diào)度引擎、存儲管理與數(shù)據(jù)安全管理;所述HTTP代理采用HTTP標(biāo)準(zhǔn)協(xié)議,實現(xiàn)HTTP服務(wù)端與HTTP客戶端功能;所述會話調(diào)度引擎實現(xiàn)會話管理功能,并完成流媒體視頻請求與相應(yīng)調(diào)度工作;所述存儲管理實現(xiàn)數(shù)據(jù)索引、存儲、淘汰與刪除功能;所述數(shù)據(jù)安全管理用于實現(xiàn)數(shù)據(jù)索引單向加密,數(shù)據(jù)信息可逆加解密,數(shù)據(jù)分片HASH加解密的功能;
[0009]所述數(shù)據(jù)層包含流媒體視頻格式解析與數(shù)據(jù)存儲,用于實現(xiàn)流媒體視頻格式解析,以及根據(jù)視頻拖動請求進行視頻流重組的功能,同時采用數(shù)據(jù)碎片技術(shù),按照紅黑平衡樹算法,將數(shù)據(jù)以塊的方式存儲,存儲順序采用HASH方式。
[0010]進一步地,所述數(shù)據(jù)索引存儲于相應(yīng)的數(shù)據(jù)文件中,包含文件索引與文件塊索引,其中,所述文件索引采用紅黑平衡樹算法建立緩存文件索引,時間復(fù)雜度為O(logn);所述文件塊索引采用對象數(shù)組存儲,時間復(fù)雜度為0(1);
[0011]進一步地,同一個文件的數(shù)據(jù)塊存儲在同一個數(shù)據(jù)文件里,數(shù)據(jù)文件由文件Metadata信息與文件數(shù)據(jù)組成,所述文件Metadata信息包含校驗值、版本、緩存方式、視頻類型、原文件大小、原文件修改時間屬性、原文件最后訪問時間與原文件最后未訪問周期。
[0012]優(yōu)選地,所述數(shù)據(jù)碎片技術(shù)將數(shù)據(jù)拆分成固定大小的數(shù)據(jù)塊進行存儲,每個數(shù)據(jù)塊的大小為256KB-2MB ;所述數(shù)據(jù)塊由塊頭與塊體組成,塊頭包含塊數(shù)據(jù)的單向加密校驗值、塊數(shù)據(jù)的長度與塊數(shù)據(jù)的有效偏移量,其中,元數(shù)據(jù)和塊頭均采用DES3可逆加密算法進行加密存儲;
[0013]進一步地,所述數(shù)據(jù)淘汰包含時效與LRU兩種策略,當(dāng)數(shù)據(jù)存儲超過最后未訪問時限時,數(shù)據(jù)被自動清除;如果數(shù)據(jù)訪問未到達(dá)最后未訪問時限,但是存儲空間已不足,則使用LRU算法淘汰最久且最少訪問的緩存文件。
[0014]本發(fā)明還提供利用上述基于HTTP代理的移動流媒體離線緩存系統(tǒng)進行離線緩存的方法,其特殊之處在于,包括以下步驟:
[0015]1)緩存模塊調(diào)用步驟:移動APP調(diào)用緩存代理提供的API接口初始化、啟動與停止,所述Android采用JNI實現(xiàn),所述1S采用Objective C++實現(xiàn);
[0016]2) Web Services調(diào)用步驟:具體為:
[0017]移動APP調(diào)用緩存代理提供的Web Services接口連接HTTP Server ;
[0018]所述HTTP Server向會話調(diào)度引擎發(fā)送HTTP Sess1n創(chuàng)建請求,會話調(diào)度引擎建立 HTTP Sess1n ;
[0019]所述HTTP Sess1n執(zhí)行下載啟動、停止、信息讀取與清除緩存指令,其中,所述HTTP Sess1n執(zhí)行下載啟動指令時,先由會話調(diào)度引擎建立Download Sess1n,然后由Download Sess1n使用HTTP Client與流媒體視頻服務(wù)器建立連接,并取得數(shù)據(jù),然后交由存儲管理完成數(shù)據(jù)存儲;
[0020]3)流媒體服務(wù)提供步驟:具體為:
[0021]利用HTML5 Video Player根據(jù)流媒體視頻URL與HTTP Server建立連接,其中所述URL帶token參數(shù),用于驗證訪問有效性;
[0022]所述HTTP Server向會話調(diào)度引擎發(fā)送HTTP Sess1n創(chuàng)建請求,會話調(diào)度引擎建立 HTTP Sess1n ;
[0023]所述HTTP Sess1n進行三步操作:第一步,訪問合法性驗證,即將token交由HTTPClient向Token認(rèn)證中心進行驗證,驗證不通過,則響應(yīng)錯誤結(jié)果,驗證通過,則繼續(xù)下一步服務(wù);第二步,流媒體數(shù)據(jù)獲取,首先交由存儲管理檢查數(shù)據(jù)是否存在,如果存在,則直接進行下一步,如果不存在,則讓HTTP Client按塊向流媒體視頻服務(wù)器獲取數(shù)據(jù),并交由存儲管理進行數(shù)據(jù)存儲;第三步,流媒體數(shù)據(jù)響應(yīng),從存儲管理中取得流媒體數(shù)據(jù),組成數(shù)據(jù)流,響應(yīng)給 HTML5Video Player 0
[0024]在上述步驟中,緩存位置的選擇方法是使用存儲空間最大的SD卡作為緩存卡,具體為:從系統(tǒng)讀取SD卡列表與相應(yīng)信息,對比并找到存儲空間最大的SD卡路徑,然后創(chuàng)建數(shù)據(jù)存儲目錄;
[0025]數(shù)據(jù)緩存分為預(yù)先存儲與邊播邊存儲兩種,在網(wǎng)絡(luò)環(huán)境較好的情況下可預(yù)先下載并存儲,在網(wǎng)絡(luò)不穩(wěn)定或無網(wǎng)的環(huán)境下觀看;在網(wǎng)絡(luò)環(huán)境好的情況下邊播邊存儲。
[0026]進一步地,針對邊播邊存儲的方式,在取得流媒體視頻文件頭數(shù)據(jù)后,先解析出視頻文件的平均比特率,然后做適量的增量調(diào)整以確定一個合理的限速值,根據(jù)這個值進行數(shù)據(jù)請求限速。
[0027]本發(fā)明移動流媒體離線緩存代理包含移動端應(yīng)用層、接口層、緩存代理層與數(shù)據(jù)層,其中,緩存代理層為該應(yīng)用的主體,緩存代理采用存儲技術(shù)、碎片技術(shù)、限速技術(shù)、視頻拖動技術(shù)與數(shù)據(jù)加密驗證安全技術(shù),實現(xiàn)存儲最優(yōu)路徑選擇、快速索引建立、及時數(shù)據(jù)更新、最佳數(shù)據(jù)淘汰、安全數(shù)據(jù)存儲、播放極速響應(yīng)等,做到了數(shù)據(jù)防拷貝、防篡改與防盜鏈功能,具體有益效果如下:
[0028](1)在移動終端上,流媒體回看時,播放流暢無卡頓,大大提升用戶終極體驗;
[0029](2)移動流媒體邊下載邊播的過程中,根據(jù)視頻比特率大小確定下載速度,既保證了流暢播放,又節(jié)省了服務(wù)器帶寬;
[0030](3)移動流媒體預(yù)緩存完成后,無死角,隨時隨地均可觀看,極大地拓展了移動流媒體的應(yīng)用;
[0031](4)移動流媒體訪問采用中心統(tǒng)一驗證方式,且移動端本地數(shù)據(jù)信息與數(shù)據(jù)塊采用可逆HASH加密方法,確保了數(shù)據(jù)的安全性。
【附圖說明】
[0032]圖1為一種基于HTTP代理的移動流媒體離線緩存系統(tǒng)結(jié)構(gòu)圖;
[0033]圖2為一種基于HTTP代理的移動流媒體離線緩存方法流程圖;
[0034]圖3為一種數(shù)據(jù)文件結(jié)構(gòu)圖;
[0035]圖4為一種Metadata信息存儲結(jié)構(gòu)圖;
[0036]圖5為一種數(shù)據(jù)存儲原理圖;
[0037]圖6為一種數(shù)據(jù)塊結(jié)構(gòu)圖。
【具體實施方式】
[0038]下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
[0039]如圖1所示為一種基于HTTP代理的移動流媒體離線緩存系統(tǒng),包括移動端應(yīng)用層,接口層,緩存代理層,數(shù)據(jù)層,其中:
[0040]所述移動端應(yīng)用層,采用代碼兼容技術(shù)使移動流媒體緩存的各個功能模塊代碼都能在 Android、1S、Windows CE 平臺上運行;
[0041]所述接口層包含API接口與Web Services接口;所述API接口實現(xiàn)移動平臺應(yīng)用的兼容調(diào)用,完成代理啟動、停止、設(shè)置路徑的功能;所述Web Services接口采用HTTP調(diào)用方式實現(xiàn)下載任務(wù)啟動、停止、信息讀取、緩存清理的功能;
[0042]所述緩存代理層包含HTTP代理、會話調(diào)度引擎、存儲管理與數(shù)據(jù)安全管理;所述HTTP代理采用HTTP標(biāo)準(zhǔn)協(xié)議,實現(xiàn)HTTP服務(wù)端與HTTP客戶端功能;所述會話調(diào)度引擎實現(xiàn)會話管理功能,并完成流媒體視頻請求與相應(yīng)調(diào)度工作;所述存儲管理實現(xiàn)數(shù)據(jù)索引、存儲、淘汰與刪除功能;所述數(shù)據(jù)安全管理用于實現(xiàn)數(shù)據(jù)索引單向加密,數(shù)據(jù)信息可逆加解密,數(shù)據(jù)分片HASH加解密的功能;
[0043]在數(shù)據(jù)索引中,所述數(shù)據(jù)索引存儲于相應(yīng)的數(shù)據(jù)文件中,包含文件索引與文件塊索引,其中,所述文件索引采用紅黑平衡樹算法建立緩存文件索引,時間復(fù)雜度為O(logn);所述文件塊索引采用對象數(shù)組存儲,時間復(fù)雜度為0(1);
[0044]在數(shù)據(jù)存儲中,如圖3、圖4所示,同一個文件的數(shù)據(jù)塊存儲在同一個數(shù)據(jù)文件里,數(shù)據(jù)文件由文件Metadata信息與文件數(shù)據(jù)組成,所述文件Metadata信息包含校驗值、版本、緩存方式、視頻類型、原文件大小、原文件修改時間屬性、原文件最后訪問時間與原文件最后未訪問周期;其中,數(shù)據(jù)塊采用固定大小存儲,存儲順序采用HASH方式,如圖5所示,假設(shè)視頻文件大小為Fsize,數(shù)據(jù)塊大小為Ksize,數(shù)據(jù)塊序號為Knum,HASH函數(shù)基數(shù)為Nbase,數(shù)據(jù)塊數(shù)量 Dnum = Fsize/Ksize+ (Fsize % Ksize ? 1:0),則數(shù)據(jù)塊分組數(shù)量 Nnum=Dnum/Nbase+ (Dnum% Nbase ? 1:0),數(shù)據(jù)塊所在組編號為 Narray = Knum% Dnum,相同組內(nèi)的數(shù)據(jù)塊按順序存儲,數(shù)據(jù)分組之間也按順序存儲;根據(jù)數(shù)據(jù)存儲原理可知,設(shè)定了數(shù)據(jù)塊大小與HASH函數(shù)基數(shù),并取得了視頻文件大小后,數(shù)據(jù)塊之間的存儲順序與相對位置就可以確定;
[0045]數(shù)據(jù)更新時,根據(jù)文件修改時間屬性更新文件,視頻文件第一次取得時,在數(shù)據(jù)文件的Metadata中存儲源文件修改時間屬性,當(dāng)該文件再次被訪問時,先與源視頻服務(wù)器對應(yīng)文件對比修改時間屬性,如果不相同,則更新本地對應(yīng)存儲數(shù)據(jù);
[0046]在存儲淘汰時,所述數(shù)據(jù)淘汰包含時效與LRU兩種策略,這兩種策略結(jié)合使用,當(dāng)數(shù)據(jù)存儲超過最后未訪問時限時,數(shù)據(jù)被自動清除;如果數(shù)據(jù)訪問未到達(dá)最后未訪問時限,但是存儲空間已不足,則使用LRU算法淘汰最久且最少訪問的緩存文件;
[0047]所述數(shù)據(jù)碎片技術(shù)將數(shù)據(jù)拆分成固定大小的數(shù)據(jù)塊進行存儲,為了降低磁盤讀寫對緩存代理產(chǎn)生的影響,這個數(shù)據(jù)塊的大小不宜過大,也不宜過小,經(jīng)過反復(fù)測試,結(jié)果為數(shù)據(jù)塊的大小在256KB?2MB之間最合適;
[0048]傳統(tǒng)文件下載如果分塊下載則是以塊為單