亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種多線程下載方法和裝置與流程

文檔序號(hào):12040150閱讀:214來(lái)源:國(guó)知局
一種多線程下載方法和裝置與流程
本申請(qǐng)涉及超文本傳輸協(xié)議(HypertextTransferProtocol,HTTP)網(wǎng)絡(luò)下載領(lǐng)域,特別涉及一種多線程下載方法和裝置。

背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,在線觀看流媒體視頻已成為一種流行趨勢(shì)。在視頻播放的同時(shí)進(jìn)行數(shù)據(jù)更新下載、增量實(shí)時(shí)獲取媒體呈現(xiàn)描述(mediapresentationdescription,MPD)更新、碼流切換的優(yōu)化、帶寬的優(yōu)化。現(xiàn)有實(shí)現(xiàn)中,通過(guò)單線程下載視頻,并且邊下載邊播放。在不限制網(wǎng)絡(luò)速度的情況下,通??梢粤鲿巢シ牛钱?dāng)網(wǎng)絡(luò)帶寬比較緊張,或網(wǎng)絡(luò)不穩(wěn)定的時(shí)候,帶寬出現(xiàn)震蕩,單線程因?yàn)橄螺d方式和下載速度的限制,不能及時(shí)的捕捉到當(dāng)前帶寬的切換,響應(yīng)會(huì)有延遲,當(dāng)網(wǎng)絡(luò)由高變低,就會(huì)出現(xiàn)視頻播放緩沖,當(dāng)網(wǎng)絡(luò)由低變高,視頻的播放就不能及時(shí)的切換到更清晰的畫面,影響用戶體驗(yàn)。

技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N多線程下載方法和裝置,能夠在CPU低功耗的情況下,高效利用網(wǎng)絡(luò)帶寬下載視音頻數(shù)據(jù),進(jìn)而提高播放視音頻的流暢度。為解決上述技術(shù)問(wèn)題,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:一種多線程下載方法,所述方法包括:獲取待下載視音頻的統(tǒng)一資源定位符URL,根據(jù)該URL通過(guò)超文本傳輸協(xié)議HTTP的頭Head下載方式獲取Head信息,所述Head信息包含下載單元長(zhǎng)度和多線程下載標(biāo)識(shí)符;若根據(jù)所述多線程下載標(biāo)識(shí)符確定該待下載視音頻支持多線程下載,則根據(jù)所述下載單元長(zhǎng)度,確定下載片段的大小和并發(fā)下載線程數(shù)量,啟動(dòng)與確定的并發(fā)下載線程數(shù)量相同的下載線程進(jìn)行并發(fā)下載;當(dāng)任一下載片段下載完成時(shí),確定該下載片段是否為所述下載單元的第一個(gè)下載片段,如果是,傳輸該下載片段進(jìn)行播放;否則,不進(jìn)行下載片段的傳輸,繼續(xù)等待下一個(gè)下載片段的下載完成。一種裝置,所述裝置包括:獲取單元、確定單元和處理單元;所述獲取單元,進(jìn)一步用于獲取待下載視音頻的統(tǒng)一資源定位符URL,根據(jù)該URL通過(guò)超文本傳輸協(xié)議HTTP的頭Head下載方式獲取Head信息,所述Head信息包含下載單元長(zhǎng)度和多線程下載標(biāo)識(shí)符;所述確定單元若根據(jù)所述獲取單元獲取的多線程下載標(biāo)識(shí)符確定該待下載視音頻支持多線程下載,則根據(jù)所述下載單元長(zhǎng)度,確定下載片段的大小和并發(fā)下載線程數(shù)量;用于確定所述處理單元下載的任一下載片段完成時(shí),確定該下載片段是否為所述下載單元的第一個(gè)下載片段;所述處理單元,用于啟動(dòng)與所述確定單元確定的并發(fā)下載線程數(shù)量相同的下載線程進(jìn)行并發(fā)下載;當(dāng)確定該已下載完成的下載片段為所述下載單元的第一個(gè)下載片段,傳輸該下載片段進(jìn)行播放;當(dāng)確定該已下載完成的下載片段不為所述下載單元的第一個(gè)下載片段,不進(jìn)行下載片段的傳輸,繼續(xù)等待下一個(gè)下載片段的下載完成。綜上所述,本申請(qǐng)通過(guò),對(duì)支持多線程下載的視音頻,根據(jù)下載單元長(zhǎng)度,確定下載片段大小和并發(fā)下載線程數(shù)量,啟動(dòng)與確定的并發(fā)下載線程數(shù)量相同的下載線程進(jìn)行并發(fā)下載;當(dāng)任一下載片段下載完成時(shí),若確定該下載片段為所述下載單元的第一個(gè)下載片段,傳輸該下載片段進(jìn)行播放。在CPU低功耗的情況下,能夠高效利用網(wǎng)絡(luò)帶寬下載視音頻數(shù)據(jù),進(jìn)而提高視音頻播放的流暢度。附圖說(shuō)明圖1為本發(fā)明實(shí)施例中多線程下載方法流程示意圖;圖2為本發(fā)明具體實(shí)施例中應(yīng)用于上述技術(shù)的裝置的結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明所述方案作進(jìn)一步地詳細(xì)說(shuō)明。本發(fā)明實(shí)施例中提出一種多線程下載方法,對(duì)于支持多線程下載的視音頻,根據(jù)下載單元長(zhǎng)度,確定下載片段大小和并發(fā)下載線程數(shù)量,啟動(dòng)與確定的并發(fā)下載線程數(shù)量相同的下載線程進(jìn)行并發(fā)下載;當(dāng)任一下載片段下載完成時(shí),若確定該下載片段為所述下載單元的第一個(gè)下載片段,傳輸該下載片段進(jìn)行播放。在CPU低功耗的情況下,能夠高效利用網(wǎng)絡(luò)帶寬下載視音頻數(shù)據(jù),進(jìn)而提高視音頻播放的流暢度。該方法應(yīng)用于為自適應(yīng)流媒體播放設(shè)備下載待播放的視音頻,可以單一部署在一臺(tái)設(shè)備上,也可以部署在自適應(yīng)流媒體播放設(shè)備上。下面結(jié)合附圖,詳細(xì)說(shuō)明本發(fā)明具體實(shí)施例中如何實(shí)現(xiàn)多線程下載方法的。參見圖1,圖1為本發(fā)明實(shí)施例中多線程下載方法流程示意圖。具體步驟為:步驟101,設(shè)備獲取待下載視音頻的統(tǒng)一資源定位符(UniformResourceLocatorURL),根據(jù)該URL通過(guò)HTTP的頭(Head)下載方式獲取Head信息,所述Head信息包含下載單元長(zhǎng)度和多線程下載標(biāo)識(shí)符。在具體實(shí)現(xiàn)時(shí),獲取待下載視音頻的URL的方法,可以是直接獲取給定的URL,也可以是從MPD文件中解析出的MPD信息中獲取,該URL作為HTTP下載所指向的路徑。在對(duì)待下載的視音頻進(jìn)行下載之前,需要根據(jù)獲取的URL通過(guò)HTTP的Head下載方式獲取Head信息,并根據(jù)Head信息來(lái)進(jìn)一步確定如何下載該視音頻。本步驟中該設(shè)備獲取Head信息,具體包括:該設(shè)備創(chuàng)建執(zhí)行Head下載的線程,設(shè)置執(zhí)行Head下載的下載參數(shù)和回調(diào)函數(shù);并根據(jù)設(shè)置的執(zhí)行Head下載的下載參數(shù)和回調(diào)函數(shù),初始化所述執(zhí)行Head下載的線程后,執(zhí)行Head下載,在所述回調(diào)函數(shù)中獲取Head信息。其中,配置的下載參數(shù)包括下載超時(shí)時(shí)間等。步驟102,該設(shè)備若根據(jù)所述多線程下載標(biāo)識(shí)符確定該待下載視音頻支持多線程下載,則根據(jù)所述下載單元長(zhǎng)度,確定下載片段的大小和并發(fā)下載線程數(shù)量,啟動(dòng)與確定的并發(fā)下載線程數(shù)量相同的下載線程進(jìn)行并發(fā)下載。該設(shè)備預(yù)先配置最小下載片段的大小和最大下載片段的大小,配置最大并發(fā)下載線程數(shù)量和最小并發(fā)下載線程數(shù)量。本步驟中根據(jù)所述下載單元長(zhǎng)度,確定下載片段的大小,具體包括:若獲取的下載單元長(zhǎng)度小于配置的最大下載片段的大小與最大并發(fā)下載線程數(shù)量的乘積,則確定每個(gè)下載片段的大小為最小下載片段的大小。若獲取的下載單元長(zhǎng)度不小于配置的最大下載片段的大小與最大并發(fā)下載線程數(shù)量的乘積,則確定每個(gè)下載片段的大小為最大下載片段的大小。本步驟中該設(shè)備確定并發(fā)下載線程數(shù)量,具體包括:該設(shè)備將獲取的下載單元長(zhǎng)度除以確定的每個(gè)下載片段的大小,獲取下載單元被等分的數(shù)量;若所述下載單元被等分的數(shù)量小于最小并發(fā)下載線程數(shù)量,則并發(fā)下載線程數(shù)量確定為最小并發(fā)下載線程數(shù)量;若所述下載單元被等分的數(shù)量大于最大并發(fā)下載線程數(shù)量,則并發(fā)下載線程數(shù)量確定為最大并發(fā)下載線程數(shù)量;若所述下載單元被等分的數(shù)量不小于最小并發(fā)下載線程數(shù)量,且不大于最大并發(fā)下載線程數(shù)量,則并發(fā)下載線程數(shù)量確定為所述下載單元被等分的數(shù)量。下載片段如果太小,就需要分段下載很多次,每一次下載片段的結(jié)束都需要對(duì)下載線程的關(guān)閉和再初始化分配新的下載任務(wù),需要占用CPU資源,影響整個(gè)工程的效率;下載片段如果太大,每一次下載片段就需要占用大量的時(shí)間片來(lái)完成,導(dǎo)致處理部分的時(shí)間片沒(méi)有數(shù)據(jù)可處理,也會(huì)影響整個(gè)工程的效率。下載線程數(shù)量如果太小,就會(huì)反復(fù)的結(jié)束和重新初始化新的線程,下載線程數(shù)量如果太多,就會(huì)導(dǎo)致下載的數(shù)據(jù)分散,都會(huì)影響工程的效率。因此,需要計(jì)算一個(gè)合理的下載片段的大小和下載線程的數(shù)量確定下載片段的大小和下載線程數(shù)量,是為了保證在不占用過(guò)多CPU資源的前提下,針對(duì)不同大小的可下載單元,最大化下載速率,并且本發(fā)明具體實(shí)施例中需要兼顧實(shí)現(xiàn)環(huán)境,不僅需要優(yōu)化下載,也需要盡可能不占用過(guò)多CPU資源,以保證數(shù)據(jù)的傳輸和處理,因此,給出了較優(yōu)的確定下載片段的大小和下載線程數(shù)量的實(shí)現(xiàn)方法。單線程的單次掃描通常最大數(shù)據(jù)量為16K,所以對(duì)不同大小的文件下載方式不一樣:MPD文件和M3U8文件很小,一般都小于16K,單線程的一次下載就可以完成,如果分段下載,反而增加CPU的功耗,下載速度并不能得到提升;對(duì)于較大的可下載音視頻文件,單線程的單次下載數(shù)據(jù)量固定,如果線性下載,下載時(shí)間也會(huì)隨著文件大小的變化而線性變化,如果此時(shí)采用多線程并發(fā)下載,就可以保證每次并發(fā)下載的數(shù)據(jù)總量遠(yuǎn)遠(yuǎn)超過(guò)16K,下載時(shí)間就會(huì)大大縮短。該若根據(jù)所述多線程下載標(biāo)識(shí)符確定該待下載視音頻不支持多線程下載,啟動(dòng)單線程下載,同現(xiàn)有實(shí)現(xiàn),這里不再詳細(xì)描述。該設(shè)備啟動(dòng)與確定的并發(fā)下載線程數(shù)量相同的下載線程進(jìn)行并發(fā)下載,包括:該設(shè)備創(chuàng)建與并發(fā)下載線程數(shù)量相同的下載線程,設(shè)置執(zhí)行下載的下載參數(shù)和回調(diào)函數(shù);并根據(jù)設(shè)置的下載參數(shù)和回調(diào)函數(shù),初始化所述執(zhí)行并發(fā)下載的線程后,執(zhí)行并發(fā)下載,在所述回調(diào)函數(shù)中獲取下載片段。其中,配置的下載參數(shù)包括下載超時(shí)時(shí)間、各下載片段在下載單元中的位置順序等。步驟103,當(dāng)任一下載片段下載完成時(shí),該設(shè)備確定該下載片段是否為所述下載單元的第一個(gè)下載片段,如果是,傳輸該下載片段進(jìn)行播放;否則,不進(jìn)行下載片段的傳輸,繼續(xù)等待下一個(gè)下載片段的下載完成。本發(fā)明下載的音視頻是為了流暢播放,因此,下載片段的數(shù)據(jù)應(yīng)該按其在服務(wù)器上的數(shù)據(jù)的順序進(jìn)行播放,即不會(huì)下載完一個(gè)下載片段就播放,而是下載單元的第一個(gè)下載片段下載完成時(shí),開始傳輸,并播放。再檢查第二個(gè)片段是否下載完成,以此類推。本發(fā)明具體實(shí)施例中,需要為各下載線程分配一個(gè)與下載片段等同大小的緩沖區(qū),按照各緩沖區(qū)將要緩沖的下載片段在所述下載單元中的位置,為各所述緩存區(qū)標(biāo)號(hào),并將各緩沖區(qū)按其標(biāo)號(hào)順序加入一個(gè)隊(duì)列。本步驟具體實(shí)現(xiàn)時(shí),包括:該設(shè)備確定所述隊(duì)列頂端的下載片段是否已下載完成,如果是,將該隊(duì)列頂端的下載片段進(jìn)行傳輸;否則,不進(jìn)行下載片段的傳輸,繼續(xù)等待下一個(gè)下載片段的下載完成。該設(shè)備將該隊(duì)列頂端的下載片段進(jìn)行傳輸,之后,將該下載片段刪除,并確定當(dāng)前隊(duì)列頂端的下載片段是否已下載完成,如果是,繼續(xù)傳輸;否則,等待下一個(gè)下載片段的下載完成。如果第一次啟動(dòng)的所有下載線程并未能將需要下載的下載單元完全下載,則已下載完成的下載線程會(huì)重新初始化,繼續(xù)等待下載待下載單元中的未下載的下載片段。具體實(shí)現(xiàn)如下:當(dāng)任何一個(gè)下載線程下載完成時(shí),從正在下載的線程中移除,如果所述下載單元中還有未下載的下載片段,且等待下載的下載線程未分配下載該下載片段,為該下載線程分配所述下載單元中未下載的,且待下載的下載線程中未分配的下載片段,并將該線程初始化后,添加到下載隊(duì)列中,等待下載。本發(fā)明具體實(shí)施例中確定合適大小的下載片段和合適數(shù)量的下載進(jìn)程,能夠邊下載邊播放,進(jìn)而使播放更加的流暢。本發(fā)明具體實(shí)施例中多線程并發(fā)下載在單位時(shí)間內(nèi)的下載量在單線程的下載基礎(chǔ)上有很大的提升,因此,在設(shè)備啟動(dòng)初始,能夠快速的獲取到足夠的數(shù)據(jù)填充緩沖區(qū),可以更快的支持無(wú)卡頓的啟動(dòng)播放。多線程下載提高帶寬利用率,加速啟動(dòng),快速跳轉(zhuǎn),流暢快進(jìn),快退,高效的多比特源切換,減少緩沖,提高用戶體驗(yàn)。本發(fā)明具體實(shí)施例中基于同樣的發(fā)明構(gòu)思,還提出一種裝置。參見圖2,圖2為本發(fā)明具體實(shí)施例中應(yīng)用于上述技術(shù)的裝置的結(jié)構(gòu)示意圖。該裝置包括:獲取單元201、確定單元202和處理單元203。獲取單元201,進(jìn)一步用于獲取待下載視音頻的URL,根據(jù)該URL通過(guò)HTTP的Head下載方式獲取Head信息,所述Head信息包含下載單元長(zhǎng)度和多線程下載標(biāo)識(shí)符。確定單元202若根據(jù)獲取單元201獲取的多線程下載標(biāo)識(shí)符確定該待下載視音頻支持多線程下載,則根據(jù)所述下載單元長(zhǎng)度,確定下載片段的大小和并發(fā)下載線程數(shù)量;用于確定處理單元203下載的任一下載片段完成時(shí),確定該下載片段是否為所述下載單元的第一個(gè)下載片段。處理單元203,用于啟動(dòng)與確定單元202確定的并發(fā)下載線程數(shù)量相同的下載線程進(jìn)行并發(fā)下載;當(dāng)確定該已下載完成的下載片段為所述下載單元的第一個(gè)下載片段,傳輸該下載片段進(jìn)行播放;當(dāng)確定該已下載完成的下載片段不為所述下載單元的第一個(gè)下載片段,不進(jìn)行下載片段的傳輸,繼續(xù)等待下一個(gè)下載片段的下載完成。較佳地,處理單元203,進(jìn)一步用于若確定單元202根據(jù)所述多線程下載標(biāo)識(shí)符確定該待下載視音頻不支持多線程下載,啟動(dòng)單線程下載;在下載MPD文件和M3U8文件時(shí),使用單線程下載。較佳地,該裝置進(jìn)一步包括:配置單元204。配置單元204,用于配置最小下載片段的大小和最大下載片段的大小,配置最大并發(fā)下載線程數(shù)量。確定單元202,用于若所述下載單元長(zhǎng)度小于配置單元204配置的最大下載片段的大小與最大并發(fā)下載線程數(shù)量的乘積,則確定每個(gè)下載片段的大小為最小下載片段的大?。蝗羲鱿螺d單元長(zhǎng)度不小于配置單元204配置的最大下載片段的大小與最大并發(fā)下載線程數(shù)量的乘積,則確定每個(gè)下載片段的大小為最大下載片段的大小。較佳地,配置單元204,進(jìn)一步用于配置最小并發(fā)下載線程數(shù)量。確定單元202,用于將所述下載單元長(zhǎng)度除以確定的每個(gè)下載片段的大小,獲取下載單元被等分的數(shù)量;若所述下載單元被等分的數(shù)量小于最小并發(fā)下載線程數(shù)量,則確定并發(fā)下載線程數(shù)量為最小并發(fā)下載線程數(shù)量;若所述下載單元被等分的數(shù)量大于最大并發(fā)下載線程數(shù)量,則確定并發(fā)下載線程數(shù)量為最大并發(fā)下載線程數(shù)量;若所述下載單元被等分的數(shù)量不小于最小并發(fā)下載線程數(shù)量,且不大于最大并發(fā)下載線程數(shù)量,則確定并發(fā)下載線程數(shù)量為所述下載單元被等分的數(shù)量。較佳地,處理單元203,進(jìn)一步用于為各下載線程分配一個(gè)與下載片段等同大小的緩沖區(qū),按照各緩沖區(qū)將要緩沖的下載片段在所述下載單元中的位置,為各所述緩存區(qū)標(biāo)號(hào),并將各緩沖區(qū)按其標(biāo)號(hào)順序加入一個(gè)隊(duì)列。確定單元202,用于確定所述隊(duì)列頂端的下載片段是否已下載完成,如果是,觸發(fā)處理單元203將該隊(duì)列頂端的下載片段進(jìn)行傳輸;否則,觸發(fā)處理單元203不進(jìn)行下載片段的傳輸,繼續(xù)等待下一個(gè)下載片段的下載完成。較佳地,處理單元203,進(jìn)一步用于將該隊(duì)列頂端的下載片段進(jìn)行傳輸,之后,將該下載片段刪除,并觸發(fā)確定單元確定當(dāng)前隊(duì)列頂端的下載片段是否已下載完成,如果是,繼續(xù)傳輸;否則,等待下一個(gè)下載片段的下載完成。較佳地,處理單元203,進(jìn)一步用于當(dāng)任何一個(gè)下載線程下載完成時(shí),從正在下載的線程中移除,如果所述下載單元中還有未下載的下載片段,且等待下載的下載線程未分配下載該下載片段,為該下載線程分配所述下載單元中未下載的,且待下載的下載線程中未分配的下載片段,并將該線程初始化后,添加到下載隊(duì)列中,等待下載。上述實(shí)施例的單元可以集成于一體,也可以分離部署;可以合并為一個(gè)單元,也可以進(jìn)一步拆分成多個(gè)子單元。綜上所述,本發(fā)明具體實(shí)施例中對(duì)支持多線程下載的視音頻,根據(jù)下載單元長(zhǎng)度,確定下載片段大小和并發(fā)下載線程數(shù)量,啟動(dòng)與確定的并發(fā)下載線程數(shù)量相同的下載線程進(jìn)行并發(fā)下載;當(dāng)任一下載片段下載完成時(shí),若確定該下載片段為所述下載單元的第一個(gè)下載片段,傳輸該下載片段進(jìn)行播放。在CPU低功耗的情況下,能夠高效利用網(wǎng)絡(luò)帶寬下載視音頻數(shù)據(jù),進(jìn)而提高視音頻播放的流暢度。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1