本發(fā)明涉及通信和信息傳播技術(shù)領(lǐng)域,尤其涉及一種hls視頻播放方法、終端及服務(wù)器。
背景技術(shù):
實時流傳輸(hls,httplivestreaming)是蘋果公司制定的基于http的流媒體傳輸協(xié)議,可實現(xiàn)流媒體的直播和點播服務(wù),目前已經(jīng)廣泛應(yīng)用到眾多提供視頻流服務(wù)的領(lǐng)域。
相對于rtmp協(xié)議、rtsp協(xié)議、mms協(xié)議等常見的流媒體直播協(xié)議,hls直播協(xié)議最大的不同為直播終端獲取到的不是一個完整的數(shù)據(jù)流。hls協(xié)議在服務(wù)器端將直播數(shù)據(jù)流存儲為連續(xù)的、很短時長的mpeg-ts格式的媒體文件,終端持續(xù)按順序播放從服務(wù)器獲取到的這些分段媒體文件,就實現(xiàn)了直播。其中,服務(wù)器端和終端的交互示意圖如圖1所示。由此可以認為,hls是以點播的技術(shù)方式來實現(xiàn)直播。由于hls直播數(shù)據(jù)通過http協(xié)議傳輸,所以完全不用考慮防火墻或者代理的問題,同時,這些分段文件的時長很短,終端可以快速地選擇和切換碼率,以適應(yīng)不同帶寬條件下的播放。
終端選擇或切換碼率時,可以由用戶自行選擇碼率,也可以通過http下載傳輸流(ts)視頻切片速度來近似估算當前網(wǎng)絡(luò)帶寬值后根據(jù)網(wǎng)絡(luò)寬帶值選擇;根據(jù)網(wǎng)絡(luò)寬帶值選擇時,網(wǎng)速出現(xiàn)抖動時會出現(xiàn)碼率頻繁切換的情況。
技術(shù)實現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明實施例提供一種hls視頻播放方法、終端及服務(wù)器,以在自動碼率調(diào)節(jié)時避免網(wǎng)絡(luò)抖動導(dǎo)致的碼率頻繁切換。
本發(fā)明實施例的技術(shù)方案是這樣實現(xiàn)的:
本發(fā)明實施例提供的一種hls視頻播放方法,包括:
通過第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取網(wǎng)絡(luò)帶寬狀態(tài);
根據(jù)所述網(wǎng)絡(luò)帶寬狀態(tài)向服務(wù)器發(fā)送調(diào)節(jié)碼率請求;
接收服務(wù)器響應(yīng)所述調(diào)節(jié)碼率請求所反饋的新碼率視頻切片。
上述方案中,所述新碼率視頻切片由所述服務(wù)器獲取第一時間間隔內(nèi)的終端對所述視頻切片的平均下載速度,根據(jù)所述平均下載速度確定新碼率后得到,其中,所述第一時間間隔小于所述第一統(tǒng)計周期。
上述方案中,所述第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取網(wǎng)絡(luò)帶寬狀態(tài),包括:
在第一統(tǒng)計周期內(nèi),每隔第二時間間隔采樣得到的緩沖區(qū)視頻時長遞增時,所述網(wǎng)絡(luò)帶寬狀態(tài)為網(wǎng)絡(luò)帶寬充足;
在第一統(tǒng)計周期內(nèi),每隔第二時間間隔采樣得到的緩沖區(qū)視頻時長遞減時,所述網(wǎng)絡(luò)帶寬狀態(tài)為網(wǎng)絡(luò)帶寬不足;其中,所述第一統(tǒng)計周期內(nèi)包含多個第二時間間隔。
上述方案中,所述接收服務(wù)器響應(yīng)所述調(diào)節(jié)碼率請求所反饋的新碼率視頻切片,包括:
根據(jù)當前播放的視頻切片的第一序列號和當前下載的視頻切片的第二序列號的關(guān)系確定需下載的下一個視頻切片的第三序列號;
從所述服務(wù)器下載序列號為所述第三序列號的視頻切片,并清除緩沖區(qū)中序列號大于等于所述第三序列號的視頻切片。
上述方案中,所述根據(jù)所述網(wǎng)絡(luò)帶寬狀態(tài)向服務(wù)器發(fā)送調(diào)節(jié)碼率請求,包括:
在網(wǎng)絡(luò)帶寬充足時,發(fā)出向上調(diào)節(jié)碼率請求;在網(wǎng)絡(luò)帶寬不足時,發(fā)出向下調(diào)節(jié)碼率請求。
上述方案中,所述根據(jù)當前播放的視頻切片的第一序列號和當前下載的視頻切片的第二序列號的關(guān)系確定需下載的下一個視頻切片的第三序列號,包括:
所述第一序列號大于所述第二序列號時,確定所述第三序列號等于所述第一序列號加一;
所述第一序列號小于所述第二序列號時,確定所述第三序列號等于所述第一序列號加二。
上述方案中,所述對緩沖區(qū)視頻時長進行采樣,包括:獲取所述緩沖區(qū)中視頻切片的數(shù)量,根據(jù)所述緩沖區(qū)中視頻切片的數(shù)量對所述緩沖區(qū)視頻時長進行采樣。
本發(fā)明實施例提供的另一種hls視頻播放方法,包括:
接收所述調(diào)節(jié)碼率請求;所述調(diào)節(jié)碼率請求由終端通過第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取的網(wǎng)絡(luò)帶寬狀態(tài)后,根據(jù)所述網(wǎng)絡(luò)帶寬狀態(tài)發(fā)出;
獲取第一時間間隔內(nèi)的所述終端對所述視頻切片的平均下載速度,并根據(jù)所述平均下載速度確定新碼率,得到新碼率視頻切片;其中,所述第一時間間隔小于所述第一統(tǒng)計周期;
將所述新碼率視頻切片向所述終端發(fā)送。
上述方案中,所述方法還包括:設(shè)定不同碼率的相同序列號的視頻切片內(nèi)容相同;設(shè)定每個所述視頻切片均以關(guān)鍵幀開始。
本發(fā)明實施例提供的hls視頻播放終端,包括:
獲取單元,用于通過第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取網(wǎng)絡(luò)帶寬狀態(tài);
第一發(fā)送單元,用于根據(jù)所述網(wǎng)絡(luò)帶寬狀態(tài)向服務(wù)器發(fā)送調(diào)節(jié)碼率請求;
第一接收單元,用于接收服務(wù)器響應(yīng)所述調(diào)節(jié)碼率請求所反饋的新碼率視頻切片。
上述方案中,所述新碼率視頻切片由所述服務(wù)器獲取第一時間間隔內(nèi)的所述終端對所述視頻切片的平均下載速度,根據(jù)所述平均下載速度確定新碼率后得到;其中,所述第一時間間隔小于所述第一統(tǒng)計周期。
上述方案中,所述獲取單元,還用于:
在第一統(tǒng)計周期內(nèi),每隔第二時間間隔采樣得到的緩沖區(qū)視頻時長遞增時,所述網(wǎng)絡(luò)帶寬狀態(tài)為網(wǎng)絡(luò)帶寬充足;
在第一統(tǒng)計周期內(nèi),每隔第二時間間隔采樣得到的緩沖區(qū)視頻時長遞減時,所述網(wǎng)絡(luò)帶寬狀態(tài)為網(wǎng)絡(luò)帶寬不足;其中,所述第一統(tǒng)計周期內(nèi)包含多個第二時間間隔。
上述方案中,所述第一接收單元,還用于:
根據(jù)當前播放的視頻切片的第一序列號和當前下載的視頻切片的第二序列號的關(guān)系確定需下載的下一個視頻切片的第三序列號;
從所述服務(wù)器下載序列號為所述第三序列號的視頻切片,并清除緩沖區(qū)中序列號大于等于所述第三序列號的視頻切片。
上述方案中,所述第一發(fā)送單元,還用于:
在網(wǎng)絡(luò)帶寬充足時,發(fā)出向上調(diào)節(jié)碼率請求;在網(wǎng)絡(luò)帶寬不足時,發(fā)出向下調(diào)節(jié)碼率請求。
上述方案中,所述第一接收單元,還用于:
在所述第一序列號大于所述第二序列號時,確定所述第三序列號等于所述第一序列號加一;
在所述第一序列號小于所述第二序列號時,確定所述第三序列號等于所述第一序列號加二。
上述方案中,所述獲取單元,還用于:獲取所述緩沖區(qū)中視頻切片的數(shù)量,根據(jù)所述緩沖區(qū)中視頻切片的數(shù)量對所述緩沖區(qū)視頻時長進行采樣。
本發(fā)明實施例提供的hls視頻播放服務(wù)器,包括:
第二接收單元,用于接收所述調(diào)節(jié)碼率請求;所述調(diào)節(jié)碼率請求由終端通過第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取的網(wǎng)絡(luò)帶寬狀態(tài)后,根據(jù)所述網(wǎng)絡(luò)帶寬狀態(tài)發(fā)出;
確定單元,用于獲取第一時間間隔內(nèi)的所述終端對所述視頻切片的平均下載速度,并根據(jù)所述平均下載速度確定新碼率,得到新碼率視頻切片;其中,所述第一時間間隔小于所述第一統(tǒng)計周期;
第二發(fā)送單元,用于將所述新碼率視頻切片向所述終端發(fā)送。
上述方案中,所述服務(wù)器還包括設(shè)定單元,用于設(shè)定不同碼率的相同序列號的視頻切片內(nèi)容相同;設(shè)定每個所述視頻切片均以關(guān)鍵幀開始。
本發(fā)明實施例所提供的hls視頻播放方法、終端及服務(wù)器,第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取網(wǎng)絡(luò)帶寬狀態(tài),并根據(jù)所述網(wǎng)絡(luò)帶寬狀態(tài)向服務(wù)器發(fā)送調(diào)節(jié)碼率請求;接收服務(wù)器響應(yīng)所述調(diào)節(jié)碼率請求所反饋的新碼率視頻切片。該技術(shù)方案以多次采樣的方式獲取網(wǎng)絡(luò)帶寬狀態(tài)以根據(jù)網(wǎng)絡(luò)帶寬狀態(tài)進行自動碼率調(diào)節(jié),相比較現(xiàn)有技術(shù),在自動碼率調(diào)節(jié)時避免了網(wǎng)絡(luò)抖動導(dǎo)致的碼率頻繁切換。
附圖說明
圖1為服務(wù)器端和終端間交互的示意圖;
圖2為本發(fā)明實施例中hls視頻播放方法的實現(xiàn)流程圖;
圖3為本發(fā)明實施例中hls視頻播放終端的組成結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例中hls視頻播放服務(wù)器的組成結(jié)構(gòu)示意圖。
具體實施方式
為了能夠更加詳盡地了解本發(fā)明的特點與技術(shù)內(nèi)容,下面結(jié)合附圖對本發(fā)明的實現(xiàn)進行詳細闡述,所附附圖僅供參考說明之用,并非用來限定本發(fā)明。
圖2為本發(fā)明實施例hls視頻播放方法的實現(xiàn)流程圖,如圖2所示,本發(fā)明實施例提供的hls視頻播放方法,包括:
步驟201,通過第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取網(wǎng)絡(luò)帶寬狀態(tài)。
步驟202,根據(jù)網(wǎng)絡(luò)帶寬狀態(tài)向服務(wù)器發(fā)送調(diào)節(jié)碼率請求。
步驟203,接收服務(wù)器響應(yīng)調(diào)節(jié)碼率請求所反饋的新碼率視頻切片。
在本發(fā)明實施例中,在步驟201中獲取的網(wǎng)絡(luò)帶寬狀態(tài)作為步驟202中終端向服務(wù)器發(fā)送調(diào)節(jié)碼率請求的依據(jù)。其中,在網(wǎng)絡(luò)帶寬充足時,發(fā)出向上調(diào)節(jié)碼率請求;在網(wǎng)絡(luò)帶寬不足時,發(fā)出向下調(diào)節(jié)碼率請求。
進行網(wǎng)絡(luò)帶寬獲取時,終端第一統(tǒng)計周期內(nèi)多次獲取緩沖區(qū)中視頻切片的數(shù)量,并根據(jù)緩沖區(qū)中視頻切片的數(shù)量對緩沖區(qū)視頻時長進行采樣。例如,在第一統(tǒng)計周期內(nèi),終端以2s為時間間隔對緩沖區(qū)中視頻切片時長進行多次采樣。
具體來說,終端在緩沖區(qū)緩沖視頻的同時,也會不停地播放視頻,消耗緩沖區(qū)的視頻時長;如果網(wǎng)絡(luò)速度較快,則緩沖區(qū)視頻時長的增速大于播放速度,緩沖區(qū)域的視頻時長成遞增態(tài)勢,如果網(wǎng)絡(luò)速度較慢,則緩沖區(qū)視頻時長的增速小于播放速度,則緩沖區(qū)域的視頻時長成遞減態(tài)勢。因此,可以在一個統(tǒng)計周期內(nèi)通過判斷多個視頻時長采樣點形成的曲線的狀態(tài)來判斷網(wǎng)絡(luò)帶寬狀態(tài):當采樣點形成遞增曲線認為網(wǎng)絡(luò)帶寬充足,反之當采樣點形成遞減曲線認為網(wǎng)絡(luò)帶寬不足。
由此,得出以下網(wǎng)絡(luò)帶寬狀態(tài)判斷條件:在第一統(tǒng)計周期內(nèi),每隔第二時間間隔采樣得到的緩沖區(qū)視頻時長遞增時,網(wǎng)絡(luò)帶寬狀態(tài)為網(wǎng)絡(luò)帶寬充足;在第一統(tǒng)計周期內(nèi),每隔第二時間間隔采樣得到的緩沖區(qū)視頻時長遞減時,網(wǎng)絡(luò)帶寬狀態(tài)為網(wǎng)絡(luò)帶寬不足其中,第一統(tǒng)計周期內(nèi)包含多個第二時間間隔。
在本發(fā)明實施例中,第二時間間隔即兩次視頻時長采樣之間的時間間隔,第二時間間隔和第一統(tǒng)計周期的大小可以根據(jù)需要設(shè)置,例如,可以取第二時間間隔為2s,第一統(tǒng)計周期為10s。此時,終端在10s內(nèi)每隔2s對緩沖區(qū)內(nèi)視頻切片時長進行采樣,在這10s內(nèi),如果緩沖區(qū)內(nèi)視頻切片時長遞增,則認為網(wǎng)絡(luò)帶寬充足;如果緩沖區(qū)內(nèi)視頻切片時長遞減,則認為網(wǎng)絡(luò)帶寬不足;緩沖區(qū)內(nèi)視頻切片時長不變或者波動時,不予判斷。
延長采樣周期可以更準確的對帶寬變化趨勢進行預(yù)測,但降低了碼率切換的及時性,在實際應(yīng)用中需要根據(jù)經(jīng)驗進行平衡選擇。
采用以上方案,可以得到穩(wěn)定變換的網(wǎng)絡(luò)帶寬狀態(tài),以該網(wǎng)絡(luò)帶寬狀態(tài)為依據(jù)進行碼率切換時,可以減少網(wǎng)絡(luò)抖動造成的碼率頻繁切換的可能性。
服務(wù)器接收上述向上調(diào)節(jié)碼率請求或向下調(diào)節(jié)碼率請求后,服務(wù)器獲取第一時間間隔內(nèi)終端對視頻切片的平均下載速度,根據(jù)平均下載速度確定新碼率,得到新碼率視頻切片后將新碼率視頻切片向終端反饋;其中,第一時間間隔小于第一統(tǒng)計周期。
其中,該第一時間間隔可以設(shè)定為8s。在8s的時間間隔內(nèi),服務(wù)器多次獲取終端對視頻切片的下載速度,并根據(jù)多次獲取的下載速度確定平均下載速度。服務(wù)器多次獲取終端對視頻切片的下載速度時,可以每隔固定的時間間隔獲取依次終端對視頻切片的下載速度。例如,服務(wù)器可以每隔2s獲取一次終端對視頻切片的下載速度,并根據(jù)8s內(nèi)獲取的4次下載速度確定8s內(nèi)的平均下載速度。
在進行hls視頻播放時,服務(wù)器將獲得的視頻數(shù)據(jù)進行編碼并壓縮成不同固定碼率的視頻文件,之后根據(jù)用戶請求將不同固定碼率的視頻流發(fā)送到不同的終端。當服務(wù)器接收到終端的調(diào)節(jié)碼率請求時,服務(wù)器獲取終端對視頻切片的平均下載速度,根據(jù)該平均下載速度確定相應(yīng)的固定碼率,并將該相應(yīng)的固定碼率確定為新碼率。
例如,該不同的固定碼率由低至高為第一碼率、第二碼率、第三碼率、第四碼率時,如果服務(wù)器在將第三碼率的視頻流發(fā)送發(fā)到終端時,接收到該終端的向上調(diào)節(jié)碼率請求,則判斷平均下載速度是否大于第四碼率值,并在平均下載速度大于等于第四碼率值時,將第四碼率確定為新碼率,在平均下載速度小于第四碼率值時,仍然將第三碼率確定為新碼率。
如果服務(wù)器在將第三碼率的視頻流發(fā)送發(fā)到終端時,接收到該終端的向下調(diào)節(jié)碼率請求,則判斷平均下載速度是否大于第二碼率值,并在平均下載速度大于等于第二碼率值時,將第二碼率確定為新碼率,在平均下載速度小于第二碼率值時,將第一碼率確定為新碼率。
確定新碼率后,服務(wù)器將使用新碼率的新碼率視頻切片向終端發(fā)送。
為了實現(xiàn)無縫平緩的切換體驗,服務(wù)器設(shè)定不同碼率的相同序列號的視頻切片內(nèi)容相同,即不同碼率的視頻切片序列號是對齊;服務(wù)器還設(shè)定每個視頻切片均以關(guān)鍵幀開始。滿足上述兩個條件,終端播放器切換碼率后解碼器可以正常解碼,并且畫面平滑過渡,提供給用戶無縫切換的觀感體驗。
終端的播放器在下載視頻切片時候會將音視頻數(shù)據(jù)包存儲到緩沖區(qū)隊列中,在此過程中將視頻切片的序列號和每個音視頻數(shù)據(jù)包進行綁定,便于在緩沖隊列中找到某個序列號對應(yīng)到的音視頻數(shù)據(jù);
播放器解碼時從緩沖區(qū)隊列中取到原始音視頻數(shù)據(jù)及對應(yīng)的序列號,將解碼后的數(shù)據(jù)和對應(yīng)的序列號進行綁定。這樣可以獲取到當前播放畫面的序列號。
終端接收新碼率視頻切片時,首先根據(jù)當前播放的視頻切片的第一序列號和當前下載的視頻切片的第二序列號的關(guān)系確定需下載的下一個視頻切片的第三序列號;然后從服務(wù)器下載序列號為第三序列號的視頻切片,并清除緩沖區(qū)中序列號大于等于第三序列號的視頻切片。
其中,第三序列號的確定過稱為:
第一序列號大于第二序列號時,確定第三序列號等于第一序列號加一;第一序列號小于第二序列號時,確定第三序列號等于第一序列號加二。
采用該方案,可以使切換過程不中斷當前播放,給用戶提供無縫平滑切換體驗。
本發(fā)明實施例所提供的hls視頻播放方法,第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取網(wǎng)絡(luò)帶寬狀態(tài),并根據(jù)網(wǎng)絡(luò)帶寬狀態(tài)向服務(wù)器發(fā)送調(diào)節(jié)碼率請求;接收服務(wù)器響應(yīng)調(diào)節(jié)碼率請求所反饋的新碼率視頻切片。該技術(shù)方案以多次采樣的方式獲取網(wǎng)絡(luò)帶寬狀態(tài)以根據(jù)網(wǎng)絡(luò)帶寬狀態(tài)進行自動碼率調(diào)節(jié),相比較現(xiàn)有技術(shù),在自動碼率調(diào)節(jié)時避免了網(wǎng)絡(luò)抖動導(dǎo)致的碼率頻繁切換。
如圖3所示,本發(fā)明實施例提供的hls視頻播放終端包括:
獲取單元301,用于通過第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取網(wǎng)絡(luò)帶寬狀態(tài);
第一發(fā)送單元302,用于根據(jù)網(wǎng)絡(luò)帶寬狀態(tài)向服務(wù)器發(fā)送調(diào)節(jié)碼率請求;
第一接收單元303,用于接收服務(wù)器響應(yīng)調(diào)節(jié)碼率請求所反饋的新碼率視頻切片。
其中,該新碼率視頻切片由服務(wù)器獲取第一時間間隔內(nèi)終端對視頻切片的平均下載速度,并根據(jù)平均下載速度確定新碼率后得到;其中,第一時間間隔小于第一統(tǒng)計周期。
在本發(fā)明實施例中,獲取單元301獲取的網(wǎng)絡(luò)帶寬狀態(tài)作為第一發(fā)送單元302向服務(wù)器發(fā)送調(diào)節(jié)碼率請求的依據(jù)。其中,在網(wǎng)絡(luò)帶寬充足時,發(fā)出向上調(diào)節(jié)碼率請求;在網(wǎng)絡(luò)帶寬不足時,發(fā)出向下調(diào)節(jié)碼率請求。
進行網(wǎng)絡(luò)帶寬獲取時,獲取單元301每隔第二時間間隔獲取緩沖區(qū)中視頻切片的數(shù)量,根據(jù)緩沖區(qū)中視頻切片的數(shù)量對緩沖區(qū)視頻時長進行采樣;其中,第一統(tǒng)計周期內(nèi)包含多個第二時間間隔。例如,取第二時間間隔為2s,即每隔2s終端對緩沖區(qū)中視頻切片時長采樣一次。
獲取單元301在獲取網(wǎng)絡(luò)帶寬狀態(tài)時,在第一統(tǒng)計周期內(nèi),每隔第二時間間隔采樣得到的緩沖區(qū)視頻時長遞增時,網(wǎng)絡(luò)帶寬狀態(tài)為網(wǎng)絡(luò)帶寬充足;在第一統(tǒng)計周期內(nèi),每隔第二時間間隔采樣得到的緩沖區(qū)視頻時長遞減時,網(wǎng)絡(luò)帶寬狀態(tài)為網(wǎng)絡(luò)帶寬不足。
在本發(fā)明實施例中,第二時間間隔和第一統(tǒng)計周期的大小可以設(shè)置,例如,可以取第二時間間隔為2s,第一統(tǒng)計周期為10s。此時,獲取單元301在10s內(nèi)每隔2s對緩沖區(qū)內(nèi)視頻切片時長進行采樣,如果緩沖區(qū)內(nèi)視頻切片時長遞增,則認為網(wǎng)絡(luò)帶寬充足;如果緩沖區(qū)內(nèi)視頻切片時長遞減,則認為網(wǎng)絡(luò)帶寬不足;緩沖區(qū)內(nèi)視頻切片時長不變或者波動時,不予判斷。。
采用以上方案,可以得到穩(wěn)定變換的網(wǎng)絡(luò)帶寬狀態(tài),以該網(wǎng)絡(luò)帶寬狀態(tài)為依據(jù)進行碼率切換時,可以減少網(wǎng)絡(luò)抖動造成的碼率頻繁切換的可能性。
服務(wù)器接收上述向上調(diào)節(jié)碼率請求或向下調(diào)節(jié)碼率請求時,獲取第一時間間隔內(nèi)終端對視頻切片的平均下載速度,并根據(jù)平均下載速度確定新碼率;其中,第一時間間隔小于第一統(tǒng)計周期。
其中,該第一時間間隔可以設(shè)定為8s。在8s的時間間隔內(nèi),服務(wù)器多次獲取終端對視頻切片的下載速度,并根據(jù)多次獲取的下載速度確定平均下載速度。服務(wù)器多次獲取終端對視頻切片的下載速度時,可以每隔固定的時間間隔獲取依次終端對視頻切片的下載速度。例如,服務(wù)器可以每隔2s獲取一次終端對視頻切片的下載速度,并根據(jù)8s內(nèi)獲取的5次下載速度確定8s內(nèi)的平均下載速度。
在進行hls視頻播放時,服務(wù)器將獲得的視頻數(shù)據(jù)進行編碼并壓縮成不同固定碼率的視頻文件,之后根據(jù)用戶請求將不同固定碼率的視頻流發(fā)送到不同的終端。當服務(wù)器接收到終端的調(diào)節(jié)碼率請求時,服務(wù)器獲取終端對視頻切片的平均下載速度,根據(jù)該平均下載速度確定相應(yīng)的固定碼率,并將該相應(yīng)的固定碼率確定為新碼率。
例如,該不同的固定碼率由低至高為第一碼率、第二碼率、第三碼率、第四碼率時,如果服務(wù)器在將第三碼率的視頻流發(fā)送發(fā)到終端時,接收到該終端的向上調(diào)節(jié)碼率請求,則判斷平均下載速度是否大于第四碼率值,并在平均下載速度大于等于第四碼率值時,將第四碼率確定為新碼率,在平均下載速度小于第四碼率值時,仍然將第三碼率確定為新碼率。
如果服務(wù)器在將第三碼率的視頻流發(fā)送發(fā)到終端時,接收到該終端的向下調(diào)節(jié)碼率請求,則判斷平均下載速度是否大于第二碼率值,并在平均下載速度大于等于第二碼率值時,將第二碼率確定為新碼率,在平均下載速度小于第二碼率值時,將第一碼率確定為新碼率。
第一接收單元303接收新碼率視頻切片時,首先根據(jù)當前播放的視頻切片的第一序列號和當前下載的視頻切片的第二序列號的關(guān)系確定需下載的下一個視頻切片的第三序列號;然后從服務(wù)器下載序列號為第三序列號的視頻切片,并清除緩沖區(qū)中序列號大于等于第三序列號的視頻切片。
其中,第三序列號的確定過稱為:第一序列號大于第二序列號時,確定第三序列號等于第一序列號加一;第一序列號小于第二序列號時,確定第三序列號等于第一序列號加二。采用該方案,可以使切換過程不中斷當前播放,給用戶提供無縫平滑切換體驗。
如圖4所示,本發(fā)明實施例提供的服務(wù)器側(cè)hls視頻播放服務(wù)器,包括:
第二接收單元401,用于接收調(diào)節(jié)碼率請求;調(diào)節(jié)碼率請求由終端通過第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取的網(wǎng)絡(luò)帶寬狀態(tài)后,根據(jù)網(wǎng)絡(luò)帶寬狀態(tài)發(fā)出。
確定單元402,用于獲取第一時間間隔內(nèi)終端對視頻切片的平均下載速度,并根據(jù)平均下載速度確定新碼率,得到新碼率視頻切片。
第二發(fā)送單元403,用于將新碼率視頻切片向終端發(fā)送。
第二接收單元401接收上述向上調(diào)節(jié)碼率請求或向下調(diào)節(jié)碼率請求后,確定單元402獲取第一時間間隔內(nèi)終端對視頻切片的平均下載速度,并根據(jù)平均下載速度確定新碼率;其中,第一時間間隔小于第一統(tǒng)計周期。
其中,該第一時間間隔可以設(shè)定為8s。在8s的時間間隔內(nèi),確定單元402多次獲取終端對視頻切片的下載速度,并根據(jù)多次獲取的下載速度確定平均下載速度。確定單元402多次獲取終端對視頻切片的下載速度時,可以每隔固定的時間間隔獲取依次終端對視頻切片的下載速度。例如,確定單元402可以每隔2s獲取一次終端對視頻切片的下載速度,并根據(jù)8s內(nèi)獲取的5次下載速度確定8s內(nèi)的平均下載速度。
在進行hls視頻播放時,服務(wù)器將獲得的視頻數(shù)據(jù)進行編碼并壓縮成不同固定碼率的視頻文件,之后根據(jù)用戶請求將不同固定碼率的視頻流發(fā)送到不同的終端。當服務(wù)器的第二接收單元401接收到終端的調(diào)節(jié)碼率請求時,確定單元402獲取終端對視頻切片的平均下載速度,根據(jù)該平均下載速度確定相應(yīng)的固定碼率,并將該相應(yīng)的固定碼率確定為新碼率。
例如,該不同的固定碼率由低至高為第一碼率、第二碼率、第三碼率、第四碼率時,如果服務(wù)器在將第三碼率的視頻流發(fā)送發(fā)到終端時,接收到該終端的向上調(diào)節(jié)碼率請求,確定單元402判斷平均下載速度是否大于第四碼率值,并在平均下載速度大于等于第四碼率值時,將第四碼率確定為新碼率,在平均下載速度小于第四碼率值時,仍然將第三碼率確定為新碼率。
如果服務(wù)器在將第三碼率的視頻流發(fā)送發(fā)到終端時,接收到該終端的向下調(diào)節(jié)碼率請求,確定單元402判斷平均下載速度是否大于第二碼率值,并在平均下載速度大于等于第二碼率值時,將第二碼率確定為新碼率,在平均下載速度小于第二碼率值時,將第一碼率確定為新碼率。
第二發(fā)送單元403將使用新碼率的新碼率視頻切片向終端發(fā)送。
為了實現(xiàn)無縫平緩的切換體驗,本發(fā)明實施例提供的服務(wù)器側(cè)hls視頻播放服務(wù)器還包括設(shè)定單元404,用于設(shè)定不同碼率的相同序列號的視頻切片內(nèi)容相同,即不同碼率的視頻切片序列號是對齊;設(shè)定單元還設(shè)定每個視頻切片均以關(guān)鍵幀開始。滿足上述兩個條件,終端播放器切換碼率后解碼器可以正常解碼,并且畫面平滑過渡,提供給用戶無縫切換的觀感體驗。
本發(fā)明實施例所提供的hls視頻播放終端及服務(wù)器,第一統(tǒng)計周期內(nèi)多次對緩沖區(qū)視頻時長進行采樣獲取網(wǎng)絡(luò)帶寬狀態(tài),并根據(jù)網(wǎng)絡(luò)帶寬狀態(tài)向服務(wù)器發(fā)送調(diào)節(jié)碼率請求;接收服務(wù)器響應(yīng)調(diào)節(jié)碼率請求所反饋的新碼率視頻切片。該技術(shù)方案以多次采樣的方式獲取網(wǎng)絡(luò)帶寬狀態(tài)以根據(jù)網(wǎng)絡(luò)帶寬狀態(tài)進行自動碼率調(diào)節(jié),相比較現(xiàn)有技術(shù),在自動碼率調(diào)節(jié)時避免了網(wǎng)絡(luò)抖動導(dǎo)致的碼率頻繁切換。
實際應(yīng)用中,獲取單元210、第一發(fā)送單元220、第一接收單元230、第二接收單元401、確定單元402、第二發(fā)送單元403以及設(shè)定單元404均可由位于hls視頻播放終端及服務(wù)器上的中央處理器(cpu,centralprocessingunit)、微處理器(mpu,microprocessorunit)、數(shù)字信號處理器(dsp,digitalsignalprocessor)、或現(xiàn)場可編程門陣列(fpga,fieldprogrammablegatearray)等實現(xiàn)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用硬件實施例、軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。