本發(fā)明涉及流媒體
技術(shù)領(lǐng)域:
:,尤其涉及一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法。
背景技術(shù):
::用戶在用網(wǎng)絡(luò)觀看視頻時,大多需要根據(jù)當(dāng)前網(wǎng)絡(luò)帶寬手動地來選擇視頻的清晰度即視頻的分辨率,更多情況下是愿意觀看清晰度更高的視頻,但在網(wǎng)絡(luò)較差的情況下用戶選擇較低分辨率播放后擔(dān)心網(wǎng)絡(luò)不佳或避免來回切換都不會再選擇更高清晰度的視頻播放,這十分影響用戶的觀看體驗,目前仍缺少一種成熟的能夠根據(jù)當(dāng)前網(wǎng)絡(luò)帶寬自動切換視頻分辨率的帶寬自適應(yīng)方法讓用戶免于重復(fù)切換。HLS協(xié)議(HTTPLiveStreaming)是基于HTTP的流媒體通信協(xié)議,近年來HLS協(xié)議在流媒體領(lǐng)域得到廣泛應(yīng)用。HLS協(xié)議采用流媒體切片原理,提供一個可以訪問的m3u8播放列表,記錄了切片的個數(shù)和每個切片的信息。由于該協(xié)議采用HTTP協(xié)議,能夠根據(jù)當(dāng)前帶寬自適應(yīng)調(diào)整碼率,即能根據(jù)從服務(wù)器下載HLS切片的流媒體數(shù)據(jù)速度來選擇合適碼率播放,在網(wǎng)絡(luò)帶寬比較低的情況下自動切換低碼率播放,帶寬比較好情況下自動選擇更高碼率播放,這樣能夠確保在播放視頻時流暢。技術(shù)實現(xiàn)要素:本發(fā)明提供一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法,解決了在HLS協(xié)議的基礎(chǔ)上查找一段時間內(nèi)與當(dāng)前網(wǎng)絡(luò)帶寬的匹配的視頻索引號并利用判決條件判決后自動切換視頻分辨率的技術(shù)問題。為解決以上技術(shù)問題,本發(fā)明提供一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法,包括步驟:S1.從服務(wù)器下載HLS切片的流媒體文件到PINGPONG緩存區(qū),根據(jù)每一HLS切片的流媒體文件的大小和下載時間計算出其對應(yīng)的網(wǎng)絡(luò)帶寬;S2.比對每一HLS切片的流媒體文件對應(yīng)的所述網(wǎng)絡(luò)帶寬和不同分辨率下的視頻碼率,得到并記錄所述網(wǎng)絡(luò)帶寬對應(yīng)的視頻播放索引號;S3.判斷第一預(yù)設(shè)時間段內(nèi)連續(xù)的HLS切片對應(yīng)的視頻播放索引號是否為同一個值,若否則返回步驟S1;若是則判定所述同一個值所對應(yīng)的視頻播放索引號為所述第一預(yù)設(shè)時間段內(nèi)相匹配的視頻播放索引號,并進行下一步;S4.判斷所述相匹配的視頻播放索引號和當(dāng)前視頻播放索引號是否相同,若是則保持當(dāng)前視頻分辨率播放,若否則進行下一步;S5.判斷所述相匹配的視頻播放索引號是否小于當(dāng)前視頻播放索引號,若是則切換當(dāng)前視頻分辨率為所述相匹配的視頻播放索引號對應(yīng)的視頻分辨率進行播放;若否則進行下一步;S6.計算出當(dāng)前播放視頻在第二預(yù)設(shè)時間段內(nèi)的平均網(wǎng)絡(luò)帶寬,并判斷所述平均網(wǎng)絡(luò)帶寬是否大于上一次上升視頻碼率的閥值,若是,則切換當(dāng)前視頻分辨率為所述最佳視頻播放索引號對應(yīng)的視頻分辨率進行播放;若否則返回到步驟S1。進一步地,在所述步驟S6中,所述上一次上升碼率的閥值為上一次由低碼率切換為高碼率不成功時的網(wǎng)絡(luò)帶寬。進一步地,所述步驟S1中的所述不同分辨率下的視頻碼率伴隨該視頻碼率的m3u8路徑由主板SNMP下發(fā)頂層的m3u8路徑給HLS子板、所述HLS子板解析頂層m3u8文件而得。更進一步地,在所述步驟S1前,默認根據(jù)不同分辨率下的最大視頻碼率的視頻播放索引號進行播放。進一步地,在所述步驟S6后,每一片所述HLS切片的流媒體文件經(jīng)過TS打包器,以UDP協(xié)議方式傳輸給邏輯處理器,邏輯處理器將捕獲到的相對應(yīng)的UDP包一部分傳輸給主板SNMP,另一部分傳輸給CPU輸出。更進一步地,所述主板SNMP從邏輯處理器上捕獲的UDP包主要以ASI輸出、IP輸出和復(fù)用到解碼器中輸出。進一步地,在所述步驟S3中,從第一次判斷到兩個連續(xù)的HLS切片對應(yīng)的視頻播放索引號為同一個值開始,累計記錄下相同的視頻播放索引號個數(shù),經(jīng)過所述第一預(yù)設(shè)時間段記錄到的相同的視頻播放索引號個數(shù)為N;當(dāng)相同的視頻播放索引號個數(shù)累計到N時,即所述第一預(yù)設(shè)時間段內(nèi)連續(xù)的HLS切片對應(yīng)的視頻播放索引號為同一個值。本發(fā)明提供的一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法,基于HLS的碼率自適應(yīng)特性,實現(xiàn)了從服務(wù)器接收HLS流通過解碼輸出播放,同時能夠根據(jù)從服務(wù)器下載流媒體速度計算出當(dāng)前帶寬進而可以自動選擇合適當(dāng)前帶寬的視頻碼率播放,在網(wǎng)絡(luò)環(huán)境差的情況下也能保持視頻播放流暢。附圖說明圖1是本發(fā)明實施例提供的一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法的步驟流程圖;圖2是本發(fā)明實施例提供的一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法的算法流程圖;圖3是本發(fā)明實施例提供的一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法的HLS切片的處理走向圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述。以下僅為較佳實施例,不構(gòu)成對本發(fā)明保護范圍的限制。參見圖1,是本發(fā)明提供的一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法的流程圖。在本實施例中,所述的一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法,包括步驟:S1.從服務(wù)器下載HLS切片的流媒體文件到PINGPONG緩存區(qū),根據(jù)每一HLS切片的流媒體文件的大小和下載時間計算出其對應(yīng)的網(wǎng)絡(luò)帶寬;S2.比對每一HLS切片的流媒體文件對應(yīng)的所述網(wǎng)絡(luò)帶寬和不同分辨率下的視頻碼率,得到并記錄所述網(wǎng)絡(luò)帶寬對應(yīng)的視頻播放索引號;S3.判斷第一預(yù)設(shè)時間段內(nèi)連續(xù)的HLS切片對應(yīng)的視頻播放索引號是否為同一個值,若否則返回步驟S1;若是則判定所述同一個值所對應(yīng)的視頻播放索引號為所述第一預(yù)設(shè)時間段內(nèi)相匹配的視頻播放索引號,并進行下一步;S4.判斷所述相匹配的視頻播放索引號和當(dāng)前視頻播放索引號是否相同,若是則保持當(dāng)前視頻分辨率播放,若否則進行下一步;S5.判斷所述相匹配的視頻播放索引號是否小于當(dāng)前視頻播放索引號,若是則切換當(dāng)前視頻分辨率為所述相匹配的視頻播放索引號對應(yīng)的視頻分辨率進行播放;若否則進行下一步;S6.計算出當(dāng)前播放視頻在第二預(yù)設(shè)時間段內(nèi)的平均網(wǎng)絡(luò)帶寬,并判斷所述平均網(wǎng)絡(luò)帶寬是否大于上一次上升視頻碼率的閥值,若是,則切換當(dāng)前視頻分辨率為所述最佳視頻播放索引號對應(yīng)的視頻分辨率進行播放;若否則返回到步驟S1。在本實施例中,在所述步驟S1前,默認根據(jù)不同分辨率下的最大視頻碼率的視頻播放索引號進行播放。所述步驟S1中的所述不同分辨率下的視頻碼率伴隨該視頻碼率的m3u8路徑由主板SNMP下發(fā)頂層的m3u8路徑給HLS子板、所述HLS子板解析頂層m3u8文件而得。在所述步驟S3中,從第一次判斷到兩個連續(xù)的HLS切片對應(yīng)的視頻播放索引號為同一個值開始,累計記錄下相同的視頻播放索引號個數(shù),經(jīng)過所述第一預(yù)設(shè)時間段記錄到的相同的視頻播放索引號個數(shù)為N;當(dāng)相同的視頻播放索引號個數(shù)累計到N時,即所述第一預(yù)設(shè)時間段內(nèi)連續(xù)的HLS切片對應(yīng)的視頻播放索引號為同一個值。在所述步驟S6中,所述上一次上升碼率的閥值為上一次由低碼率切換為高碼率不成功時的網(wǎng)絡(luò)帶寬,只有大于該閥值才考慮上升,目的為了防止在兩個分辨率不停地切換。在所述步驟S6后,每一片所述HLS切片的流媒體文件經(jīng)過TS打包器,以UDP協(xié)議方式傳輸給邏輯處理器,邏輯處理器將捕獲到的相對應(yīng)的UDP包一部分傳輸給主板SNMP,另一部分傳輸給CPU輸出。所述主板SNMP從邏輯處理器上捕獲的UDP包主要以ASI輸出、IP輸出和復(fù)用到解碼器中輸出。為了更便于理解HLS切片的方法處理流程,參考圖2,是本發(fā)明提供的一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法的算法流程圖。通過從服務(wù)器中獲取一片HLS流的大小和時間,并計算出當(dāng)前的帶寬大?。粚⑸鲜龅贸龅膸挻笮『?不同分辨率下的)輸入視頻碼率進行比較得到(與之匹配的)適合播放索引looksuitableindex,記錄當(dāng)前正播放索引curtsurlindex和記錄每一次找到適合播放索引相同的個數(shù)continuecount;比較當(dāng)前適合(合適)播放索引looksuitableindex和上一片適合索引savesuitableindex,如果相同,continuecount的計算個數(shù)加1(continuecount++),否則有一次不同continuecount重新記錄為零(continuecount值為0從新開始);判斷連續(xù)計數(shù)continuecount是否滿足N次,如果不滿足繼續(xù)從第一步開始,如果滿足則判斷匹配的視頻播放索引號looksuitableindex和當(dāng)前視頻播放索引號curtsurlindex是否相等;如果找到looksuitableindex和curtsurlindex相等則不需要切換分辨率,又重新從第一步開始;如果looksuitableindex小于curtsurlindex,則需要直接切換低碼率視頻播放。如果looksuitableindex大于curtsurlindex,則進一步判斷計算出當(dāng)前的平均帶寬(程序預(yù)設(shè)一段短時間內(nèi))是否大于上一次上升視頻碼率的閥值,其中用數(shù)組s32RecordLastRiseBiteRate[HLS_INPUT_URLMAX]記錄每一個播放索引的閥值。如果大于上一次上升視頻碼率的閥值,則這一次就選擇高碼率視頻播放,否則這一次就不需要切換分辨率,返回到最開始。本算法通過獲取一片視頻流大小和所用時間計算帶寬,這樣目的為了不需要消耗自身帶寬也能得到當(dāng)前帶寬大??;本算法中采用連續(xù)計數(shù)continuecount來確定是否需要切換分辨率,這樣可以確保當(dāng)前計算的帶寬算法穩(wěn)定,防止有個別偏差的值導(dǎo)致誤判帶寬大小,如果連續(xù)計數(shù)continuecount值能達到N次說明獲取N片HLS流計算出的帶寬是一個穩(wěn)定值;本算法中添加學(xué)習(xí)機制,用數(shù)組s32RecordLastRiseBiteRate[HLS_INPUT_URLMAX]記錄每次上升碼率時對應(yīng)當(dāng)前播放索引的閥值,這樣防止上升碼率后發(fā)現(xiàn)播放不順暢又調(diào)回低碼率播放,當(dāng)播放低碼率時檢測帶寬可以播放更大碼率時,這時計算出的帶寬和上一次對應(yīng)閥值進行比較來進一步確定是否上升碼率,因此可以防止出現(xiàn)兩中分辨率不斷切換播放的情況。為了更便于理解HLS切片的處理走向流程,與本發(fā)明提供的一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法的步驟流程圖對應(yīng)的是,參考圖3,本發(fā)明還提供一種基于HLS協(xié)議的帶寬自適應(yīng)調(diào)節(jié)視頻分辨率的方法的HLS切片的處理走向圖。主板SNMP下發(fā)頂層的m3u8路徑給子板,TSIP+_02子板解析頂層m3u8文件得到不同分辨率視頻的m3u8路徑和分辨率信息;根據(jù)第一步解析到的不同分辨率視頻信息,通過比較不同視頻的播放碼率大小獲得最大碼率的視頻播放索引號;首先選擇最大碼率視頻播放,在播放過程中記錄從服務(wù)器獲取每一片HLS視頻流的大小和所用的時間,通過帶寬算法計算出當(dāng)前的帶寬大小,同時把計算出當(dāng)前帶寬大小和當(dāng)前播放的視頻碼率進行比較得出適合當(dāng)前帶寬的視頻播放索引,重新選擇適合當(dāng)前帶寬的視頻播放;從服務(wù)器中讀取每一片的音視頻信息存在PINGPONG緩沖區(qū),處理完一片音視頻包信息后通過TS打包器,以UDP協(xié)議方式傳輸給邏輯處理器;邏輯處理器捕獲到相對應(yīng)的UDP包一部分傳輸給主板SNMP,另一部分傳輸給CPU輸出;主板從邏輯上捕獲的包主要以ASI輸出、IP輸出和復(fù)用到解碼器中輸出。以上所述是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本
技術(shù)領(lǐng)域:
:的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3