一項(xiàng)對(duì)應(yīng)的分片文件對(duì)應(yīng)一個(gè)URL地址,根據(jù)該分片文件對(duì)應(yīng)的URL地址可從網(wǎng)絡(luò)媒體服務(wù)器中獲取到對(duì)應(yīng)的分片文件。
[0060]在該步驟中,循環(huán)啟動(dòng)定時(shí)器,可根據(jù)需要設(shè)置一個(gè)定時(shí)時(shí)長(zhǎng),如定時(shí)時(shí)長(zhǎng)5分鐘。
[0061]可以理解的是,該網(wǎng)絡(luò)媒體客戶(hù)端設(shè)置在終端內(nèi),可以是終端內(nèi)部的網(wǎng)絡(luò)媒體播放器,如系統(tǒng)自帶播放器或用戶(hù)自行安裝的播放器等。此處,終端可以是智能移動(dòng)終端如智能手機(jī)、Ipad等或是智能電視等。本實(shí)施例中該方法主要應(yīng)用于終端的視頻播放數(shù)據(jù)下載,以減少終端在啟動(dòng)視頻數(shù)據(jù)加速下載時(shí),導(dǎo)致客戶(hù)端播放異常情況。
[0062]Sll、在定時(shí)器時(shí)間達(dá)到時(shí),判斷該HLS流媒體的播放請(qǐng)求對(duì)應(yīng)的HLS流媒體是否下載完成,若該HLS流媒體的播放請(qǐng)求對(duì)應(yīng)的HLS流媒體未下載完成,則執(zhí)行步驟SI 2,否則執(zhí)行步驟SI 5。
[0063 ]在該步驟中,判斷該HLS流媒體的播放請(qǐng)求對(duì)應(yīng)的HLS流媒體是否下載完成,如果該HLS流媒體的播放請(qǐng)求對(duì)應(yīng)的HLS流媒體下載完成,則不需要啟動(dòng)多線(xiàn)程加速下載模式下載該HLS流媒體對(duì)應(yīng)的分片文件;如果HLS流媒體的播放請(qǐng)求對(duì)應(yīng)的HLS流媒體未下載完成,則執(zhí)行后續(xù)步驟,以確定是否需要啟動(dòng)多線(xiàn)程加速下載模式下載該HLS流媒體對(duì)應(yīng)的分片文件。
[0064]—般的,在終端中預(yù)置一個(gè)分片文件下載列表,在該分片文件下載列表中記錄該HLS流媒體的播放請(qǐng)求對(duì)應(yīng)的HLS流媒體已下載的分片文件。在該步驟中,可通過(guò)查看該分片文件下載列表確定該HLS流媒體的播放請(qǐng)求對(duì)應(yīng)的HLS流媒體是否下載完成。
[0065]S12、獲取緩存區(qū)中的數(shù)據(jù)量。
[0066]具體的,緩存區(qū)存儲(chǔ)了從網(wǎng)絡(luò)媒體服務(wù)器下載且未發(fā)送給網(wǎng)絡(luò)媒體客戶(hù)端的HLS流媒體的分片文件。從網(wǎng)絡(luò)媒體服務(wù)器下載的HLS流媒體的分片文件先保存到緩存區(qū)中,然后再將緩存區(qū)中的HLS流媒體的分片文件分送給網(wǎng)絡(luò)媒體客戶(hù)端,且在將緩存區(qū)中的HLS流媒體的分片文件分送給網(wǎng)絡(luò)媒體客戶(hù)端后,將該已分送的HLS流媒體的分片文件從緩存區(qū)中刪除。
[0067]需要說(shuō)明的是,該緩存區(qū)中的數(shù)據(jù)量是指緩存區(qū)中的分片文件的總時(shí)長(zhǎng),如當(dāng)緩存區(qū)中分片文件有10個(gè),每個(gè)分片文件的播放時(shí)長(zhǎng)為10s,則該緩存區(qū)的數(shù)據(jù)量為100s。
[0068]S13、判斷該數(shù)據(jù)量是否大于或等于第一預(yù)設(shè)閥值,若該數(shù)據(jù)量大于或等于第一預(yù)設(shè)閥值,則執(zhí)行步驟S14。
[0069]具體的,該第一預(yù)設(shè)閥值可根據(jù)需要設(shè)置,該第一預(yù)設(shè)閥值為非零的自然數(shù)??蛇x的,可將該第一預(yù)設(shè)閥值設(shè)置為90s。
[0070]在該步驟中,判斷該緩存區(qū)中的數(shù)據(jù)量是否大于或等于第一預(yù)設(shè)閥值,如果該緩存區(qū)中的數(shù)據(jù)量大于或等于第一預(yù)設(shè)閥值,則說(shuō)明當(dāng)前網(wǎng)絡(luò)狀態(tài)良好,已從網(wǎng)絡(luò)媒體服務(wù)器中下載到一定數(shù)量的分片文件。
[0071 ] SI 4、啟動(dòng)多線(xiàn)程加速下載模式,以從網(wǎng)絡(luò)媒體服務(wù)器中獲取HLS流媒體的分片文件。
[0072]具體的,如果當(dāng)前網(wǎng)絡(luò)狀態(tài)良好,則啟動(dòng)多線(xiàn)程加速下載模式,創(chuàng)建最大允許的任務(wù)個(gè)數(shù),以從網(wǎng)絡(luò)媒體服務(wù)器中獲取HLS流媒體的分片文件,即在當(dāng)前網(wǎng)絡(luò)狀態(tài)良好時(shí),盡可能同時(shí)開(kāi)啟多個(gè)任務(wù)下載分片文件。如在一實(shí)施例中,最大允許的任務(wù)個(gè)數(shù)為8個(gè)任務(wù),則啟動(dòng)8個(gè)任務(wù)同時(shí)下載HLS流媒體的分片文件,一個(gè)任務(wù)對(duì)應(yīng)下載一個(gè)分片文件,一個(gè)任務(wù)下載完一個(gè)分片文件后,繼續(xù)下載另一個(gè)分片文件。從網(wǎng)絡(luò)媒體服務(wù)器中獲取的HLS流媒體的分片文件將保存在緩存區(qū)中。
[0073]在該步驟中,啟動(dòng)多線(xiàn)程加速下載模式,以下載盡可能多的分片文件,使得在網(wǎng)絡(luò)媒體客戶(hù)端在請(qǐng)求分片文件,能及時(shí)為網(wǎng)絡(luò)媒體客戶(hù)端提供分片文件,避免網(wǎng)絡(luò)媒體客戶(hù)端出現(xiàn)播放異常的情況。
[0074]S15、關(guān)閉定時(shí)器。
[0075]采用上述實(shí)施例,通過(guò)在接收到網(wǎng)絡(luò)媒體客戶(hù)端發(fā)送的HLS流媒體的播放請(qǐng)求時(shí),循環(huán)啟動(dòng)定時(shí)器;在定時(shí)器時(shí)間達(dá)到時(shí),判斷該HLS流媒體的播放請(qǐng)求對(duì)應(yīng)的HLS流媒體是否下載完成;若該HLS流媒體的播放請(qǐng)求對(duì)應(yīng)的HLS流媒體未下載完成,則獲取緩存區(qū)中的數(shù)據(jù)量;判斷該數(shù)據(jù)量是否大于或等于第一預(yù)設(shè)閥值;若該數(shù)據(jù)量大于或等于第一預(yù)設(shè)閥值,則啟動(dòng)多線(xiàn)程加速下載模式,以從網(wǎng)絡(luò)媒體服務(wù)器中獲取HLS流媒體的分片文件;即可在網(wǎng)絡(luò)狀態(tài)良好時(shí)(緩存區(qū)中的數(shù)據(jù)量大于或等于第一預(yù)設(shè)閥值時(shí)),啟動(dòng)多線(xiàn)程加速下載模式,以從網(wǎng)絡(luò)媒體服務(wù)器中獲取HLS流媒體的分片文件,緩存區(qū)中緩存盡量多的分片文件,減少網(wǎng)絡(luò)媒體客戶(hù)端出現(xiàn)播放異常的情況。
[0076]參照?qǐng)D2,圖2為圖1中步驟S14步驟的細(xì)化流程示意圖,該步驟包括:
[0077]S141、判斷當(dāng)前是否通過(guò)非加速下載模式下載HLS流媒體的分片文件,若當(dāng)前未通過(guò)非加速下載模式下載HLS流媒體的分片文件,則執(zhí)行步驟S142,否則執(zhí)行步驟S143。
[0078]具體的,HLS流媒體的下載模式包括多線(xiàn)程加速下載模式和非加速下載模式,在非加速下載模式下,終端中負(fù)責(zé)視頻下載的模塊或線(xiàn)程直接將從網(wǎng)絡(luò)媒體服務(wù)器中獲取的分片文件傳輸給網(wǎng)絡(luò)媒體客戶(hù)端,而不將從網(wǎng)絡(luò)媒體服務(wù)器中獲取的分片文件保存到緩存區(qū)中,即該終端中負(fù)責(zé)視頻下載的模塊或線(xiàn)程直接只是透?jìng)骶W(wǎng)絡(luò)媒體客戶(hù)端向網(wǎng)絡(luò)媒體服務(wù)器請(qǐng)求的分片文件。非加速下載模式優(yōu)先于多線(xiàn)程加速下載模式,在該步驟中,判斷終端當(dāng)前是否通過(guò)非加速下載模式下載HLS流媒體的分片文件,如果終端當(dāng)前正通過(guò)非加速下載模式下載HLS流媒體的分片文件,則終端不會(huì)同時(shí)進(jìn)行多線(xiàn)程加速下載模式。
[0079]S142、啟動(dòng)多線(xiàn)程加速下載模式,以從該網(wǎng)絡(luò)媒體服務(wù)器中獲取HLS流媒體的分片文件。
[0080]如當(dāng)前未通過(guò)非加速下載模式下載HLS流媒體的分片文件,則終端啟動(dòng)多線(xiàn)程加速下載模式,創(chuàng)建最大允許的任務(wù)個(gè)數(shù),以從網(wǎng)絡(luò)媒體服務(wù)器中獲取HLS流媒體的分片文件。
[0081]S143、在非加速下載模式下載完成后且接收到該網(wǎng)絡(luò)媒體客戶(hù)端發(fā)送的分片獲取請(qǐng)求時(shí),啟動(dòng)多線(xiàn)程加速下載模式,以從該網(wǎng)絡(luò)媒體服務(wù)器中獲取HLS流媒體的分片文件。
[0082]當(dāng)終端當(dāng)前通過(guò)非加速下載模式下載HLS流媒體的分片文件時(shí),則終端繼續(xù)按照非加速下載模式由負(fù)責(zé)視頻下載的模塊或線(xiàn)程直接透?jìng)骶W(wǎng)絡(luò)媒體客戶(hù)端向網(wǎng)絡(luò)媒體服務(wù)器請(qǐng)求的分片文件,在非加速下載模式下載完成后,檢測(cè)是否接收到網(wǎng)絡(luò)媒體客戶(hù)端發(fā)送的分片獲取請(qǐng)求,若接收到網(wǎng)絡(luò)媒體客戶(hù)端的分片獲取請(qǐng)求,則啟動(dòng)多線(xiàn)程加速下載模式,并根據(jù)該分片獲取請(qǐng)求向網(wǎng)絡(luò)媒體客戶(hù)端返回對(duì)應(yīng)的分片文件。
[0083]采用上述實(shí)施例,先判斷當(dāng)前是否通過(guò)非加速下載模式下載HLS流媒體的分片文件,根據(jù)判斷結(jié)果確定何時(shí)啟動(dòng)多線(xiàn)程加速下載模式;可使得終端在通過(guò)非加速下載模式下載HLS流媒體的分片文件時(shí),繼續(xù)按照當(dāng)前下載方式,為網(wǎng)絡(luò)媒體客戶(hù)端提供先要播放的數(shù)據(jù),在非加速下載模式下載完成后,再啟動(dòng)多線(xiàn)程加速下載模式,以下載更多的HLS流媒體的分片文件。
[0084]參照?qǐng)D3,圖3為本發(fā)明基于HLS流媒體的視頻數(shù)據(jù)加速下載方法的第二實(shí)施例的流程示意圖。
[0085]基于上述基于HLS流媒體的視頻數(shù)據(jù)加速下載方法的第一實(shí)施例,在步驟S13之后,該方法還包括:
[0086]S16、若該數(shù)據(jù)量小于第一預(yù)設(shè)閥值,則判斷該數(shù)據(jù)量是否為零,若該數(shù)據(jù)量為零,則執(zhí)行步驟S17。
[0087]在該步驟中,判斷該緩存區(qū)中的數(shù)據(jù)量是否為零,如果該緩存區(qū)中的數(shù)據(jù)量為零,則說(shuō)明當(dāng)前網(wǎng)絡(luò)狀態(tài)較差,終端中負(fù)責(zé)視頻下載的模塊或線(xiàn)程沒(méi)有從網(wǎng)絡(luò)媒體服務(wù)器中下載到一定數(shù)量的分片文件,使得當(dāng)網(wǎng)絡(luò)媒體客戶(hù)端請(qǐng)求分片文件時(shí),終端無(wú)法為網(wǎng)絡(luò)媒體客戶(hù)端提供足夠的分片文件,將導(dǎo)致網(wǎng)絡(luò)媒體客戶(hù)端無(wú)法正常播放,出現(xiàn)卡頓現(xiàn)象。
[0088]S17、獲取在當(dāng)前時(shí)刻之前的預(yù)設(shè)時(shí)間內(nèi)發(fā)送給網(wǎng)絡(luò)媒體客戶(hù)端的分片文件的第一總時(shí)長(zhǎng)。
[0089]該預(yù)設(shè)時(shí)間通常小于定時(shí)器的定時(shí)時(shí)長(zhǎng)。在該步驟中,獲取在當(dāng)前時(shí)刻之前的預(yù)設(shè)時(shí)間內(nèi)發(fā)送給網(wǎng)絡(luò)媒體客戶(hù)端的分片文件的第一總時(shí)長(zhǎng),如在當(dāng)前時(shí)刻之前的預(yù)設(shè)時(shí)間內(nèi)發(fā)送給網(wǎng)絡(luò)媒體客戶(hù)端的分片文件有5個(gè),每個(gè)分片文件的播放時(shí)長(zhǎng)為10s,則該第一總時(shí)長(zhǎng)為50s;如終端在當(dāng)前時(shí)刻之前的預(yù)設(shè)時(shí)間內(nèi)發(fā)送給網(wǎng)絡(luò)媒體客戶(hù)端的分片文件為O個(gè),則第一總時(shí)長(zhǎng)為O。
[0090]S18、判斷該第一總時(shí)長(zhǎng)是否為零,若該第一總時(shí)長(zhǎng)不為零,則執(zhí)行步驟S19,該第一總時(shí)長(zhǎng)為零,則執(zhí)行步驟S21。
[0091]S19、獲取在當(dāng)前時(shí)刻之前的預(yù)設(shè)時(shí)間內(nèi)發(fā)送第一個(gè)分片文件的時(shí)刻到當(dāng)前時(shí)刻之間的第二總時(shí)長(zhǎng)。
[0092]在該步驟中,獲取在當(dāng)前時(shí)刻之前的預(yù)設(shè)時(shí)間內(nèi)發(fā)送第一個(gè)分片文件給網(wǎng)絡(luò)媒體客戶(hù)端的時(shí)刻,并根據(jù)當(dāng)前時(shí)刻,得到終端在當(dāng)前時(shí)刻之前的預(yù)設(shè)時(shí)間內(nèi)發(fā)送第一分片文件到當(dāng)前時(shí)刻的間隔時(shí)間,即第二總時(shí)長(zhǎng)。
[0093]S20、若該第二總時(shí)長(zhǎng)大于第一總時(shí)長(zhǎng),則啟動(dòng)多線(xiàn)程加速下載模式,以從網(wǎng)絡(luò)媒體服務(wù)器中獲取HLS流媒體的分片文件,并控制計(jì)數(shù)器將計(jì)數(shù)值加I。
[0094]若該第二總時(shí)長(zhǎng)大于第一總時(shí)長(zhǎng),則說(shuō)明網(wǎng)絡(luò)媒體客戶(hù)端出現(xiàn)了卡頓現(xiàn)象(可能是播放真的卡頓了,也可能是用戶(hù)暫停了網(wǎng)絡(luò)媒體客戶(hù)端播放,或其他情況)。在該步驟中,啟動(dòng)多線(xiàn)程加速下載模式,創(chuàng)建最大允許的任務(wù)個(gè)數(shù),以從網(wǎng)絡(luò)媒體服務(wù)器中獲取HLS流媒體的分片文件。在該步驟中,還控制計(jì)數(shù)器將計(jì)數(shù)值加1,在初次啟動(dòng)定時(shí)器時(shí),該計(jì)數(shù)器的計(jì)數(shù)值為0,在循環(huán)啟動(dòng)定時(shí)器時(shí),該計(jì)數(shù)器的計(jì)數(shù)值根據(jù)實(shí)際情況保持或遞增。該計(jì)時(shí)器記錄網(wǎng)絡(luò)狀態(tài)較差的次數(shù)。
[0095]S21、獲取計(jì)數(shù)器的計(jì)數(shù)值。
[0096]S22、若該計(jì)數(shù)器的計(jì)數(shù)值為非零,則控制計(jì)數(shù)器將計(jì)數(shù)值加I。
[0097]若該計(jì)數(shù)器的計(jì)數(shù)值為非零,則說(shuō)明網(wǎng)絡(luò)媒體客戶(hù)端之前發(fā)生過(guò)卡頓現(xiàn)象,控制計(jì)數(shù)值的計(jì)數(shù)值加I,即遞增網(wǎng)絡(luò)狀態(tài)較差的次數(shù)。
[0098]S23、重新獲取計(jì)數(shù)器的計(jì)數(shù)值,并在重新獲取的計(jì)數(shù)器的計(jì)