本發(fā)明涉及于數(shù)據(jù)通信領(lǐng)域,特別涉及一種動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法、裝置和服務(wù)器。
背景技術(shù):
自適應(yīng)流媒體技術(shù)是近年來(lái)互聯(lián)網(wǎng)上新出現(xiàn)的一種流媒體技術(shù),以蘋(píng)果公司提出的HLS(Http Live Streaming,超文本傳輸協(xié)議流媒體直播)為代表,目前已得到了廣泛的應(yīng)用。HLS技術(shù)通過(guò)編碼器將視頻源內(nèi)容分割為一定時(shí)長(zhǎng)的多個(gè)分片內(nèi)容,并將每個(gè)分片內(nèi)容都按照設(shè)定的一個(gè)或多個(gè)碼率(碼率從低到高,代表視頻質(zhì)量從差到好)進(jìn)行編碼生成對(duì)應(yīng)的分片,同時(shí)生成m3u8格式的索引文件,記錄不同的碼率以及每個(gè)分片內(nèi)容的時(shí)長(zhǎng)、文件名、URL地址等信息。用戶終端下載索引文件后進(jìn)行解析,根據(jù)網(wǎng)絡(luò)帶寬的實(shí)時(shí)變化動(dòng)態(tài)選擇對(duì)應(yīng)碼率的分片內(nèi)容,從而保證了用戶在不同的網(wǎng)絡(luò)帶寬情況下也能得到較好的用戶體驗(yàn)。
一個(gè)典型的HLS節(jié)目結(jié)構(gòu)示例如圖1所示,包括主索引文件101、子索引文件102、子索引文件103和子索引文件104,其中,子索引文件102、子索引文件103和子索引文件104分別對(duì)應(yīng)200000bps、484444bps、737777bps三種碼率,以及每個(gè)子索引文件中包括每種碼率對(duì)應(yīng)的分片,#EXTINF代表分片時(shí)長(zhǎng)10秒,001.ts、002.ts……100.ts為分片文件名。
HLS技術(shù)基于HTTP和TCP協(xié)議傳輸,由于HLS分片內(nèi)容較小(通常默認(rèn)10秒一個(gè)),一個(gè)完整的HLS節(jié)目通常包含上百個(gè)分片,用戶終端每次請(qǐng)求一個(gè)分片,都要向服務(wù)器發(fā)起TCP連接請(qǐng)求,然后建立連接接收數(shù)據(jù),完成后斷開(kāi)連接再重新發(fā)起TCP連接請(qǐng)求下一個(gè) 分片。當(dāng)網(wǎng)絡(luò)帶寬經(jīng)常變化時(shí)(例如移動(dòng)網(wǎng)絡(luò)),用戶終端需要在不同碼率的分片之間頻繁切換,小顆粒度的分片保證了用戶終端及時(shí)感知帶寬變化從而平滑切換。
但是,當(dāng)網(wǎng)絡(luò)帶寬比較穩(wěn)定時(shí)(例如寬帶網(wǎng)絡(luò)),用戶終端通常長(zhǎng)時(shí)間請(qǐng)求的都是同一碼率下的分片,但用戶終端仍需按照小顆粒度的分片時(shí)長(zhǎng)重復(fù)請(qǐng)求分片,頻繁的TCP連接請(qǐng)求加重了網(wǎng)絡(luò)負(fù)載,影響了自適應(yīng)流媒體系統(tǒng)的整體性能和效率。
技術(shù)實(shí)現(xiàn)要素:
鑒于以上技術(shù)問(wèn)題,本發(fā)明提供了一種動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法、裝置和服務(wù)器,減少了用戶終端向服務(wù)器發(fā)起的TCP連接次數(shù),提升了自適應(yīng)流媒體系統(tǒng)整體性能和效率。
根據(jù)本發(fā)明的一個(gè)方面,提供一種動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法,包括:
實(shí)時(shí)采集用戶終端的帶寬狀態(tài);
判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定;
若用戶終端的當(dāng)前帶寬穩(wěn)定,則對(duì)索引文件的后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和新的索引文件;
指示用戶終端下載新的索引文件并請(qǐng)求新的分片,之后針對(duì)新的分片和新的索引文件,執(zhí)行判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定的步驟。
在本發(fā)明的一個(gè)實(shí)施例中,實(shí)時(shí)采集用戶終端的帶寬狀態(tài)的步驟包括:
對(duì)用戶終端獲取分片的碼率進(jìn)行記錄,其中所述碼率體現(xiàn)用戶終端的帶寬狀態(tài)。
在本發(fā)明的一個(gè)實(shí)施例中,判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定的步驟包括:
判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率,其中N為大于1且小于子索引文件中分片總數(shù)的自然數(shù);
若用戶終端連續(xù)獲取的N個(gè)分片屬于同一碼率,則判定用戶終端 的當(dāng)前帶寬穩(wěn)定;
若用戶終端連續(xù)獲取的N個(gè)分片不屬于同一碼率,則判定用戶終端的當(dāng)前帶寬不穩(wěn)定。
在本發(fā)明的一個(gè)實(shí)施例中,對(duì)索引文件的后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和新的索引文件的步驟包括:
將后續(xù)第1至第N個(gè)分片合并為新的后續(xù)第1個(gè)分片,后續(xù)其它分片保持不變,并生成新的索引文件。
在本發(fā)明的一個(gè)實(shí)施例中,針對(duì)新的分片和新的索引文件,執(zhí)行判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定的步驟包括:
將新的后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),之后執(zhí)行判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率的步驟,其中Y為大于等于1且小于等于N的自然數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,所述的方法還包括:
若用戶終端的當(dāng)前帶寬不穩(wěn)定,則將后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),之后執(zhí)行判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率的步驟,其中Y為大于等于1且小于等于N的自然數(shù)。
根據(jù)本發(fā)明的另一方面,提供一種動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置,包括帶寬采集模塊、識(shí)別模塊、合并模塊和指示模塊,其中:
帶寬采集模塊,用于實(shí)時(shí)采集用戶終端的帶寬狀態(tài);
識(shí)別模塊,用于判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定;
合并模塊,用于根據(jù)識(shí)別模塊的判斷結(jié)果,若用戶終端的當(dāng)前帶寬穩(wěn)定,則對(duì)索引文件的后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和新的索引文件;
指示模塊,用于指示用戶終端下載新的索引文件并請(qǐng)求新的分片,之后指示識(shí)別模塊針對(duì)新的分片和新的索引文件,判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定。
在本發(fā)明的一個(gè)實(shí)施例中,帶寬采集模塊具體用于對(duì)用戶終端獲取分片的碼率進(jìn)行記錄,其中所述碼率體現(xiàn)用戶終端的帶寬狀態(tài)。
在本發(fā)明的一個(gè)實(shí)施例中,識(shí)別模塊具體用于判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率,其中N為大于1且小于子索引文件中分片總數(shù)的自然數(shù);若用戶終端連續(xù)獲取的N個(gè)分片屬于同一碼率,則判定用戶終端的當(dāng)前帶寬穩(wěn)定;若用戶終端連續(xù)獲取的N個(gè)分片不屬于同一碼率,則判定用戶終端的當(dāng)前帶寬不穩(wěn)定。
在本發(fā)明的一個(gè)實(shí)施例中,合并模塊在對(duì)索引文件的后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和新的索引文件時(shí),具體用于將后續(xù)第1至第N個(gè)分片合并為新的后續(xù)第1個(gè)分片,后續(xù)其它分片保持不變,并生成新的索引文件。
在本發(fā)明的一個(gè)實(shí)施例中,指示模塊在指示識(shí)別模塊針對(duì)新的分片和新的索引文件判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定時(shí),具體用于將合并模塊生成的新的后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),并指示識(shí)別模塊執(zhí)行判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率的操作,其中Y為大于等于1且小于等于N的自然數(shù)
在本發(fā)明的一個(gè)實(shí)施例中,所述裝置還包括指定模塊,其中:
指定模塊,用于根據(jù)識(shí)別模塊的判斷結(jié)果,若用戶終端的當(dāng)前帶寬不穩(wěn)定,則將后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),并指示識(shí)別模塊執(zhí)行判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率的操作,其中Y為大于等于1且小于等于N的自然數(shù)。
根據(jù)本發(fā)明的另一方面,提供一種動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體服務(wù)器,包括如上述任一實(shí)施例所述的動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置。
本發(fā)明通過(guò)服務(wù)器端實(shí)時(shí)采集用戶終端的帶寬狀態(tài),當(dāng)帶寬穩(wěn)定時(shí)對(duì)后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和索引文件,從而減少了用戶終端向服務(wù)器發(fā)起的TCP連接次數(shù),提升了自適應(yīng)流媒體系統(tǒng)整體性能和效率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn) 地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明一個(gè)實(shí)施例中原有HLS節(jié)目結(jié)構(gòu)的示意圖。
圖2為本發(fā)明動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法一個(gè)實(shí)施例的示意圖。
圖3為本發(fā)明動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法另一實(shí)施例的示意圖。
圖4為本發(fā)明一個(gè)實(shí)施例中修改后的HLS節(jié)目結(jié)構(gòu)的示意圖。
圖5為本發(fā)明動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置一個(gè)實(shí)施例的示意圖。
圖6為本發(fā)明動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置另一實(shí)施例的示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。以下對(duì)至少一個(gè)示例性實(shí)施例的描述實(shí)際上僅僅是說(shuō)明性的,決不作為對(duì)本發(fā)明及其應(yīng)用或使用的任何限制?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
除非另外具體說(shuō)明,否則在這些實(shí)施例中闡述的部件和步驟的相對(duì)布置、數(shù)字表達(dá)式和數(shù)值不限制本發(fā)明的范圍。
同時(shí),應(yīng)當(dāng)明白,為了便于描述,附圖中所示出的各個(gè)部分的尺寸并不是按照實(shí)際的比例關(guān)系繪制的。
對(duì)于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為授權(quán)說(shuō)明書(shū)的一部分。
在這里示出和討論的所有示例中,任何具體值應(yīng)被解釋為僅僅是示例性的,而不是作為限制。因此,示例性實(shí)施例的其它示例可以具有不同的值。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn) 一步討論。
圖2為本發(fā)明動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法一個(gè)實(shí)施例的示意圖。優(yōu)選的,本實(shí)施例可由動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置執(zhí)行。該方法包括以下步驟:
步驟201,實(shí)時(shí)采集用戶終端的帶寬狀態(tài)。
在本發(fā)明的一個(gè)實(shí)施例中,步驟201可以包括:對(duì)用戶終端獲取分片的碼率進(jìn)行記錄,其中所述碼率體現(xiàn)用戶終端的帶寬狀態(tài)。
步驟202,判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定。
在本發(fā)明的一個(gè)實(shí)施例中,步驟202可以包括:
步驟1、判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率,其中N為大于1且小于子索引文件中分片總數(shù)的自然數(shù)。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,N為3。
步驟2、若用戶終端連續(xù)獲取的N個(gè)分片屬于同一碼率,則判定用戶終端的當(dāng)前帶寬穩(wěn)定。
步驟3、若用戶終端連續(xù)獲取的N個(gè)分片不屬于同一碼率,則判定用戶終端的當(dāng)前帶寬不穩(wěn)定。
步驟203,若用戶終端的當(dāng)前帶寬穩(wěn)定,則對(duì)索引文件的后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和新的索引文件。
在本發(fā)明的一個(gè)實(shí)施例中,步驟包203可以包括:將后續(xù)第1至第N個(gè)分片合并為新的后續(xù)第1個(gè)分片,后續(xù)其它分片保持不變,并生成新的索引文件。
步驟204,指示用戶終端下載新的索引文件并請(qǐng)求新的分片,之后針對(duì)新的分片和新的索引文件,執(zhí)行步驟202。
在本發(fā)明的一個(gè)實(shí)施例中,針對(duì)新的分片和新的索引文件,執(zhí)行步驟202可以包括:將新的后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),之后執(zhí)行步驟202,其中Y為大于等于1且小于等于N的自然數(shù)。
基于本發(fā)明上述實(shí)施例提供的動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法,能夠?qū)ψ赃m應(yīng)流媒體系統(tǒng)進(jìn)行動(dòng)態(tài)優(yōu)化,通過(guò)合并小分片、更新索引文 件等方法,可以有效地改善現(xiàn)有技術(shù)網(wǎng)絡(luò)開(kāi)銷較大、文件碎片化等方面的問(wèn)題,從而有效提高了系統(tǒng)整體性能和效率。
本發(fā)明上述實(shí)施例適用于采用HLS自適應(yīng)流媒體技術(shù)的平臺(tái)和系統(tǒng)。在寬帶網(wǎng)絡(luò)環(huán)境下(例如OTT機(jī)頂盒、IPTV、PC視頻網(wǎng)站),由于網(wǎng)絡(luò)帶寬相對(duì)穩(wěn)定,不容易受干擾,本發(fā)明提出的方法可以有效減少TCP請(qǐng)求次數(shù)和分片數(shù)量,優(yōu)化網(wǎng)絡(luò)負(fù)載和磁盤(pán)性能。
下面結(jié)合圖1所述的原始HLS節(jié)目結(jié)構(gòu)以及圖4所述修改后的原始HLS節(jié)目結(jié)構(gòu),對(duì)本發(fā)明動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法進(jìn)行進(jìn)一步介紹:
圖3為本發(fā)明動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法另一實(shí)施例的示意圖。優(yōu)選的,本實(shí)施例可由動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置執(zhí)行。該方法包括以下步驟:
步驟301,實(shí)時(shí)采集用戶終端的帶寬狀態(tài)。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)用戶終端獲取如圖1所示的原始m3u8索引文件,其中所述m3u8索引文件包括主索引文件101、子索引文件102、子索引文件103和子索引文件104,并根據(jù)索引描述依次請(qǐng)求原始分片001.ts、002.ts、003.ts……時(shí),步驟301可以包括:對(duì)用戶終端獲取的分片信息進(jìn)行記錄,其中所述分片信息包括分片碼率,即每個(gè)原始分片分別從哪個(gè)子索引文件獲取,例如:子索引文件102、子索引文件103和子索引文件104分別對(duì)應(yīng)200000bps、484444bps、737777bps三種碼率。
步驟302,判斷用戶終端未讀取的分片數(shù)X是否大于等于N,其中,N每次合并的分片數(shù)目,N為大于1且小于子索引文件中分片總數(shù)M的自然數(shù)。若X大于等于N,則執(zhí)行步驟303;否則,若X小于N,則執(zhí)行步驟307。
在本發(fā)明的一個(gè)實(shí)施例中,針對(duì)圖1所示的原始m3u8索引文件,M=100,N選擇3。
步驟303,判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率。若用戶終端連續(xù)獲取的N個(gè)分片屬于同一碼率(即用戶終端的當(dāng)前帶 寬穩(wěn)定),則執(zhí)行步驟304;否則,若用戶終端連續(xù)獲取的N個(gè)分片不屬于同一碼率(即用戶終端的當(dāng)前帶寬不穩(wěn)定),則執(zhí)行步驟306。
步驟304,將后續(xù)第1至第N個(gè)分片合并為新的后續(xù)第1個(gè)分片,后續(xù)其它分片保持不變,并生成新的索引文件。
例如:如圖1所示的代表碼率737777bps的gear3目錄(子索引文件104)下的003.ts、004.ts、005.ts都屬于同一碼率時(shí),將各碼率(子索引文件102、子索引文件103和子索引文件104)的后續(xù)3個(gè)分片進(jìn)行合并,如圖4所示。
圖4中修改后的HLS節(jié)目結(jié)構(gòu)中新的m3u8索引文件包括主索引文件401、子索引文件402、子索引文件403和子索引文件404。如圖4所示,將圖1所示的子索引文件102、子索引文件103和子索引文件104中的原有分片006.ts、007.ts、008.ts合并為圖4所示的子索引文件402、子索引文件403和子索引文件中的新分片006-008.ts,對(duì)應(yīng)的分片時(shí)長(zhǎng)#EXTINF由10秒改為30秒,從而生成新的m3u8索引文件。
步驟305,指示用戶終端重新下載新的索引文件,并從合并后的新的后續(xù)第1個(gè)分片(例如圖4所示的006-008.ts)開(kāi)始,請(qǐng)求新的分片;之后針對(duì)新的分片和新的索引文件,執(zhí)行步驟302。
在本發(fā)明的一個(gè)實(shí)施例中,步驟305中,針對(duì)新的分片和新的索引文件,執(zhí)行步驟302可以包括:將新的后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),之后執(zhí)行步驟302,其中Y為大于等于1且小于等于N的自然數(shù)。
在本發(fā)明的第一具體實(shí)施例中,Y=1;即,針對(duì)新的分片和新的索引文件,執(zhí)行步驟302可以包括:將新的后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第一個(gè),之后執(zhí)行步驟302。
例如:對(duì)于圖4所示的具體實(shí)施例,若采用第一具體實(shí)施例的循環(huán)判斷方式,則將006-008.ts作為連續(xù)獲取的3個(gè)分片中的第一個(gè),執(zhí)行步驟302,即,判斷用戶終端連續(xù)獲取的006-008.ts、009.ts、010.ts是否屬于同一碼率;若是,則繼續(xù)將011.ts、012.ts、013.ts進(jìn)行合并, 從而形成循環(huán)處理。
在本發(fā)明的第二具體實(shí)施例中,Y=N;即,針對(duì)新的分片和新的索引文件,執(zhí)行步驟302可以包括:將新的后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的最后一個(gè),之后執(zhí)行步驟302。
例如:對(duì)于圖4所示的具體實(shí)施例,若采用第二具體實(shí)施例的循環(huán)判斷方式,則將006-008.ts作為連續(xù)獲取的3個(gè)分片中的最后一個(gè),執(zhí)行步驟302,即,判斷用戶終端連續(xù)獲取的分片004.ts、005ts、006-008.t是否屬于同一碼率;若是,則繼續(xù)將分片009.ts、010.ts、011.ts進(jìn)行合并,從而形成循環(huán)處理。
本發(fā)明第二具體實(shí)施例相比第一具體實(shí)施例,若用戶終端的碼率保持穩(wěn)定,則對(duì)分片進(jìn)行連續(xù)合并,減少了未合并的原分片數(shù)量,從而可以進(jìn)一步減少用戶終端向服務(wù)器發(fā)起的TCP連接次數(shù),提升自適應(yīng)流媒體系統(tǒng)整體性能和效率。
在本發(fā)明的第三實(shí)施例第三具體實(shí)施例中,針對(duì)新的分片和新的索引文件,執(zhí)行步驟302可以包括:將新的后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),執(zhí)行步驟302,其中Y為大于等于1且小于等于N的自然數(shù)。
例如:對(duì)于圖4所示的具體實(shí)施例,若采用第三具體實(shí)施例的循環(huán)判斷方式,則將006-008.ts作為連續(xù)獲取的3個(gè)分片中的第2個(gè),執(zhí)行步驟302,即,判斷用戶終端連續(xù)獲取的分片005ts、006-008.t、009ts是否屬于同一碼率;若是,則繼續(xù)將分片010.ts、011.ts、012.ts進(jìn)行合并,從而形成循環(huán)處理。
步驟306,保持原有分片和索引文件不變,繼續(xù)觀察用戶終端帶寬變化情況,即,針對(duì)后續(xù)分片繼續(xù)執(zhí)行步驟302。此時(shí)用戶終端繼續(xù)請(qǐng)求后續(xù)分片。
在本發(fā)明一個(gè)實(shí)施例中,步驟306中,針對(duì)后續(xù)分片繼續(xù)執(zhí)行步驟302可以包括:將后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),之后執(zhí)行步驟302,其中Y為大于等于1且小于等于N的自然數(shù)。
在本發(fā)明第四具體實(shí)施例中,Y=1;即,針對(duì)后續(xù)分片繼續(xù)執(zhí)行步驟302可以包括:將后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第一個(gè),之后執(zhí)行步驟302。
例如,對(duì)于圖1所示的具體實(shí)施例,若采用第四具體實(shí)施例的循環(huán)判斷方式,若分片001.ts、002.ts、003.ts的碼率不相同,則在用戶終端繼續(xù)獲取分片004.ts、005.ts、006.ts后,針對(duì)004.ts、005.ts、006.ts執(zhí)行步驟302,判斷用戶終端連續(xù)獲取的004.ts、005.ts、006.ts是否屬于同一碼率,從而形成循環(huán)處理。
在本發(fā)明第五具體實(shí)施例中,Y=N;即,針對(duì)后續(xù)分片繼續(xù)執(zhí)行步驟302可以包括:將后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的最后一個(gè),之后執(zhí)行步驟302。
例如,對(duì)于圖1所示的具體實(shí)施例,若采用第五具體實(shí)施例的循環(huán)判斷方式,若分片001.ts、002.ts、003.ts的碼率不相同,則在用戶終端繼續(xù)獲取分片004.ts后,針對(duì)分片002.ts、003.ts、004.ts執(zhí)行步驟302,即,判斷用戶終端連續(xù)獲取的分片002.ts、003.ts、004.ts是否屬于同一碼率,從而形成循環(huán)處理。
本發(fā)明第五具體實(shí)施例相比第四具體實(shí)施例,加快了循環(huán)判斷的頻率,一旦有連續(xù)三個(gè)分片屬于同一碼率,就立即合并,從而進(jìn)一步減少了用戶終端向服務(wù)器發(fā)起的TCP連接次數(shù),提升了自適應(yīng)流媒體系統(tǒng)整體性能和效率。
在本發(fā)明第六具體實(shí)施例中,Y為大于1且小于N的自然數(shù)。
例如,對(duì)于圖1所示的具體實(shí)施例,若采用第六具體實(shí)施例的循環(huán)判斷方式,若分片001.ts、002.ts、003.ts的碼率不相同,則在用戶終端繼續(xù)獲取分片004.ts、005.ts后,針對(duì)分片003.ts、004.ts、005.ts執(zhí)行步驟302,即,判斷用戶終端連續(xù)獲取的分片003.ts、004.ts、005.ts是否屬于同一碼率,從而形成循環(huán)處理。
步驟307,保持原有分片和索引文件不變,直到用戶終端讀取完索引文件的所有分片。
例如:圖1和圖4所示的具體實(shí)施例中,若剩余分片個(gè)數(shù)X小于 3(例如X=2),則不再進(jìn)行帶寬(碼率)是否穩(wěn)定的判斷,保持原有分片和索引文件不變,直到用戶終端讀取完索引文件的所有分片。
本發(fā)明上述實(shí)施例針對(duì)目前自適應(yīng)流媒體節(jié)目分片數(shù)量較多,用戶終端頻繁發(fā)起HTTP和TCP連接請(qǐng)求導(dǎo)致網(wǎng)絡(luò)開(kāi)銷較大,影響系統(tǒng)整體效率,以及文件碎片化等問(wèn)題,提出一種動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體方法,通過(guò)服務(wù)器端實(shí)時(shí)采集用戶終端的帶寬狀態(tài),當(dāng)帶寬穩(wěn)定時(shí)對(duì)后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和索引文件,從而減少了用戶終端向服務(wù)器發(fā)起的TCP連接次數(shù),提升了自適應(yīng)流媒體系統(tǒng)整體性能和效率。
圖5為本發(fā)明動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置一個(gè)實(shí)施例的示意圖。所述裝置包括帶寬采集模塊501、識(shí)別模塊502、合并模塊503和指示模塊504,其中:
帶寬采集模塊501,用于實(shí)時(shí)采集用戶終端的帶寬狀態(tài)。
在本發(fā)明的一個(gè)實(shí)施例中,帶寬采集模塊501具體可以用于對(duì)用戶終端獲取分片的碼率進(jìn)行記錄,其中所述碼率體現(xiàn)用戶終端的帶寬狀態(tài)。
識(shí)別模塊502,用于判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定。
在本發(fā)明的一個(gè)實(shí)施例中,識(shí)別模塊502具體可以用于判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率,其中N為大于1且小于子索引文件中分片總數(shù)M的自然數(shù);若用戶終端連續(xù)獲取的N個(gè)分片屬于同一碼率,則判定用戶終端的當(dāng)前帶寬穩(wěn)定;若用戶終端連續(xù)獲取的N個(gè)分片不屬于同一碼率,則判定用戶終端的當(dāng)前帶寬不穩(wěn)定。
合并模塊503,用于根據(jù)識(shí)別模塊502的判斷結(jié)果,若用戶終端的當(dāng)前帶寬穩(wěn)定,則對(duì)索引文件的后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和新的索引文件。
在本發(fā)明的一個(gè)實(shí)施例中,合并模塊503在對(duì)索引文件的后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和新的索引文件時(shí),具體可以用于將后續(xù)第1至第N個(gè)分片合并為新的后續(xù)第1個(gè)分片,后續(xù)其它分片保 持不變,并生成新的索引文件。
指示模塊504,用于指示用戶終端下載新的索引文件并請(qǐng)求新的分片,之后指示識(shí)別模塊502針對(duì)新的分片和新的索引文件判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定。
在本發(fā)明的一個(gè)實(shí)施例中,指示模塊504在指示識(shí)別模塊502針對(duì)新的分片和新的索引文件判斷用戶終端的當(dāng)前帶寬是否穩(wěn)定時(shí),具體可以用于將合并模塊503生成的新的后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),并指示識(shí)別模塊執(zhí)行判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率的操作,其中Y為大于等于1且小于等于N的自然數(shù)。
基于本發(fā)明上述實(shí)施例提供的動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置,可以根據(jù)網(wǎng)絡(luò)帶寬情況,動(dòng)態(tài)地對(duì)后續(xù)分片進(jìn)行合并優(yōu)化,修改索引文件,并通知用戶終端更新索引文件,重新獲取分片,由此可以實(shí)現(xiàn)對(duì)自適應(yīng)流媒體系統(tǒng)進(jìn)行動(dòng)態(tài)優(yōu)化。本發(fā)明上述實(shí)施例通過(guò)合并小分片、更新索引文件等方式,可以有效地改善現(xiàn)有技術(shù)網(wǎng)絡(luò)開(kāi)銷較大、文件碎片化等方面的問(wèn)題,從而提高了系統(tǒng)整體性能和效率。
圖6為本發(fā)明動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置另一實(shí)施例的示意圖。與圖5所示實(shí)施例相比,在圖6所示實(shí)施例中,所述裝置還可以包括指定模塊505,其中:
指定模塊505,用于根據(jù)識(shí)別模塊502的判斷結(jié)果,若用戶終端的當(dāng)前帶寬不穩(wěn)定,則將后續(xù)第1個(gè)分片作為連續(xù)獲取的N個(gè)分片中的第Y個(gè),并指示識(shí)別模塊502執(zhí)行判斷用戶終端連續(xù)獲取的N個(gè)分片是否屬于同一碼率的操作,其中Y為大于等于1且小于等于N的自然數(shù)。
本發(fā)明上述實(shí)施例可以通過(guò)指定模塊在用戶終端的當(dāng)前帶寬不穩(wěn)定,對(duì)后續(xù)分片繼續(xù)判斷帶寬是否穩(wěn)定,從而實(shí)現(xiàn)了對(duì)帶寬是否穩(wěn)定的循環(huán)判斷,由此可以實(shí)現(xiàn)對(duì)后續(xù)多個(gè)分片進(jìn)行合并,生成新的分片和索引文件,從而減少了用戶終端向服務(wù)器發(fā)起的TCP連接次數(shù),提升了自適應(yīng)流媒體系統(tǒng)整體性能和效率。
根據(jù)本發(fā)明的另一方面,提供一種動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體服務(wù)器,包括如上述任一實(shí)施例(例如圖5或圖6所示實(shí)施例)所述的動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體裝置。
基于本發(fā)明上述實(shí)施例提供的動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體服務(wù)器,適用于采用HLS自適應(yīng)流媒體技術(shù)的平臺(tái)和系統(tǒng)。在寬帶網(wǎng)絡(luò)環(huán)境下(例如OTT機(jī)頂盒、IPTV、PC視頻網(wǎng)站),由于網(wǎng)絡(luò)帶寬相對(duì)穩(wěn)定,不容易受干擾,本發(fā)明提出的動(dòng)態(tài)優(yōu)化的自適應(yīng)流媒體服務(wù)器可以有效減少TCP請(qǐng)求次數(shù)和分片數(shù)量,優(yōu)化網(wǎng)絡(luò)負(fù)載和磁盤(pán)性能。
本發(fā)明上述實(shí)施例中,m3u8索引文件基于HTTP協(xié)議明文傳輸,不做加密,所有分片內(nèi)容的數(shù)量、文件名、時(shí)長(zhǎng)等信息容易提取,內(nèi)容可以實(shí)時(shí)編輯;HLS分片編碼采用ts格式,ts格式的特點(diǎn)是可以作為二進(jìn)制文件順序拼接和解碼(例如在Windows系統(tǒng)中可通過(guò)DOS命令進(jìn)行文件合并:copy/b 006.ts+007.ts+008.ts 006-008.ts),對(duì)服務(wù)器性能影響基本忽略不計(jì);而且本發(fā)明上述實(shí)施例無(wú)需改動(dòng)現(xiàn)有的網(wǎng)絡(luò)架構(gòu)和相關(guān)硬件設(shè)備,只需在服務(wù)器端增加相應(yīng)的功能模塊。因此,本發(fā)明上述實(shí)施例的提出的技術(shù)方案容易實(shí)現(xiàn)。
在上面所描述的帶寬采集模塊501、識(shí)別模塊502、合并模塊503、指示模塊504、第一指定模塊505、指定模塊506等功能單元可以實(shí)現(xiàn)為用于執(zhí)行本申請(qǐng)所描述功能的通用處理器、可編程邏輯控制器(PLC)、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或者其他可編程邏輯器件、分立門(mén)或者晶體管邏輯器件、分立硬件組件或者其任意適當(dāng)組合。
至此,已經(jīng)詳細(xì)描述了本發(fā)明。為了避免遮蔽本發(fā)明的構(gòu)思,沒(méi)有描述本領(lǐng)域所公知的一些細(xì)節(jié)。本領(lǐng)域技術(shù)人員根據(jù)上面的描述,完全可以明白如何實(shí)施這里公開(kāi)的技術(shù)方案。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過(guò)硬件來(lái)完成,也可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以 是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
本發(fā)明的描述是為了示例和描述起見(jiàn)而給出的,而并不是無(wú)遺漏的或者將本發(fā)明限于所公開(kāi)的形式。很多修改和變化對(duì)于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實(shí)施例是為了更好說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計(jì)適于特定用途的帶有各種修改的各種實(shí)施例。