一種動(dòng)態(tài)多線程下載裝置及其下載方法
【專利摘要】本發(fā)明提供了一種動(dòng)態(tài)多線程下載裝置,包括:地址獲取模塊,用于獲取待下載流媒體文件的URL和待下載流媒體文件中下載單元的URI;頭信息獲取模塊,根據(jù)地址獲取模塊所獲取的URL,通過HTTP的頭下載方式獲取頭信息;網(wǎng)速獲取模塊,用于獲取當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速信息,并根據(jù)所獲取的所述網(wǎng)速信息計(jì)算出當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量;線程數(shù)計(jì)算模塊,基于頭信息獲取模塊所獲得的頭信息和網(wǎng)速獲取模塊所計(jì)算出的單個(gè)線程一次適合的下載任務(wù)量,計(jì)算下載一個(gè)下載單元所需要的并發(fā)線程數(shù)量;處理模塊,基于線程數(shù)計(jì)算模塊所計(jì)算出的并發(fā)線程數(shù)量,啟動(dòng)具有并發(fā)線程數(shù)量的并發(fā)線程,進(jìn)行下載處理。本發(fā)明還提供本發(fā)明提供了一種動(dòng)態(tài)多線程下載方法。
【專利說明】一種動(dòng)態(tài)多線程下載裝置及其下載方法
[0001]摶術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)絡(luò)多媒體下載技術(shù),特別是一種動(dòng)態(tài)多線程下載裝置及其下載方法。
[0002]【背景技術(shù)】:
流媒體(Streaming media)是指將一連串的媒體數(shù)據(jù)壓縮后,經(jīng)過網(wǎng)絡(luò)分段傳送數(shù)據(jù),在網(wǎng)絡(luò)上實(shí)時(shí)傳輸影音以供觀賞的一種技術(shù)與過程。目前主流的流媒體傳輸協(xié)議包括:
(I)RTMP (Real Time Messaging Protocol,實(shí)時(shí)消息傳輸協(xié)議),是 Adobe 公司為 Flash播放器和服務(wù)器之間音頻、視頻文件和數(shù)據(jù)傳輸而開發(fā)的開放協(xié)議;(2) HLS (HTTP LiveStreaming, HTTP實(shí)時(shí)流傳輸協(xié)議),是Apple公司開發(fā)的,基于HTTP協(xié)議,通過Web服務(wù)器將直播或點(diǎn)播的視頻文件、音頻數(shù)據(jù)推送至基于Apple的iOS系統(tǒng)的終端設(shè)備,如iPhone、iPad的技術(shù);(3)RTSP (Real Time Streaming Protocol,實(shí)時(shí)流傳輸協(xié)議),是由哥倫比亞大學(xué)、網(wǎng)景和Real Networks等公司提交的IETF RFC標(biāo)準(zhǔn);等等。
[0003]隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,在線點(diǎn)播或?qū)崟r(shí)播放流媒體的音、視頻已經(jīng)成為了一種普遍現(xiàn)象。如果通過單線程下載技術(shù)的話,在網(wǎng)絡(luò)速度較慢時(shí),容易造成視頻的播放不夠流暢,出現(xiàn)卡頓的現(xiàn)象,影響用戶的觀賞效果。為了解決上述單線程下載所造成的上述問題,在現(xiàn)有技術(shù)中,采用了多線程下載技術(shù),其根據(jù)需要下載的流媒體文件的下載單元長(zhǎng)度,確定下載片段的大小,然后根據(jù)下載片段的大小確定并發(fā)下載線程的數(shù)量,并通過啟動(dòng)與所確定的并發(fā)下載線程數(shù)量相同的下載線程進(jìn)行并發(fā)下載。在上述現(xiàn)有的多線程下載技術(shù)中,并發(fā)下載線程數(shù)量一旦確定,則在整個(gè)流媒體文件的下載過程中并發(fā)下載線程數(shù)量不會(huì)發(fā)生變化。然而,由于網(wǎng)絡(luò)環(huán)境經(jīng)常是不穩(wěn)定的,使得網(wǎng)絡(luò)傳輸速度處于震蕩狀態(tài)。當(dāng)網(wǎng)絡(luò)環(huán)境非常優(yōu)越、網(wǎng)絡(luò)傳輸速度很快時(shí),會(huì)出現(xiàn)實(shí)現(xiàn)確定的并發(fā)下載線程數(shù)量太多,會(huì)導(dǎo)致每個(gè)線程分配的下載片段的大小相對(duì)每個(gè)線程的下載速度過小,從而造成多余的系統(tǒng)開銷;當(dāng)網(wǎng)絡(luò)環(huán)境較差、網(wǎng)絡(luò)傳輸速度較慢時(shí),會(huì)出現(xiàn)實(shí)現(xiàn)確定的并發(fā)下載線程數(shù)量太少,會(huì)導(dǎo)致每個(gè)線程分配的下載片段的大小相對(duì)每個(gè)線程的下載速度過大,從而會(huì)造成下載速度慢。
[0004]
【發(fā)明內(nèi)容】
:
為了解決上述技術(shù)問題,本發(fā)明提供了一種根據(jù)網(wǎng)絡(luò)環(huán)境動(dòng)態(tài)地使用多線程下載流媒體文件的技術(shù)方案,具體的技術(shù)方案如下:
本發(fā)明提供了一種動(dòng)態(tài)多線程下載裝置,包括:地址獲取模塊,用于獲取待下載流媒體文件的URL和所述待下載流媒體文件中下載單元的URI ;頭信息獲取模塊,根據(jù)所述地址獲取模塊所獲取的URL,通過HTTP的頭下載方式獲取頭信息;網(wǎng)速獲取模塊,用于獲取當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速信息,并根據(jù)所獲取的所述網(wǎng)速信息計(jì)算出當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量;線程數(shù)計(jì)算模塊,基于所述頭信息獲取模塊所獲得的所述頭信息和所述網(wǎng)速獲取模塊所計(jì)算出的所述單個(gè)線程一次適合的下載任務(wù)量,計(jì)算下載一個(gè)下載單元所需要的并發(fā)線程數(shù)量;處理模塊,基于所述線程數(shù)計(jì)算模塊所計(jì)算出的并發(fā)線程數(shù)量,啟動(dòng)具有所述并發(fā)線程數(shù)量的并發(fā)線程,進(jìn)行下載處理。[0005]優(yōu)選地,所述下載裝置還包括播放器模塊,所述播放器模塊對(duì)已下載的流媒體數(shù)據(jù)進(jìn)行播放處理。
[0006]優(yōu)選地,所述下載裝置還包括存儲(chǔ)模塊,用于存儲(chǔ)已下載的流媒體數(shù)據(jù)。
[0007]優(yōu)選地,所述存儲(chǔ)模塊是所述播放器模塊的播放緩沖區(qū)。
[0008]優(yōu)選地,所述頭信息包含所述下載單元的長(zhǎng)度信息和多線程下載標(biāo)識(shí)符。
[0009]優(yōu)選地,所述下載裝置還包括:多線程下載識(shí)別模塊,基于所述多線程下載標(biāo)識(shí)符識(shí)別所述待下載流媒體文件是否支持多線程下載模式。
[0010]優(yōu)選地,所述地址獲取模塊能夠獲取m3u8文件,并通過解析所述m3u8文件以獲取所述待下載流媒體文件中下載單元的URI。
[0011]優(yōu)選地,所述播放器模塊判斷所述下載單元是否是所述待下載流媒體文件中的當(dāng)前播放順序的下載單元,如果所述下載單元是所述待下載流媒體文件中的當(dāng)前播放順序的下載單元,則進(jìn)行所述播放處理。
[0012]優(yōu)選地,當(dāng)所述多線程下載識(shí)別模塊判斷所述待下載流媒體文件不支持多線程下載模式時(shí),啟動(dòng)單線程下載模式。
[0013]本發(fā)明的另一方面還提供一種動(dòng)態(tài)多線程下載方法,包括:地址獲取步驟,獲取待下載流媒體文件的URL和所述待下載流媒體文件中下載單元的URI ;頭信息獲取步驟,根據(jù)所述地址獲取步驟中所獲取的URL,通過HTTP的頭下載方式獲取頭信息;網(wǎng)速獲取步驟,獲取當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速信息,并根據(jù)所獲取的所述網(wǎng)速信息計(jì)算出當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量;線程數(shù)計(jì)算步驟,基于所述頭信息獲取步驟中所獲得的所述頭信息和所述網(wǎng)速獲取步驟中所計(jì)算出的所述單個(gè)線程一次適合的下載任務(wù)量,計(jì)算下載一個(gè)下載單元所需要的并發(fā)線程數(shù)量;處理步驟,基于所述線程數(shù)計(jì)算步驟中所計(jì)算出的并發(fā)線程數(shù)量,啟動(dòng)具有所述并發(fā)線程數(shù)量的并發(fā)線程,進(jìn)行下載處理。
[0014]優(yōu)選地,所述下載方法還包括播放步驟,對(duì)已下載的流媒體數(shù)據(jù)進(jìn)行播放處理。
[0015]優(yōu)選地,所述下載方法還包括存儲(chǔ)步驟,用于存儲(chǔ)所述已下載的流媒體數(shù)據(jù)。
[0016]優(yōu)選地,所述已下載的流媒體數(shù)據(jù)被存儲(chǔ)到播放器模塊的緩沖區(qū)中。
[0017]優(yōu)選地,所述頭信息包含所述下載單元的長(zhǎng)度信息和多線程下載標(biāo)識(shí)符。
[0018]優(yōu)選地,所述下載方法還包括:多線程下載識(shí)別步驟,基于所述多線程下載標(biāo)識(shí)符識(shí)別所述待下載流媒體文件是否支持多線程下載模式。
[0019]優(yōu)選地,在所述地址獲取步驟中,能夠獲取m3u8文件,并通過解析所述m3u8文件以獲取所述待下載流媒體文件中下載單元的URI。
[0020]優(yōu)選地,在所述播放步驟中,判斷所述下載單元是否是所述待下載流媒體文件中的當(dāng)前播放順序的下載單元,如果所述下載單元是所述待下載流媒體文件中的當(dāng)前播放順序的下載單元,則進(jìn)行所述播放處理。
[0021]優(yōu)選地,當(dāng)在所述多線程下載識(shí)別步驟中判斷所述待下載流媒體文件不支持多線程下載模式時(shí),啟動(dòng)單線程下載模式。
[0022]通過實(shí)施本發(fā)明的技術(shù)方案,當(dāng)流媒體文件本身支持多線程下載模式時(shí),本發(fā)明獲取當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速信息,并根據(jù)上述網(wǎng)速信息和下載相應(yīng)的小片段的大小,計(jì)算出下載當(dāng)前相應(yīng)的小片段所要使用并發(fā)線程數(shù)量,以同時(shí)下載相應(yīng)的小片段數(shù)據(jù),由此可以根據(jù)當(dāng)前網(wǎng)絡(luò)環(huán)境的優(yōu)劣和相應(yīng)的小片段的大小動(dòng)態(tài)地調(diào)整所要使用的并發(fā)線程數(shù)量,從而解決因線程數(shù)量太多,造成多余的系統(tǒng)開銷,或因線程數(shù)量太少,造成下載速度慢的問題。
[0023]【專利附圖】
【附圖說明】:
圖1為本發(fā)明實(shí)施方式涉及的動(dòng)態(tài)多線程下載裝置的結(jié)構(gòu)框圖;
圖2為本發(fā)明實(shí)施方式涉及的動(dòng)態(tài)多線程下載流媒體的流程圖;
圖3為本發(fā)明實(shí)施方式涉及的基于HLS協(xié)議動(dòng)態(tài)多線程下載流媒體的流程圖。
[0024]【具體實(shí)施方式】:
下面根據(jù)附圖所示實(shí)施方式闡述本項(xiàng)發(fā)明。
[0025]圖1顯示了本發(fā)明實(shí)施方式涉及的動(dòng)態(tài)多線程下載裝置的結(jié)構(gòu)框圖。如圖1所示,上述動(dòng)態(tài)多線程下載裝置包括地址獲取模塊1、頭信息獲取模塊2、網(wǎng)速獲取模塊3、線程數(shù)計(jì)算模塊4、處理模塊7、存儲(chǔ)模塊6、播放器模塊5、多線程下載識(shí)別模塊8和總線9,其中地址獲取模塊1、頭信息獲取模塊2、網(wǎng)速獲取模塊3、線程數(shù)計(jì)算模塊4、處理模塊7、存儲(chǔ)模塊
6、播放器模塊5和多線程下載識(shí)別模塊8通過總線9連接。
[0026]上述地址獲取模塊I用于獲取待下載流媒體文件的統(tǒng)一資源定位符(UniformResource Locator, URL)。上述URL指明了上述流媒體文件所在的服務(wù)器地址以及其他相關(guān)文件的地址。上述頭信息獲取模塊2根據(jù)上述地址獲取模塊I所獲取的URL獲取超文本傳輸協(xié)議(Hypertext Transfer Protocol, HTTP)的頭(Head)信息。其中,上述頭信息包含下載單元的長(zhǎng)度信息和多線程下載標(biāo)識(shí)符,上述下載單元可以為上述待下載流媒體文件被分割后所形成的碎片文件(ts碎片文件)。上述網(wǎng)速獲取模塊3用于獲取在下載上述下載單元時(shí)當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速信息,并根據(jù)所獲取的當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速計(jì)算出當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量。其中,上述單個(gè)線程一次適合的下載任務(wù)量可以是在當(dāng)前網(wǎng)絡(luò)環(huán)境下用一個(gè)線程下載所能達(dá)到的最大下載任務(wù)量。
[0027]上述線程數(shù)計(jì)算模塊4基于上述頭信息獲取模塊2所獲得的上述待下載流媒體文件的下載單元的長(zhǎng)度信息和上述網(wǎng)速獲取模塊3所計(jì)算出的當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量,計(jì)算下載該下載單元所需要的并發(fā)線程數(shù)量。例如,根據(jù)上述頭信息獲取模塊2所獲取上述頭信息,獲得上述下載單元的長(zhǎng)度為60Kb,并根據(jù)上述網(wǎng)速獲取模塊3所獲取的當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量為10Kb,則上述線程數(shù)計(jì)算模塊4可以計(jì)算出所需的并發(fā)線程數(shù)量為6 ;根據(jù)上述頭信息獲取模塊2所獲取上述頭信息,獲得需要下載的下一個(gè)下載單元的長(zhǎng)度也為60Kb,而在下載的下一個(gè)下載單元時(shí)的網(wǎng)絡(luò)環(huán)境改善,根據(jù)上述網(wǎng)速獲取模塊3所獲取的當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量可以為20Kb/s,則上述線程數(shù)計(jì)算模塊4可以計(jì)算出所需的并發(fā)線程數(shù)量為3。由此,可以使得并發(fā)線程數(shù)量隨著當(dāng)前網(wǎng)絡(luò)環(huán)境的變化而改變,從而不會(huì)導(dǎo)致線程數(shù)量太多,致使每個(gè)線程分配的下載任務(wù)小,從而造成多余的系統(tǒng)開銷,或線程數(shù)量太少,致使每個(gè)線程分配的下載任務(wù)大,從而會(huì)造成下載速度慢的問題。
[0028]上述處理模塊7基于上述線程數(shù)計(jì)算模塊4所計(jì)算出的并發(fā)線程數(shù)量,啟動(dòng)具有上述并發(fā)線程數(shù)量的并發(fā)線程,進(jìn)行下載處理。具體地,當(dāng)上述線程數(shù)計(jì)算模塊4計(jì)算出所需的并發(fā)線程數(shù)量后,啟動(dòng)具有上述線程數(shù)量的并發(fā)多線程,使得上述并發(fā)多線程各自負(fù)責(zé)的數(shù)據(jù)部分。當(dāng)所有的線程都下載完成后,將每一個(gè)線程下載的數(shù)據(jù)拼接成完整的下載單元,同時(shí)關(guān)閉所有的線程,并將上述下載單元存儲(chǔ)到上述存儲(chǔ)模塊6中。其中,上述存儲(chǔ)模塊6可以是上述播放器模塊5的播放緩沖區(qū)。
[0029]上述播放器模塊5從上述存儲(chǔ)模塊6中讀取下載完成的數(shù)據(jù)進(jìn)行播放。具體地,上述播放器模塊5從上述存儲(chǔ)模塊6中讀取已下載完成的流媒體數(shù)據(jù),對(duì)上述流媒體數(shù)據(jù)進(jìn)行解封裝、解碼和展現(xiàn),完成流媒體文件的播放。
[0030]上述多線程下載識(shí)別模塊8基于上述頭信息獲取模塊2所獲取的頭信息識(shí)別上述待下載流媒體文件是否支持多線程下載模式。
[0031]在上述實(shí)施方式中,上述地址獲取模塊I還可以獲取下載單元(碎片文件)的通用資源標(biāo)識(shí)符(Uniform Resource Identifier,簡(jiǎn)稱 URI)。
[0032]圖2為動(dòng)態(tài)多線程下載流媒體的流程圖。下面,參照?qǐng)D2說明在本實(shí)施方式涉及的動(dòng)態(tài)多線程下載流媒體的處理過程。
[0033]上述地址獲取模塊I根據(jù)用戶所提供的需要下載的流媒體文件的URL來獲取待下載流媒體文件的URL和上述碎片文件的URI (步驟SI)。上述頭信息獲取模塊2根據(jù)上述地址獲取模塊I所獲取的URL獲取HTTP的包含下載單元的長(zhǎng)度信息和多線程下載標(biāo)識(shí)符的頭信息(步驟S2)。上述多線程下載識(shí)別模塊8基于上述頭信息獲取模塊2所獲取的頭信息識(shí)別上述待下載流媒體文件是否支持多線程下載模式(步驟S3)。如果上述多線程下載識(shí)別模塊8識(shí)別出上述頭信息中包含多線程下載標(biāo)識(shí)符信息(步驟S3:是),則由上述網(wǎng)速獲取模塊3獲取當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速信息,并根據(jù)所獲取的當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速信息計(jì)算出當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量(步驟S4)。上述線程數(shù)計(jì)算模塊4基于上述頭信息獲取模塊2所獲得的上述待下載流媒體文件的下載單元的長(zhǎng)度信息和上述網(wǎng)速獲取模塊3所計(jì)算出的當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量,計(jì)算出下載該下載單元所需要的并發(fā)線程數(shù)量(步驟S5)。上述處理模塊7基于上述線程數(shù)計(jì)算模塊4所計(jì)算出的并發(fā)線程數(shù)量和上述地址獲取模塊I所獲取的上述碎片文件的URI,啟動(dòng)具有上述線程數(shù)量的并發(fā)多線程,使得上述并發(fā)多線程各自負(fù)責(zé)的數(shù)據(jù)部分(步驟S6)。上述處理模塊7判斷是否所有的線程都下載完成(步驟S7)。當(dāng)上述處理模塊7判斷還有沒有完成下載的線程(步驟S7:否),等待所有的線程都下載完成。當(dāng)所有的線程都下載完成后(步驟S7:是),上述處理模塊7將每一個(gè)線程下載的數(shù)據(jù)拼接成完整的下載單元,同時(shí)關(guān)閉所有的線程,并將上述下載單元存儲(chǔ)到上述存儲(chǔ)單元6中(步驟S8),然后進(jìn)入步驟S10。
[0034]如果上述多線程下載識(shí)別模塊8識(shí)別出上述頭信息中不包含多線程下載標(biāo)識(shí)符信息(步驟S3:否),則上述處理模塊7啟動(dòng)單線程下載模式(步驟S9),然后進(jìn)入步驟S10。
[0035]上述處理模塊7判斷是否待下載的流媒體文件中的所有的下載單元都下載完成(步驟S10)。當(dāng)上述處理模塊7判斷待下載的流媒體文件中還有需要下載的下載單元(步驟SlO:否)時(shí),返回步驟S2,重復(fù)步驟S2至步驟10,進(jìn)行下一個(gè)下載單元的下載任務(wù)。當(dāng)上述處理模塊7判斷待下載的流媒體文件中的所有的下載單元都下載完成(步驟SlO:是),由播放器模塊5進(jìn)行播放處理(步驟S11)。上述播放器模塊5從上述存儲(chǔ)模塊6中讀取已下載完成的流媒體數(shù)據(jù),對(duì)上述流媒體數(shù)據(jù)進(jìn)行解封裝、解碼和展現(xiàn),完成流媒體文件的播放。
[0036]在基于HLS (HTTP Live Streaming,HTTP實(shí)時(shí)流傳輸協(xié)議)協(xié)議動(dòng)態(tài)多線程下載流媒體的過程中,對(duì)于點(diǎn)播服務(wù)來說成功下載一次m3u8文件即可獲取該視頻所有的下載單元(ts碎片文件)的下載地址URI,在后續(xù)的播放過程中不需要更新m3u8文件。而對(duì)于直播服務(wù)來說下載一次m3u8文件一般只能獲取當(dāng)前的幾個(gè)下載單元(ts碎片文件)的下載地址URI,在播放的過程中需要不斷地更新m3u8文件以此不斷地獲取新的下載單元(ts碎片文件)的下載地址URI。
[0037]圖3是基于HLS協(xié)議動(dòng)態(tài)多線程下載流媒體的流程圖。下面,參照?qǐng)D3說明在本實(shí)施方式涉及的以基于HLS協(xié)議通過動(dòng)態(tài)多線程下載TS格式視頻文件的處理過程。
[0038]上述地址獲取模塊I根據(jù)用戶所提供的待下載的TS格式視頻文件的URL來獲取待下載TS格式視頻文件的URL (步驟S21)。上述地址獲取模塊I還獲取m3u8文件,并解析上述m3u8文件以及獲取下載單元(ts碎片文件)的下載地址(URI)(步驟S22)。上述頭信息獲取模塊2根據(jù)上述地址獲取模塊I所獲取的URL通過HTTP的頭下載方式獲取包含ts碎片文件的長(zhǎng)度信息和多線程下載標(biāo)識(shí)符的頭信息(步驟S23)。此后的步驟S24?步驟S30與步驟S3?步驟S9相同。
[0039]在上述步驟S31中,上述處理模塊7判斷所有已經(jīng)獲取了 URI的下載單元均已下載完成。當(dāng)上述處理模塊7判斷還存在已經(jīng)獲取了 URI的下載單元沒有下載(步驟S31:否)時(shí),返回步驟S23,重復(fù)步驟S23至步驟30,進(jìn)行下一個(gè)已經(jīng)取了 URI的下載單元的下載任務(wù)。當(dāng)上述處理模塊7判斷所有已經(jīng)獲取了 URI的下載單元均已下載完成(步驟S31:是),則進(jìn)一步判斷待下載的流媒體文件中的所有的下載單元是否都下載完成(步驟S32)。
[0040]當(dāng)上述處理模塊7判斷待下載的流媒體文件中還有需要下載的下載單元(步驟S32:否)時(shí),返回步驟S22,重復(fù)步驟S22至步驟32,進(jìn)行下一個(gè)下載單元的下載任務(wù)。當(dāng)上述處理模塊7判斷待下載的流媒體文件中的所有的下載單元都下載完成(步驟S32:是),由播放器模塊5進(jìn)行播放處理(步驟S33)。上述播放器模塊5從上述存儲(chǔ)模塊6中讀取已下載完成的流媒體數(shù)據(jù),對(duì)上述流媒體數(shù)據(jù)進(jìn)行解封裝、解碼和展現(xiàn),完成流媒體文件的播放。
[0041]在上述實(shí)施方式中,上述處理模塊7根據(jù)各線程負(fù)責(zé)的數(shù)據(jù)部分在上述下載單元中的排列序號(hào)信息或時(shí)間順序信息進(jìn)行拼接,在下載端形成完整的上述下載單元。
[0042]在上述實(shí)施方式中,當(dāng)上述待下載流媒體文件的所有下載單元下載完成后,上述播放器模塊5對(duì)上述流媒體數(shù)據(jù)進(jìn)行解封裝、解碼和展現(xiàn),完成流媒體文件的播放。但本發(fā)明并限于此,當(dāng)上述處理模塊7判斷一個(gè)完整的下載單元下載完成時(shí),上述播放器模塊5從上述存儲(chǔ)模塊6中讀取該已下載完成的下載單元,并判斷該已下載完成的下載單元是否是上述待下載流媒體文件的當(dāng)前播放順序的下載單元。如果該已下載完成的下載單元不是上述下載流媒體文件的當(dāng)前播放順序的下載單元,則上述播放器模塊5等待上述下載流媒體文件的當(dāng)前播放順序的下載單元的下載完成,如果該已下載完成的下載單元是上述下載流媒體文件的當(dāng)前播放順序的下載單元,則上述播放器模塊5從上述存儲(chǔ)模塊6讀取上述下載流媒體文件的當(dāng)前播放順序的下載單元,并對(duì)上述下載單元的數(shù)據(jù)進(jìn)行解封裝、解碼和展現(xiàn),無須等待上述下載流媒體文件的所有下載單元的下載完成就進(jìn)行上述流媒體文件的播放處理。例如,如果上述播放器模塊5對(duì)上述待下載流媒體文件進(jìn)行初始播放處理,則判斷該已下載完成的下載單元不是上述下載流媒體文件的第一播放順序的下載單元,如果該已下載完成的下載單元不是上述下載流媒體文件的第一播放順序的下載單元,則上述播放器模塊5等待上述下載流媒體文件的第一播放順序的下載單元的下載完成,如果該已下載完成的下載單元是上述下載流媒體文件的第一播放順序的下載單元,則上述播放器模塊5從上述存儲(chǔ)模塊6讀取上述下載流媒體文件的第一播放順序的下載單元,并對(duì)上述流媒體文件進(jìn)行播放處理;同樣,當(dāng)上述下載流媒體文件的第一播放順序的下載單元播放完畢后,如果上述播放器模塊5判斷上述下載流媒體文件的第二播放順序的下載單元已下載完成,則繼續(xù)播放該已下載完成的第二播放順序的下載單元,如果上述下載流媒體文件的第二播放順序的下載單元未已下載完成,則上述播放器模塊5等待上述下載流媒體文件的第二播放順序的下載單元的下載完成;依次類推,上述播放器模塊5完成后續(xù)播放順序的下載單元的播放處理。
[0043]在上述實(shí)施方式中,上述流媒體文件為音視頻文件。
[0044]前述的詳細(xì)說明及附圖是通過文字解釋和圖示來進(jìn)行的,其目的不在于限定權(quán)利要求的保護(hù)范圍。本說明書中的【具體實(shí)施方式】的各個(gè)變種對(duì)于普通技術(shù)人員來說顯而易見,并處于權(quán)利要求及其等同技術(shù)的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種動(dòng)態(tài)多線程下載裝置,包括: 地址獲取模塊,用于獲取待下載流媒體文件的URL和所述待下載流媒體文件中下載單元的URI ; 頭信息獲取模塊,根據(jù)所述地址獲取模塊所獲取的URL,獲取HTTP的頭信息; 網(wǎng)速獲取模塊,用于獲取在下載所述下載單元時(shí)當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速信息,并根據(jù)所獲取的所述網(wǎng)速信息計(jì)算出當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量; 線程數(shù)計(jì)算模塊,基于所述頭信息獲取模塊所獲得的所述頭信息和所述網(wǎng)速獲取模塊所計(jì)算出的所述單個(gè)線程一次適合的下載任務(wù)量,計(jì)算下載一個(gè)下載單元所需要的并發(fā)線程數(shù)量; 處理模塊,基于所述線程數(shù)計(jì)算模塊所計(jì)算出的并發(fā)線程數(shù)量,啟動(dòng)具有所述并發(fā)線程數(shù)量的并發(fā)線程 ,進(jìn)行下載處理。
2.根據(jù)權(quán)利要求1所述的下載裝置,還包括播放器模塊,所述播放器模塊對(duì)已下載的流媒體數(shù)據(jù)進(jìn)行播放處理。
3.根據(jù)權(quán)利要求2所述的下載裝置,還包括存儲(chǔ)模塊,用于存儲(chǔ)已下載的流媒體數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的下載裝置,其特征在于:所述存儲(chǔ)模塊是所述播放器模塊的播放緩沖區(qū)。
5.根據(jù)權(quán)利要求1~4所述的下載裝置,其特征在于:所述頭信息包含所述下載單元的長(zhǎng)度信息和多線程下載標(biāo)識(shí)符。
6.根據(jù)權(quán)利要求5所述的下載裝置,還包括:多線程下載識(shí)別模塊,基于所述多線程下載標(biāo)識(shí)符識(shí)別所述待下載流媒體文件是否支持多線程下載模式。
7.根據(jù)權(quán)利要求5所述的下載裝置,其特征在于:所述地址獲取模塊能夠獲取m3u8文件,并通過解析所述m3u8文件以獲取所述待下載流媒體文件中下載單元的URI。
8.根據(jù)權(quán)利要求4所述的下載裝置,其特征在于:所述播放器模塊判斷所述下載單元是否是所述待下載流媒體文件中的當(dāng)前播放順序的下載單元,如果所述下載單元是所述待下載流媒體文件中的當(dāng)前播放順序的下載單元,則進(jìn)行所述播放處理。
9.根據(jù)權(quán)利要求6所述的下載裝置,其特征在于:當(dāng)所述多線程下載識(shí)別模塊判斷所述待下載流媒體文件不支持多線程下載模式時(shí),啟動(dòng)單線程下載模式。
10.一種動(dòng)態(tài)多線程下載方法,包括: 地址獲取步驟,獲取待下載流媒體文件的URL和所述待下載流媒體文件中下載單元的URI ; 頭信息獲取步驟,根據(jù)所述地址獲取步驟中所獲取的URL,獲取HTTP的頭信息; 網(wǎng)速獲取步驟,獲取當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)速信息,并根據(jù)所獲取的所述網(wǎng)速信息計(jì)算出當(dāng)前網(wǎng)絡(luò)環(huán)境下單個(gè)線程一次適合的下載任務(wù)量; 線程數(shù)計(jì)算步驟,基于所述頭信息獲取步驟中所獲得的所述頭信息和所述網(wǎng)速獲取步驟中所計(jì)算出的所述單個(gè)線程一次適合的下載任務(wù)量,計(jì)算下載一個(gè)下載單元所需要的并發(fā)線程數(shù)量; 處理步驟,基于所述線程數(shù)計(jì)算步驟中所計(jì)算出的并發(fā)線程數(shù)量,啟動(dòng)具有所述并發(fā)線程數(shù)量的并發(fā)線程,進(jìn)行下載處理。
11.根據(jù)權(quán)利要求10所述的下載方法,還包括播放步驟,對(duì)已下載的流媒體數(shù)據(jù)進(jìn)行播放處理。
12.根據(jù)權(quán)利要求11所述的下載方法,還包括存儲(chǔ)步驟,用于存儲(chǔ)所述已下載的流媒體數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的下載方法,其特征在于:所述已下載的流媒體數(shù)據(jù)被存儲(chǔ)到播放器模塊的緩沖區(qū)中。
14.根據(jù)權(quán)利要求1~13所述的下載方法,其特征在于:所述頭信息包含所述下載單元的長(zhǎng)度信息和多線程下載標(biāo)識(shí)符。
15.根據(jù)權(quán)利要求14所述的下載方法,還包括:多線程下載識(shí)別步驟,基于所述多線程下載標(biāo)識(shí)符識(shí)別所述待下載流媒體文件是否支持多線程下載模式。
16.根據(jù)權(quán)利要求14所述的下載方法,其特征在于:在所述地址獲取步驟中,能夠獲取m3u8文件,并通過解析所述m3u8文件以獲取所述待下載流媒體文件中下載單元的URI。
17.根據(jù)權(quán)利要求13所述的下載方法,其特征在于:在所述播放步驟中,判斷所述下載單元是否是所述待下載流媒體文件中的當(dāng)前播放順序的下載單元,如果所述下載單元是所述待下載流媒體文件中的當(dāng)前播放順序的下載單元,則進(jìn)行所述播放處理。
18.根據(jù)權(quán)利要求15所述的下載方法,還包括:當(dāng)在所述多線程下載識(shí)別步驟中判斷所述待下載流媒體文件不支持多線程下載模式時(shí),啟動(dòng)單線程下載模式。
【文檔編號(hào)】H04L29/08GK103929427SQ201410164738
【公開日】2014年7月16日 申請(qǐng)日期:2014年4月23日 優(yōu)先權(quán)日:2014年4月23日
【發(fā)明者】張金良 申請(qǐng)人:無錫天脈聚源傳媒科技有限公司