本發(fā)明涉及互聯(lián)網(wǎng)技術領域,特別涉及一種流媒體直播方法、及使用該方法的流媒體直播系統(tǒng)和裝置。
背景技術:
所謂流媒體是指采用流式傳輸?shù)姆绞皆谟⑻鼐W(wǎng)上播放的媒體格式。由于它具有邊傳邊播放的特點使得內容播放更實時和便捷,從而被人們廣泛使用。
目前的流媒體技術分為直播和點播,對于現(xiàn)有的流媒體直播,由于復雜的網(wǎng)絡環(huán)境,給直播流的傳播帶來許多失誤,例如可能導致直播流丟幀,從而使得直播源延遲越來越低。在現(xiàn)有技術中,播放端是無法感知到直播流已丟幀,從而會使得播放緩存越來越少,播放位置變得越來越靠前。這樣,在播放端就會表現(xiàn)為播放頻繁卡頓,導致用戶體驗變差。
技術實現(xiàn)要素:
為了解決現(xiàn)有技術的問題,本發(fā)明一方面提供了一種流媒體直播方法,方法如下:
初始化延時窗口,根據(jù)該延時窗口,請求延時窗口范圍內資源片段,判斷該延時窗口資源片段的首次請求結果是否成功,累計首次請求該延時窗口資源片段連續(xù)失敗的次數(shù),若該失敗次數(shù)達到預設閥值時,滑動延時窗口以限制播放端請求速度。
進一步地,該判斷該延時窗口資源片段的首次請求是否成功的方法,包括:設置用于累計請求連續(xù)失敗次數(shù)的計數(shù)器,獲取該延時窗口資源片段首次請求的響應狀態(tài)碼,通過該資源片段首次請求的響應狀態(tài)碼來識別該資源片段的請求是否成功。
進一步地,該累計首次請求該延時窗口資源片段連續(xù)失敗的次數(shù),若該失敗次數(shù)達到預設閥值時,滑動延時窗口以限制播放端請求速度的方法,包括:通過該資源片段首次請求的響應狀態(tài)碼來識別該資源片段的請求是否成功。若該響應狀態(tài)碼表示請求失敗,則該計數(shù)器值加1,繼續(xù)請求該延時窗口范圍內的資源片段以累計首次請求該延時窗口資源片段連續(xù)失敗的次數(shù),當該計數(shù)器值達到預設閥值,則向后滑動該延時窗口以限制播放端請求速度;若該響應狀態(tài)碼表示請求成功,則將該計數(shù)器置零。
進一步地,該滑動延時窗口以限制播放端請求速度的方法,包括:將該延時窗口向后滑動一個單位時間,且將該計數(shù)器置零。
進一步地,在初始化延時窗口之前,還包括:服務器以單位時間間隔為依據(jù)對直播資源進行切片,并且對該切片進行編號,該資源片段為直播資源的切片。
進一步地,該服務器以單位時間間隔為依據(jù)對直播資源進行切片,并且對該切片進行編號,包括:該切片編號是以該資源切片的時間戳為依據(jù)進行編號。
進一步地,該初始化延時窗口包括:獲取延遲參數(shù),根據(jù)延遲參數(shù)定義延時窗口大小,且根據(jù)延時窗口大小從服務端中獲取目標流媒體資源的起始編號及最新編號,并且定時維護延時窗口。
本發(fā)明另一方面提供了一種流媒體直播系統(tǒng),系統(tǒng)包括如下:
資源請求單元,該資源請求單元用于根據(jù)初始化后的該延時窗口,請求延時窗口范圍內資源片段;判斷單元,該判斷單元用于判斷該延時窗口資源片段的首次請求結果是否成功;失敗次數(shù)累計單元,該失敗次數(shù)累計單元用于累計首次請求該延時窗口資源片段連續(xù)失敗的次數(shù),若該失敗次數(shù)達到預設閥值時,滑動延時窗口以限制播放端請求速度。
進一步地,該判斷單元還包括:用于累計首次請求連續(xù)失敗次數(shù)的計數(shù)器;狀態(tài)碼獲取單元,該狀態(tài)碼獲取單元用于獲取該延時窗口資源片段首次請求的響應狀態(tài)碼;狀態(tài)碼識別處理單元,該狀態(tài)碼識別單元用于通過該資源片段首次請求的響應狀態(tài)碼來識別該資源片段的請求是否成功。若該響應狀態(tài)碼表示請求失敗,則該計數(shù)器值加1,繼續(xù)請求該延時窗口范圍內的資源片段以累計首次請求該延時窗口資源片段連續(xù)失敗的次數(shù),當該計數(shù)器值達到預設閥值,則向后滑動該延時窗口以限制播放端請求速度;若該響應狀態(tài)碼表示請求成功,則將該計數(shù)器置零。
進一步地,還包括延遲處理單元,該延遲處理單元用于當該計數(shù)器值達到預設閥值時,將該延時窗口向后滑動一個單位時間,且將該計數(shù)器置零。
進一步地,還包括切片單元,該切片單元設置在服務端,用于以單位時間間隔為依據(jù)對流媒體資源進行切片。
進一步地,還包括切片編號單元,該切片編號單元用于對該資源切片以該資源切片的時間戳為依據(jù)進行編號。
進一步地,還包括延時窗口初始化單元,延時窗口初始化單元用于初始化延時窗口;其中,獲取延遲參數(shù),依據(jù)延遲參數(shù)定義延時窗口大小,且根據(jù)延時窗口大小從服務端中獲取目標流媒體資源的起始編號及最新編號,并且定時維護延時窗口。
本發(fā)明的另一方面提供了一種流媒體直播裝置,包括資源請求單元、判斷單元和失敗次數(shù)累計單元;其中,資源請求單元用于根據(jù)初始化后的延時窗口,請求延時窗口范圍內資源片段;判斷單元用于判斷延時窗口資源片段的首次請求結果是否成功;失敗次數(shù)累計單元用于累計首次請求延時窗口資源片段連續(xù)失敗的次數(shù),若連續(xù)失敗的次數(shù)達到預設閥值時,滑動延時窗口以限制播放端請求速度。
由上可見,本發(fā)明提供的技術方案,在初始化延時窗口后,通過探測請求延時窗口范圍內的資源切片的響應狀態(tài)碼,識別該響應狀態(tài)碼,且對首次請求連續(xù)失敗次數(shù)通過對應的失敗響應狀態(tài)碼累計,當達到預設閥值時,系統(tǒng)判斷為資源下載延遲,從而滑動延時窗口,以限制播放端的請求速度,從而避免播放端向服務器頻繁請求卻得不到成功響應而導致播放卡頓的情況。這就提高了用戶體驗。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例一服務端流媒體資源切片及編號的方法流程圖;
圖2是本發(fā)明實施例一中流媒體直播方法流程圖;
圖3是本發(fā)明實施例一種步驟s205的子步驟流程圖;
圖4是本發(fā)明實施例一種步驟s206的子步驟流程圖;
圖5是本發(fā)明實施例二中流媒體直播系統(tǒng)功能模塊圖;
圖6是本發(fā)明實施例三中流媒體直播裝置功能模塊圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方式作進一步地詳細描述。
實施例一
本發(fā)明提供一種流媒體直播方法,請參閱圖1,圖1表示服務端流媒體資源切片及編號的方法流程圖,包括如下步驟:
s101,服務端通過推流或拉流下載目標流媒體資源。
s103,服務端對目標流媒體資源按照一定規(guī)則進行切片;從而使得流媒體資源片段以資源切片的形式存在。
具體而言,例如,可以按照單位時間為間隔進行切片;這里說的單位時間為間隔是指流媒體資源片段時間戳的間隔。
s105,所述服務端對每個資源切片進行編號。
具體而言,對資源切片進行編號的目的是為了區(qū)分和識別不同時間戳的資源切片,因此為了使系統(tǒng)讀取該編號的資源切片時,能夠識別出該資源切片對應的時間戳,優(yōu)選地,可以以資源切片的時間戳為依據(jù)對資源切片進行編號。例如,可以從0開始,或以某個值為起始編號,然后以單位時間為間隔遞增作為下一個資源切片的編號;這就使得該資源切片的編號正好為該資源切片的時間戳。此外,還可以用自然數(shù)對該資源切片進行編號,為了使資源切片編號與對應資源切片的時間戳關聯(lián),可以建立該資源切片編號及對應資源切片時間戳的關系式或映射表,通過換算或查表的方式讀取該資源切片編號對應的資源切片的時間戳。
圖2表示本實施例中流媒體直播方法的工作流程圖,其直播方法具體步驟如下:
s201,初始化延時窗口;
具體而言,設置在播放端的播放器獲取延遲參數(shù),并根據(jù)延遲參數(shù)設置延時窗口大小。
s202,根據(jù)所述延時窗口,從服務器獲取s201中定義的延時窗口范圍內的起始編號以及最新編號。
具體而言,播放端在啟動時,根據(jù)延遲參數(shù)初始化延時窗口,即播放端從服務端獲取流媒體資源的起始編號以及最新編號。這里所說的起始編號為流媒體資源的起始播放位置切片的編號。而最新編號為從起始編號位置起算,間隔延遲參數(shù)的資源切片的編號。
s203,播放端定時維護針對同一流媒體請求的延時窗口。
具體而言,由于延時窗口用來約束播放端可以向服務端獲取的資源切片范圍;因此隨著播放端以時間順序播放了已請求到的資源切片,勢必要不斷請求延時窗口中未播放的資源切片,這就使得系統(tǒng)通過推進延時窗口向前滑動,即同步遞增起始編號及最新編號,以使得播放端能從該延時窗口中不斷地獲得未請求的資源編號。優(yōu)選的,系統(tǒng)可以設置定時器,定時啟動延時窗口范圍內起始編號和最新編號同步遞增單位時間的操作。
s204,根據(jù)該延時窗口,請求延時窗口范圍內資源切片。
具體而言,播放端依據(jù)延時窗口定義的起始編號及最新編號,排除已請求成功的資源切片記錄,從延時窗口中獲得下一個未請求成功資源切片的編號,并以該未請求成功資源切片的編號向服務端請求資源切片。
請參考圖3,s205,播放端判斷延時窗口范圍內資源切片的首次請求結果是否成功;
具體而言,播放端判斷延時窗口范圍內資源切片的首次請求結果是否成功的步驟包括:
s2051,在播放端設置用于累計請求連續(xù)失敗次數(shù)的計數(shù)器;
s2053,獲取所述延時窗口資源切片首次請求的響應狀態(tài)碼;
s2055,通過該資源切片首次請求的響應狀態(tài)碼來識別該資源切片的請求是否成功。
具體而言,假如該資源切片首次請求的響應狀態(tài)碼為200,則認為該資源切片的首次請求成功。而假如該資源切片的首次請求的響應狀態(tài)碼為404,則認為該資源切片的首次請求失敗。當然,除了404狀態(tài)碼,還可能出現(xiàn)其他表示請求失敗的響應狀態(tài)碼,例如當請求的資源的內容特性無法滿足請求頭中的條件,因而無法生成響應實體時響應的狀態(tài)碼406;或者當服務器拒絕處理當前請求時響應的狀態(tài)碼為413等等。
請參考圖4,s206,累計首次請求所述延時窗口資源片段連續(xù)失敗的次數(shù)。
具體而言,累計首次請求所述延時窗口資源片段連續(xù)失敗次數(shù)的具體步驟包括如下:
s2061,若所述響應狀態(tài)碼表示請求失敗,則所述計數(shù)器值加1;
具體而言,根據(jù)s2055中所說的通過所述該資源片段首次請求的響應狀態(tài)碼來識別該資源片段的首次請求是否成功;若所述響應狀態(tài)碼表示請求失敗,則s2051中設置的計數(shù)器值加1;
s2063,并且播放端繼續(xù)請求所述延時窗口范圍內的資源切片以累計首次請求所述延時窗口資源片段連續(xù)失敗的次數(shù),當所述計數(shù)器值達到預設閥值,則向后滑動所述延時窗口以限制播放端請求速度;
具體而言,包括步驟如下:
步驟1,播放端繼續(xù)請求所述延時窗口范圍內的資源切片,該資源切片可以
為首次請求失敗的資源切片或尚未被請求的資源切片。
步驟2,若下一個尚未被請求的資源切片首次請求的響應狀態(tài)碼依然是表示
請求失敗,則s2051中設置的計數(shù)器值再加1。
步驟3,判斷s2051中設置的計數(shù)器值是否達到預設閥值,這里所說的預設
閥值是根據(jù)以往播放經(jīng)驗設置的丟幀容忍值。如果s2051中設置的計數(shù)器
值達到了預設閥值,則播放端則可以認為此時播放環(huán)境出現(xiàn)延遲現(xiàn)象,即
服務端無法及時響應播放端的內容請求。若s2051中設置的計數(shù)器值尚未
達到預設閥值,則循環(huán)執(zhí)行步驟1到步驟3。
s2065,若所述響應狀態(tài)碼表示請求成功,則將s2051中設置的計數(shù)器值置零。
s207,滑動延時窗口以限制播放端請求速度的步驟包括:
首先,將所述延時窗口向后滑動一個單位時間。
具體而言,當播放端每次識別出播放環(huán)境出現(xiàn)延遲的情況時,將當前的延
時窗口中的起始編號和最新編號同時遞減單位時間。
然后,將s2051中設置的計數(shù)器值置零。
s208,播放端等待延時窗口的定時維護和調整結果,繼續(xù)根據(jù)延時窗口向服務端請求資源切片。
實施例二
本發(fā)明還提供一種流媒體直播系統(tǒng),請參閱圖5,圖5是本發(fā)明實施例二中流媒體直播系統(tǒng)功能模塊圖。
該流媒體直播系統(tǒng)包括播放端和服務端,該流媒體直播系統(tǒng)還包括以下單元:
切片單元301,該切片單元301設置在服務端,用于以單位時間間隔為依據(jù)對流媒體資源進行切片。
切片編號單元302,該切片編號單元302設置在服務端,該切片編號單元302用于對該資源切片以該資源切片的時間戳為依據(jù)進行編號。
具體而言,切片編號單元302以資源切片的時間戳為依據(jù)對資源切片進行編號。例如,可以從0開始,也可以以某個值為起始編號,然后以單位時間為間隔遞增作為下一個資源切片的編號;這就使得該資源切片的編號正好為該資源切片的時間戳。此外,還可以用自然數(shù)對該資源切片進行編號,為了使資源切片編號與對應資源切片的時間戳關聯(lián),可以建立該資源切片編號及對應資源切片時間戳的關系式或映射表,通過換算或查表的方式讀取該資源切片編號對應的資源切片的時間戳。
延時窗口初始化單元303,該延時窗口初始化單元303設置在播放端。該延時窗口初始化單元303根據(jù)播放業(yè)務的需求獲得延遲參數(shù),并根據(jù)延遲參數(shù)設置延時窗口大小。播放端在啟動時,根據(jù)延遲參數(shù)初始化延時窗口,即播放端從服務端獲取流媒體資源的起始編號以及最新編號。這里所說的起始編號為流媒體資源的起始播放位置切片對應的編號。而最新編號為從起始編號位置起算,間隔延遲參數(shù)的資源切片的編號。
延時窗口維護單元304,該延時窗口維護單元304用于播放端定時維護針對同一流媒體請求的延時窗口。從而使得系統(tǒng)通過推進延時窗口向前滑動,即同步遞增起始編號及最新編號,以使得播放端能從該延時窗口中不斷地獲得未請求的資源編號。優(yōu)選的,該系統(tǒng)可以設置定時器,定時啟動延時窗口向前滑動單位時間,即延時窗口范圍內起始編號和最新編號同步增加單位時間的操作。
資源請求單元305,該資源請求單元305用于根據(jù)初始化后的該延時窗口,向服務端請求延時窗口范圍內資源切片
具體而言,播放端依據(jù)延時窗口定義的起始編號及最新編號,排除已請求成功的資源切片記錄,從延時窗口中獲得下一個未請求成功資源切片的編號,并以該未請求成功資源切片的編號向服務端請求資源切片。
判斷單元306,該判斷單元306用于判斷該延時窗口資源切片的首次請求結果是否成功。
該判斷單元306還包括用于累計首次請求連續(xù)失敗次數(shù)的計數(shù)器,以及狀態(tài)碼獲取單元,該狀態(tài)碼獲取單元用于獲取該延時窗口資源切片首次請求的響應狀態(tài)碼。以及狀態(tài)碼識別處理單元,該狀態(tài)碼識別單元用于通過該資源切片首次請求的響應狀態(tài)碼來識別該資源切片的請求是否成功。
失敗次數(shù)累計單元307,該失敗次數(shù)累計單元307用于累計連續(xù)請求該延時窗口資源切片失敗次數(shù)。
具體而言,若該響應狀態(tài)碼表示請求失敗,則該計數(shù)器值加1;繼續(xù)請求該延時窗口范圍內的資源切片以累計首次請求該延時窗口資源切片連續(xù)失敗的次數(shù)。
此外,若該響應狀態(tài)碼表示請求成功,則將該計數(shù)器置零。
延遲處理單元308,該延遲處理單元308用于當該計數(shù)器值達到預設閥值時,將該延時窗口向后滑動一個單位時間,且將該計數(shù)器置零。
具體而言,當播放端每次識別出播放環(huán)境出現(xiàn)延遲的情況時,將當前的延
時窗口中的起始編號和最新編號同時遞減單位時間。
實施例三
參見圖6,本發(fā)明實施例提供了一種流媒體直播裝置,包括資源請求單元401、判斷單元402和失敗次數(shù)累計單元403。其中,資源請求單元401用于根據(jù)初始化后的延時窗口,請求延時窗口范圍內資源片段;判斷單元402用于判斷延時窗口資源片段的首次請求結果是否成功;失敗次數(shù)累計單元403用于累計首次請求延時窗口資源片段連續(xù)失敗的次數(shù),若連續(xù)失敗的次數(shù)達到預設閥值時,滑動延時窗口以限制播放端請求速度。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
綜上所述,本發(fā)明提供的技術方案,在初始化延時窗口后,通過探測請求延時窗口范圍內的資源切片的響應狀態(tài)碼,識別該響應狀態(tài)碼,且對首次請求連續(xù)失敗次數(shù)通過對應的失敗響應狀態(tài)碼累計,當達到預設閥值時,系統(tǒng)判斷為資源下載延遲,從而向后滑動延時窗口,以限制播放端的請求速度。從而避免播放端向服務器頻繁請求卻得不到成功響應而導致播放卡頓的情況。此外系統(tǒng)定時維護延時窗口向前滑動,這就確保了播放端請求編號的更新速度,從而避免播放端出現(xiàn)卡頓,因此提高了用戶的視聽體驗。
本說明書中的各個實施方式均采用遞進的方式描述,各個實施方式之間相同相似的部分互相參見即可,每個實施方式重點說明的都是與其他實施方式的不同之處。尤其,針對裝置的實施方式來說,均可以參照前述方法的實施方式的介紹對照解釋。
本發(fā)明可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務或實現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結構等等。也可以在分布式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設備在內的本地和遠程計算機存儲介質中。
以上所描述的系統(tǒng)實施例僅僅是示意性的,其中該作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領域普通技術人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件?;谶@樣的理解,上述技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在計算機可讀存儲介質中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行各個實施例或者實施例的某些部分該的方法。
以上該僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。