本發(fā)明涉及視頻播放技術(shù)領(lǐng)域,尤其涉及一種flash資源加載方法及裝置。
背景技術(shù):
目前,flash(一種動(dòng)畫創(chuàng)作與應(yīng)用程序開發(fā)于一身的創(chuàng)作軟件)被廣泛的用于網(wǎng)頁設(shè)計(jì)和網(wǎng)頁動(dòng)畫制作及網(wǎng)頁視頻播放等。大多數(shù)的視頻網(wǎng)站包括直播網(wǎng)站都采用flash作為視頻播放器,并且大多數(shù)的網(wǎng)頁游戲也會(huì)使用flash來開發(fā),flash的開發(fā)是使用actionscript腳本語言來開發(fā),其開發(fā)的代碼非常容易被反編譯,從而非常容易弄清楚其中的邏輯。為了對資源文件(圖片文件、聲音文件、動(dòng)畫文件等)進(jìn)行更安全的保護(hù),大多會(huì)對所有使用的資源文件進(jìn)行加密存儲(chǔ),使用的時(shí)候再進(jìn)行解密。由于編寫actionscript代碼大多使用的是單線程的順序執(zhí)行流程,最終導(dǎo)致解密多個(gè)資源文件時(shí)速度非常慢,此時(shí)視頻播放會(huì)出現(xiàn)卡頓的狀態(tài)。可見,采用flash的視頻播放器進(jìn)行視頻直播會(huì)出現(xiàn)卡頓。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例通過提供一種flash資源加載方法及裝置,解決了采用flash的視頻播放器進(jìn)行視頻直播會(huì)出現(xiàn)卡頓的技術(shù)問題。
第一方面,本發(fā)明實(shí)施例提供了一種flash資源加載方法,應(yīng)用于客戶端,包括:
獲取到加密資源文件組;
根據(jù)所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程;
通過所述至少兩個(gè)解密線程并行對所述加密資源文件組中的待解密flash資源文件進(jìn)行解密操作,以解密出各個(gè)flash資源文件;
將解密出的各個(gè)所述flash資源文件加載在flash舞臺(tái)上。
可選的,所述獲取到加密資源文件組,包括:
向存儲(chǔ)有所述加密資源文件組的服務(wù)器發(fā)送資源請求,其中,所述資源請求包括用于從所述服務(wù)器中確定出所述加密資源文件組的資源定位標(biāo)識(shí);
從所述服務(wù)器接收所述加密資源文件組中的各個(gè)待解密flash資源文件并存儲(chǔ)至同一數(shù)組。
可選的,所述向存儲(chǔ)有所述加密資源文件組的服務(wù)器發(fā)送資源請求,包括:
通過調(diào)用actionscript腳本的請求接口向所述服務(wù)器發(fā)送所述資源請求;
所述從所述服務(wù)器接收所述加密資源文件組中的各個(gè)待解密flash資源文件并存儲(chǔ)至同一數(shù)組,包括:
通過調(diào)用actionscript腳本的各個(gè)加載實(shí)例,對應(yīng)的從所述服務(wù)器下載所述加密資源文件組中的各個(gè)待解密flash資源文件并存儲(chǔ)至同一數(shù)組,其中,所述加載實(shí)例的個(gè)數(shù)與所述加密資源文件組中的各個(gè)待解密flash資源文件的個(gè)數(shù)相同。
可選的,所述根據(jù)所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程,包括:
檢測所述客戶端的cpu內(nèi)核數(shù)以及所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù);
將所述客戶端的cpu內(nèi)核數(shù)與所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)進(jìn)行對比;
如果對比結(jié)果為所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)少于或等于所述客戶端的cpu內(nèi)核數(shù),創(chuàng)建所述解密線程的個(gè)數(shù)與所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)相同;
如果對比結(jié)果為所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)多于所述客戶端的cpu內(nèi)核數(shù),創(chuàng)建所述解密線程的個(gè)數(shù)與所述客戶端的cpu內(nèi)核數(shù)相同。
可選的,所述根據(jù)所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程,包括:
檢測所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù);
判斷所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)是否少于或等于預(yù)設(shè)數(shù)量值;
如果所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)少于或等于所述預(yù)設(shè)數(shù)量值,創(chuàng)建所述解密線程的個(gè)數(shù)與所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)相同,否則創(chuàng)建所述解密線程的個(gè)數(shù)為所述預(yù)設(shè)數(shù)量值。
可選的,如果創(chuàng)建所述解密線程的個(gè)數(shù)與所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)相同,均為n個(gè),n為大于1的整數(shù),所述通過所述至少兩個(gè)解密線程并行對所述加密資源文件組中的待解密flash資源文件進(jìn)行解密操作,包括;
并行調(diào)度n個(gè)解密線程一次,對應(yīng)的對所述加密資源文件組中的n個(gè)待解密flash資源文件進(jìn)行解密操作,以解密出n個(gè)所述flash資源文件。
可選的,如果創(chuàng)建所述解密線程的個(gè)數(shù)與所述客戶端的cpu內(nèi)核數(shù)相同,均為m個(gè),所述加密資源文件組中的待解密flash資源文件為p個(gè),m為大于1的整數(shù),p為大于m的整數(shù),所述通過所述至少兩個(gè)解密線程并行對所述加密資源文件組中的待解密flash資源文件進(jìn)行解密操作,包括;
并行調(diào)度m個(gè)解密線程k次,直至解密完所述加密資源文件組中的p個(gè)待解密flash資源文件,其中,每次并行調(diào)用所述m個(gè)解密線程,以同時(shí)對所述加密資源文件組中的m個(gè)待解密flash資源文件進(jìn)行解密操作,k為大于1的整數(shù)。
第二方面,本發(fā)明實(shí)施例提供了一種flash資源加載裝置,應(yīng)用于客戶端,包括:
加密資源獲取模塊,用于獲取到加密資源文件組;
線程創(chuàng)建模塊,用于根據(jù)所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程;
并行解密模塊,用于通過所述至少兩個(gè)解密線程并行對所述加密資源文件組中的待解密flash資源文件進(jìn)行解密操作,以解密出各個(gè)flash資源文件;
資源加載模塊,用于將解密出的各個(gè)所述flash資源文件加載在flash舞臺(tái)上。
可選的,所述加密資源獲取模塊,包括:
請求發(fā)送單元,用于向存儲(chǔ)有所述加密資源文件組的服務(wù)器發(fā)送資源請求,其中,所述資源請求包括用于從所述服務(wù)器中確定出所述加密資源文件組的資源定位標(biāo)識(shí);
資源接收單元,用于從所述服務(wù)器接收所述加密資源文件組中的各個(gè)待解密flash資源文件并存儲(chǔ)至同一數(shù)組。
可選的,請求發(fā)送單元,具體用于:
通過調(diào)用actionscript腳本的請求接口向所述服務(wù)器發(fā)送所述資源請求;
所述資源接收單元,具體用于:
通過調(diào)用actionscript腳本的各個(gè)加載實(shí)例,對應(yīng)的從所述服務(wù)器下載所述加密資源文件組中的各個(gè)待解密flash資源文件并存儲(chǔ)至同一數(shù)組,其中,所述加載實(shí)例的個(gè)數(shù)與所述加密資源文件組中的各個(gè)待解密flash資源文件的個(gè)數(shù)相同。
可選的,所述線程創(chuàng)建模塊,包括:
第一個(gè)數(shù)檢測單元,用于檢測所述客戶端的cpu內(nèi)核數(shù)以及所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù);
個(gè)數(shù)對比單元,用于將所述客戶端的cpu內(nèi)核數(shù)與所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)進(jìn)行對比;
第一創(chuàng)建單元,用于如果對比結(jié)果為所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)少于或等于所述客戶端的cpu內(nèi)核數(shù),創(chuàng)建所述解密線程的個(gè)數(shù)與所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)相同,如果對比結(jié)果為所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)多于所述客戶端的cpu內(nèi)核數(shù),創(chuàng)建所述解密線程的個(gè)數(shù)與所述客戶端的cpu內(nèi)核數(shù)相同。
可選的,所述線程創(chuàng)建模塊,包括:
第二個(gè)數(shù)檢測單元,用于檢測所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù);
判斷單元,用于判斷所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)是否少于或等于預(yù)設(shè)數(shù)量值;
第二創(chuàng)建單元,用于如果所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)少于或等于所述預(yù)設(shè)數(shù)量值,創(chuàng)建所述解密線程的個(gè)數(shù)與所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)相同,否則創(chuàng)建所述解密線程的個(gè)數(shù)為所述預(yù)設(shè)數(shù)量值。
可選的,如果創(chuàng)建所述解密線程的個(gè)數(shù)與所述加密資源文件組中的待解密flash資源文件的個(gè)數(shù)相同,均為n個(gè),n為大于1的整數(shù),所述并行解密模塊,具體用于;
并行調(diào)度n個(gè)解密線程一次,同時(shí)對所述加密資源文件組中的n個(gè)待解密flash資源文件進(jìn)行解密操作,以解密出n個(gè)所述flash資源文件。
可選的,如果創(chuàng)建所述解密線程的個(gè)數(shù)與所述客戶端的cpu內(nèi)核數(shù)相同,均為m個(gè),所述加密資源文件組中的待解密flash資源文件為p個(gè),m為大于1的整數(shù),p為大于m的整數(shù),所述并行解密模塊,具體用于;
并行調(diào)度m個(gè)解密線程k次,直至解密完所述加密資源文件組中的p個(gè)待解密flash資源文件,其中,每次并行調(diào)用所述m個(gè)解密線程,同時(shí)對所述加密資源文件組中的m個(gè)待解密flash資源文件進(jìn)行解密操作,,k為大于1的整數(shù)。
本發(fā)明實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
由于采根據(jù)獲取到的加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程;通過創(chuàng)建的至少兩個(gè)解密線程并行對加密資源文件組中的待解密flash資源文件進(jìn)行解密操作,以解密出各個(gè)flash資源文件;將解密出的各個(gè)flash資源文件加載在flash舞臺(tái)上。各個(gè)線程并行對加密資源文件組中的各個(gè)待解密flash資源文件進(jìn)行解密操作,以極大的提高了對多個(gè)flash資源文件解密的速度,從而在同時(shí)或短時(shí)間需要加載到flash舞臺(tái)較多時(shí),能夠快速將這幾個(gè)需要同時(shí)或短時(shí)間加載到flash舞臺(tái)的flash資源文件同時(shí)進(jìn)行解密,減少了等待的時(shí)間,甚至不需要等待,進(jìn)而滿足加載到flash舞臺(tái)的節(jié)奏,從而有效解決了采用flash的視頻播放器進(jìn)行視頻直播會(huì)出現(xiàn)卡頓的技術(shù)問題,提高了視頻直播的流暢度,也可以更多的flash資源文件可以加密存儲(chǔ),進(jìn)一步提高了flash資源文件的存儲(chǔ)安全性。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例中flash資源加載方法的流程圖;
圖2為圖1中步驟s101的細(xì)化流程圖;
圖3為針對圖1中步驟s102的一實(shí)施方式的細(xì)化流程圖;
圖4為針對圖1中步驟s102的另一實(shí)施方式的細(xì)化流程圖;
圖5為發(fā)明實(shí)施例中flash資源加載裝置的示意圖。
具體實(shí)施方式
為了解決現(xiàn)有技術(shù)中采用flash的視頻播放器進(jìn)行直播會(huì)出現(xiàn)卡頓的技術(shù)問題,本發(fā)明實(shí)施例通過提供一種flash資源加載方法,總體思路如下:
通過創(chuàng)建多個(gè)線程,并行對獲取的加密的flash資源文件進(jìn)行解密操作。以同時(shí)對多個(gè)flash資源文件進(jìn)行解密,從而極大的提高了對多個(gè)flash資源文件同時(shí)解密的速度,從而有效解決了采用flash的視頻播放器進(jìn)行直播會(huì)出現(xiàn)卡頓的技術(shù)問題,提高了視頻直播的流暢度。
本發(fā)明實(shí)施例提供的一種flash資源加載方法,應(yīng)用于安裝有用于播放flash資源文件的播放器的客戶端,在本發(fā)明實(shí)施例中,安裝有用于播放flash資源文件的播放器的客戶端可以為智能手機(jī)或平板電腦、個(gè)人計(jì)算機(jī)。
參考圖1所示,本發(fā)明實(shí)施例提供的flash資源加載方法,包括如下步驟:
s101、獲取到加密資源文件組;
s102、根據(jù)加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程;
s103、通過創(chuàng)建的至少兩個(gè)解密線程并行對加密資源文件組中的待解密flash資源文件進(jìn)行解密操作,以解密出各個(gè)flash資源文件;
s104、將解密出的各個(gè)flash資源文件加載在flash舞臺(tái)上。
需要說明的是,創(chuàng)建解密線程的個(gè)數(shù)應(yīng)該受到客戶端的cpu內(nèi)核數(shù)的限制,即:創(chuàng)建的解密線程的個(gè)數(shù)少于或等于客戶端的cpu內(nèi)核數(shù)。
為了更好的理解上述技術(shù)方案,下面將結(jié)合說明書附圖以及具體的實(shí)施方式對上述技術(shù)方案進(jìn)行詳細(xì)的說明。
首先,執(zhí)行s101、獲取到加密資源文件組。
需要說明的是,加密資源文件組存儲(chǔ)在服務(wù)器上,加密資源文件組中包括圖片文件、聲音文件、動(dòng)畫文件中的一種或多種。針對通過網(wǎng)絡(luò)從存儲(chǔ)有flash資源文件的服務(wù)上獲取加密資源文件組,參考圖2所示,本發(fā)明可以以包括如下步驟的實(shí)施例實(shí)現(xiàn):
首先,執(zhí)行s1011、向存儲(chǔ)有加密資源文件組的服務(wù)器發(fā)送資源請求,其中,資源請求包括用于從服務(wù)器中確定出加密資源文件組的資源定位標(biāo)識(shí)。
具體的,通過調(diào)用actionscript腳本的請求接口向服務(wù)器發(fā)送資源請求。具體的請求接口為:
urlrequest(url:string=null)
其中,參數(shù)url:string標(biāo)示傳入的資源定位標(biāo)識(shí)。
接著,執(zhí)行s1012、從服務(wù)器接收加密資源文件組中的各個(gè)待解密flash資源文件并存儲(chǔ)至同一數(shù)組。
具體的,調(diào)用加載實(shí)例的加載接口來從服務(wù)器加載向服務(wù)器請求的加密資源文件組。加載實(shí)例為:基于actionscript腳本定義loader實(shí)例,。
需要說明的是,針對加密資源文件組中的各個(gè)待解密flash資源文件進(jìn)行以同樣的步驟從服務(wù)器下載。下面,以一個(gè)待解密flash資源文件的下載為例進(jìn)行解釋說明,本領(lǐng)域技術(shù)人員則可以知曉各個(gè)待解密flash資源文件的下載的實(shí)現(xiàn)方式:
通過調(diào)用加載實(shí)例的加載接口從服務(wù)器下載待解密flash資源文件。具體的加載接口如下:
load(request:urlrequest,context:loadercontext=null)
其中,參數(shù)request:urlrequest為加載的請求對象,在本發(fā)明實(shí)施例中,加載的請求對象為urlrequest對象,參數(shù)context:loadercontext用來設(shè)置域信息,本文設(shè)置為默認(rèn)值空。
在actionscript腳本中提供有l(wèi)oader類,基于loader對象的contentloadinfo的屬性注冊事件。待解密flash資源文件加載完成時(shí)觸發(fā)已經(jīng)注冊事件的回調(diào)函數(shù)執(zhí)行,以監(jiān)聽到待解密flash資源文件加載完成。
在loader對象的contentloadinfo屬性中提供用來注冊事件的接口addeventlistener,addeventlistener接口的具體原型如下:
其中,參數(shù)type:string表示注冊事件的事件類型,在本實(shí)施例中,事件類型為:注冊待解密flash資源文件加載完成事件,即:event.complete。
參數(shù)listener:function為處理待解密flash資源文件加載完成事件的回調(diào)函數(shù)。
參數(shù)usecapture:boolean=false,用于確定回調(diào)函數(shù)是運(yùn)行于捕獲階段、目標(biāo)階段還是冒泡階段,如果usecapture設(shè)置為true,則回調(diào)函數(shù)只在捕獲階段處理事件,而不在目標(biāo)或冒泡階段處理事件。如果usecapture為false,則回調(diào)函數(shù)只在目標(biāo)階段或冒泡階段處理事件。如果調(diào)用addeventlistener兩次:一次將usecapture設(shè)置為true,一次將usecapture設(shè)置為false,從而在捕獲階段、目標(biāo)階段和冒泡階段都偵聽事件。在本發(fā)明實(shí)施例中,回調(diào)函數(shù)只在目標(biāo)階段或冒泡階段處理事件。
參數(shù)priority:int用于標(biāo)示待解密flash資源文件加載完成事件的優(yōu)先級(jí),優(yōu)先級(jí)由一個(gè)帶符號(hào)的32位整數(shù)指定。數(shù)字越大,優(yōu)先級(jí)越高,在本發(fā)明實(shí)施例中,待解密flash資源文件加載完成事件的優(yōu)先級(jí)為默認(rèn)優(yōu)先級(jí):0級(jí)。
參數(shù)useweakreference:boolean用于指定回調(diào)函數(shù)是弱應(yīng)用還是強(qiáng)引用,強(qiáng)引用(默認(rèn)值)可防止回調(diào)函數(shù)被當(dāng)作垃圾回收。弱引用則沒有此作用在本實(shí)施例中,在本發(fā)明實(shí)施例中,參數(shù)useweakreference:boolean使用默認(rèn)值:false。
通過調(diào)用各個(gè)actionscript腳本的加載實(shí)例,對應(yīng)的從服務(wù)器下載加密資源文件組中的各個(gè)待解密flash資源文件并存儲(chǔ)至同一數(shù)組。
接著,各個(gè)待解密flash資源文件通過回調(diào)函數(shù)的參數(shù)evt.target.content.data來傳遞。當(dāng)各個(gè)待解密flash資源文件均下載完成后,各個(gè)待解密flash資源文件存儲(chǔ)在一個(gè)數(shù)組arraydata中。
在s101之后,接著執(zhí)行s102:根據(jù)加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程。
在本發(fā)明實(shí)施例中,根據(jù)加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程的同時(shí),創(chuàng)建的解密線程的個(gè)數(shù)少于或等于客戶端的cpu內(nèi)核數(shù)。
下面對根據(jù)加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程的同時(shí),滿足創(chuàng)建的解密線程的個(gè)數(shù)少于或等于客戶端的cpu內(nèi)核數(shù)的過程進(jìn)行詳細(xì)介紹:
在一實(shí)施方式中,參考圖3所示,s102包括:
s1021、檢測客戶端的cpu內(nèi)核數(shù)以及加密資源文件組中的待解密flash資源文件的個(gè)數(shù);
s1022、將客戶端的cpu內(nèi)核數(shù)與加密資源文件組中的待解密flash資源文件的個(gè)數(shù)進(jìn)行對比;
s1023、如果對比結(jié)果為加密資源文件組中的待解密flash資源文件的個(gè)數(shù)少于或等于客戶端的cpu內(nèi)核數(shù),創(chuàng)建解密線程的個(gè)數(shù)與待解密flash資源文件的個(gè)數(shù)相同,如果對比結(jié)果為待解密flash資源文件的個(gè)數(shù)多于客戶端的cpu內(nèi)核數(shù),創(chuàng)建解密線程的個(gè)數(shù)與客戶端的cpu內(nèi)核數(shù)相同。
以檢測到客戶端的cpu內(nèi)核數(shù)為8為例來講,如果監(jiān)測到加密資源文件組中的待解密flash資源文件2個(gè),則創(chuàng)建2個(gè)解密線程;如果監(jiān)測到加密資源文件組中的待解密flash資源文件為3個(gè),則創(chuàng)建3個(gè)解密線程;如果監(jiān)測到加密資源文件組中的待解密flash資源文件為4個(gè),則創(chuàng)建4個(gè)解密線程;如果監(jiān)測到加密資源文件組中的待解密flash資源文件為5個(gè),則創(chuàng)建5個(gè)解密線程,如果監(jiān)測到加密資源文件組中的待解密flash資源文件為6個(gè),則創(chuàng)建6個(gè)解密線程;如果監(jiān)測到加密資源文件組中的待解密flash資源文件為7個(gè),則創(chuàng)建7個(gè)解密線程;如果監(jiān)測到加密資源文件組中的待解密flash資源文件為8個(gè),則創(chuàng)建8個(gè)解密線程。如果監(jiān)測到加密資源文件組中的待解密flash資源文件為9個(gè)、10個(gè)、11個(gè)、12個(gè)等等,均創(chuàng)建8個(gè)解密線程。
具體的,通過從客戶端提取客戶端的配置信息,從客戶端的配置信息中確定出客戶端的cpu內(nèi)核數(shù)。
通過openmp(openmulti-processing,共享存儲(chǔ)并行編程)中的線程設(shè)置接口(omp_set_num_threads)指定其后用于并行解密操作的線程數(shù);
voidomp_set_num_threads(intnum_threads)
其中,參數(shù)num_thread為指定的線程數(shù)。以客戶端的cpu內(nèi)核數(shù)為8為
例來講,調(diào)用線程設(shè)置接口(omp_set_num_threads)設(shè)置線程的數(shù)目為8:
omp_set_num_threads(8)
在另一實(shí)施方式中,參考圖4所示,s102包括:
s1021'、檢測加密資源文件組中的待解密flash資源文件的個(gè)數(shù);
s1022'、判斷待解密flash資源文件的個(gè)數(shù)是否少于或等于預(yù)設(shè)數(shù)量值;
s1023'、如果待解密flash資源文件的個(gè)數(shù)少于或等于預(yù)設(shè)數(shù)量值,創(chuàng)建解密線程的個(gè)數(shù)與待解密flash資源文件的個(gè)數(shù)相同,否則創(chuàng)建解密線程的個(gè)數(shù)為預(yù)設(shè)數(shù)量值。
需要說明的是,預(yù)設(shè)數(shù)量值為當(dāng)前主流cpu的內(nèi)核數(shù)目,比如,目前主流的cpu都是8核及以上,可以調(diào)用接口來設(shè)置線程的數(shù)目為8。比如,目前主流的cpu都是16核及以上,可以調(diào)用接口來設(shè)置線程的數(shù)目為16。
調(diào)用線程設(shè)置接口(omp_set_num_threads)設(shè)置線程的數(shù)目為8:
omp_set_num_threads(8)
則如果判斷出待解密flash資源文件少于或等于8個(gè),則根據(jù)解密線程的個(gè)數(shù)與待解密flash資源文件的個(gè)數(shù)相同,則如果判斷出待解密flash資源文件多于8個(gè),均只創(chuàng)建8個(gè)解密線程。
在s102之后,接著執(zhí)行s103:通過創(chuàng)建的至少兩個(gè)解密線程并行對加密資源文件組中的待解密flash資源文件進(jìn)行解密操作,以解密出各個(gè)flash資源文件。
針對s102中創(chuàng)建解密線程的個(gè)數(shù)與待解密flash資源文件的個(gè)數(shù)相同,均為n個(gè)的情況,n為大于1的整數(shù),在s103中:并行調(diào)度n個(gè)解密線程一次,對應(yīng)的對加密資源文件組中的n個(gè)待解密flash資源文件進(jìn)行解密操作,以解密出n個(gè)flash資源文件。
具體的,n個(gè)解密線程,一個(gè)解密線程對應(yīng)解密一個(gè)待解密flash資源文件,以一一對應(yīng)的對n個(gè)待解密flash資源文件進(jìn)行解密。
在具體實(shí)施過程中,通過編譯器指令通知編譯器,該預(yù)置編譯器指令后續(xù)的解密偽代碼通過n個(gè)解密線程并行執(zhí)行,來對同一數(shù)組中存儲(chǔ)的n個(gè)解密線程進(jìn)行解密操作。具體的,通知編譯器的編譯器指令為:
#pragmaompparallelforschedule(dynamic)
其中,參數(shù)dynamic標(biāo)示使用動(dòng)態(tài)調(diào)度策略來調(diào)度創(chuàng)建的n個(gè)解密線程。解密偽代碼具體為:
其中,arraydata.size則標(biāo)示是數(shù)組的大小,decodedata是解密接口,對數(shù)組中的第i個(gè)待解密flash資源文件進(jìn)行解密操作。
針對s102中創(chuàng)建解密線程的個(gè)數(shù)與客戶端的cpu內(nèi)核數(shù)相同,均為m個(gè),述加密資源文件組中的待解密flash資源文件為p個(gè),m為大于1的整數(shù),p為大于m的整數(shù),s103包括:并行調(diào)度m個(gè)解密線程k次,直至解密完加密資源文件組中的p個(gè)待解密flash資源文件,其中,每次并行調(diào)用m個(gè)解密線程,以同時(shí)對加密資源文件組中的m個(gè)待解密flash資源文件進(jìn)行解密操作,k為大于1的整數(shù)。
需要說明的是,并行調(diào)度m個(gè)解密線程k次,所指為進(jìn)行k次調(diào)度,其中,每次調(diào)度都是使進(jìn)行m個(gè)解密線程進(jìn)行解密,一共執(zhí)行k*m個(gè)待解密flash資源文件的解密。
具體的,通過編譯器指令通知編譯器,該預(yù)置編譯器指令后續(xù)的解密偽代碼通過m個(gè)解密線程并行執(zhí)行,p個(gè)待解密flash資源文件進(jìn)行解密操作。第一次調(diào)度m個(gè)解密線程,以對p個(gè)待解密flash資源文件中的m個(gè)進(jìn)行解密操作,第二次調(diào)度m個(gè)解密線程,對p個(gè)待解密flash資源文件中的另外m個(gè)進(jìn)行解密操作,以此規(guī)律進(jìn)行,直至解密完p個(gè)待解密flash資源文件。
具體的,通知編譯器的編譯器指令為:
#pragmaompparallelforschedule(dynamic)
其中,參數(shù)dynamic標(biāo)示使用動(dòng)態(tài)調(diào)度策略來調(diào)度創(chuàng)建的m個(gè)解密線程。其中,解密偽代碼具體為
其中,arraydata.size標(biāo)示是數(shù)組的大小,decodedata是解密接口,對數(shù)組中的第i個(gè)待解密flash資源文件進(jìn)行解密操作。
具體的,m個(gè)解密線程,一個(gè)解密線程對應(yīng)解密一個(gè)待解密flash資源文件,以一一對應(yīng)的對m個(gè)待解密flash資源文件進(jìn)行解密,針對m個(gè)解密線程中的每個(gè)解密線程,解密完第一個(gè)待解密flash資源文件后,再解密下一個(gè)待解密flash資源文件。
通過openmp自動(dòng)創(chuàng)建多線程來并行執(zhí)行解密操作后,則所有存儲(chǔ)在arraydata數(shù)組中的待解密flash資源文件都被解密完,解密得到各個(gè)可以加載到flash舞臺(tái)的flash資源文件。
基于步驟s103的如上兩種實(shí)施方式,能夠更充分的使用cpu多核的優(yōu)勢,將對待解密flash資源文件的解密邏輯剝離出來并行運(yùn)行,更合理的、最大限度的創(chuàng)建并行的多個(gè)線程來對待解密flash資源文件進(jìn)行數(shù)據(jù)解密操作,從而極大提高了數(shù)據(jù)解密的速度,從而可以將所有的資源文件都進(jìn)行加密后存儲(chǔ)到服務(wù)器,而不再是部分,然后從服務(wù)器請求加密后的flash資源文件后再使用并行處理來解密文件后進(jìn)行使用,進(jìn)一步提高了flash資源文件的存儲(chǔ)安全性。
在s103之后,接著執(zhí)行s104:將解密出的各個(gè)flash資源文件加載在flash舞臺(tái)上。
解密出的各個(gè)flash資源文件包括圖片文件、聲音文件、動(dòng)畫文件中的一種或多種,對于不同類型的flash資源文件使用不同的flash類型對象來加載。針對圖片文件,則使用圖片對象來加載到flash舞臺(tái)中,針對聲音則使用聲音對象來加載。
例如,圖片資源varimg:bitmap=newbitmap(arraydata[i]),創(chuàng)建一個(gè)圖片對象stage.addchild(img),將圖片對象stage.addchild(img)加載到flash舞臺(tái)。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供了一種flash資源加載裝置,參考圖5所示,包括:
加密資源獲取模塊201,用于獲取到加密資源文件組;
線程創(chuàng)建模塊202,用于根據(jù)加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程;
并行解密模塊203,用于通過至少兩個(gè)解密線程并行對加密資源文件組中的待解密flash資源文件進(jìn)行解密操作,以解密出各個(gè)flash資源文件;
資源加載模塊204,用于將解密出的各個(gè)flash資源文件加載在flash舞臺(tái)上。
可選的,加密資源獲取模塊,包括:
請求發(fā)送單元,用于向存儲(chǔ)有加密資源文件組的服務(wù)器發(fā)送資源請求,其中,資源請求包括用于從服務(wù)器中確定出加密資源文件組的資源定位標(biāo)識(shí);
資源接收單元,用于從服務(wù)器接收加密資源文件組中的各個(gè)待解密flash資源文件并存儲(chǔ)至同一數(shù)組。
可選的,請求發(fā)送單元,具體用于:
通過調(diào)用actionscript腳本的請求接口向服務(wù)器發(fā)送資源請求;
資源接收單元,具體用于:
通過調(diào)用actionscript腳本的各個(gè)加載實(shí)例,對應(yīng)的從服務(wù)器下載加密資源文件組中的各個(gè)待解密flash資源文件并存儲(chǔ)至同一數(shù)組,其中,加載實(shí)例的個(gè)數(shù)與加密資源文件組中的各個(gè)待解密flash資源文件的個(gè)數(shù)相同。
可選的,線程創(chuàng)建模塊,包括:
第一個(gè)數(shù)檢測單元,用于檢測客戶端的cpu內(nèi)核數(shù)以及加密資源文件組中的待解密flash資源文件的個(gè)數(shù);
個(gè)數(shù)對比單元,用于將客戶端的cpu內(nèi)核數(shù)與加密資源文件組中的待解密flash資源文件的個(gè)數(shù)進(jìn)行對比;
第一創(chuàng)建單元,用于如果對比結(jié)果為加密資源文件組中的待解密flash資源文件的個(gè)數(shù)少于或等于客戶端的cpu內(nèi)核數(shù),創(chuàng)建解密線程的個(gè)數(shù)與加密資源文件組中的待解密flash資源文件的個(gè)數(shù)相同,如果對比結(jié)果為加密資源文件組中的待解密flash資源文件的個(gè)數(shù)多于客戶端的cpu內(nèi)核數(shù),創(chuàng)建解密線程的個(gè)數(shù)與客戶端的cpu內(nèi)核數(shù)相同。
可選的,線程創(chuàng)建模塊,包括:
第二個(gè)數(shù)檢測單元,用于檢測加密資源文件組中的待解密flash資源文件的個(gè)數(shù);
判斷單元,用于判斷加密資源文件組中的待解密flash資源文件的個(gè)數(shù)是否少于或等于預(yù)設(shè)數(shù)量值;
第二創(chuàng)建單元,用于如果加密資源文件組中的待解密flash資源文件的個(gè)數(shù)少于或等于預(yù)設(shè)數(shù)量值,創(chuàng)建解密線程的個(gè)數(shù)與加密資源文件組中的待解密flash資源文件的個(gè)數(shù)相同,否則創(chuàng)建解密線程的個(gè)數(shù)為預(yù)設(shè)數(shù)量值。
可選的,如果創(chuàng)建解密線程的個(gè)數(shù)與加密資源文件組中的待解密flash資源文件的個(gè)數(shù)相同,均為n個(gè),n為大于1的整數(shù),并行解密模塊,具體用于;
并行調(diào)度n個(gè)解密線程一次,同時(shí)對加密資源文件組中的n個(gè)待解密flash資源文件進(jìn)行解密操作,以解密出n個(gè)flash資源文件。
可選的,如果創(chuàng)建解密線程的個(gè)數(shù)與客戶端的cpu內(nèi)核數(shù)相同,均為m個(gè),加密資源文件組中的待解密flash資源文件為p個(gè),m為大于1的整數(shù),p為大于m的整數(shù),并行解密模塊,具體用于;
并行調(diào)度m個(gè)解密線程k次,直至解密完加密資源文件組中的p個(gè)待解密flash資源文件,其中,每次并行調(diào)用m個(gè)解密線程,同時(shí)對加密資源文件組中的m個(gè)待解密flash資源文件進(jìn)行解密操作,k為大于1的整數(shù)。
由于本實(shí)施例所介紹的裝置為實(shí)施本發(fā)明實(shí)施例中flash資源加載方法所采用的裝置,故而基于本發(fā)明實(shí)施例中所介紹flash資源加載方法,本領(lǐng)域所屬技術(shù)人員能夠了解本實(shí)施例的裝置的具體實(shí)施方式以及其各種變化形式,所以在此對于該裝置如何實(shí)現(xiàn)本發(fā)明實(shí)施例中的方法不再詳細(xì)介紹。只要本領(lǐng)域所屬技術(shù)人員實(shí)施本發(fā)明實(shí)施例中信息處理的方法所采用的裝置,都屬于本發(fā)明所欲保護(hù)的范圍。
上述本發(fā)明實(shí)施例中的技術(shù)方案,至少具有如下的技術(shù)效果或優(yōu)點(diǎn):
由于采根據(jù)獲取到的加密資源文件組中的待解密flash資源文件的個(gè)數(shù)創(chuàng)建至少兩個(gè)解密線程;通過至少兩個(gè)解密線程并行對加密資源文件組中的待解密flash資源文件進(jìn)行解密操作,以解密出各個(gè)flash資源文件;將解密出的各個(gè)flash資源文件加載在flash舞臺(tái)上。從而通過多線程并行對多個(gè)待解密flash資源文件進(jìn)行解密操作,以極大的提高了對多個(gè)flash資源文件解密的速度,從而在同時(shí)或短時(shí)間需要加載到flash舞臺(tái)較多時(shí),能夠快速將這幾個(gè)同時(shí)或短時(shí)間需要加載到flash舞臺(tái)的flash資源文件同時(shí)進(jìn)行解密,減少了等待的時(shí)間,甚至不需要等待,進(jìn)而滿足加載到flash舞臺(tái)的節(jié)奏,從而有效解決了采用flash的視頻播放器進(jìn)行直播會(huì)出現(xiàn)卡頓的技術(shù)問題,提高了視頻直播的流暢度。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。