本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種針對(duì)服務(wù)器下發(fā)的視頻的播放方法及裝置。
背景技術(shù):
由于網(wǎng)絡(luò)存在隨機(jī)的端到端延時(shí)和抖動(dòng),服務(wù)器端將視頻數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)娇蛻舳说倪^程中,服務(wù)器端發(fā)送的視頻數(shù)據(jù)到達(dá)客戶端的延遲不盡相同,甚至?xí)霈F(xiàn)先發(fā)的視頻數(shù)據(jù)后到達(dá)客戶端的情況。另外,當(dāng)網(wǎng)絡(luò)處于高負(fù)載狀態(tài)時(shí),服務(wù)器端發(fā)送的視頻數(shù)據(jù)還會(huì)發(fā)生數(shù)據(jù)丟包的情況。這些情況都會(huì)導(dǎo)致客戶端視頻播放器無法正常解碼,從而造成視頻播放的卡頓、跳躍和抖動(dòng)。
客戶端緩沖技術(shù),即客戶端在視頻播放前預(yù)先接收一部分視頻數(shù)據(jù)并存入緩沖區(qū),可以平滑網(wǎng)絡(luò)延時(shí)、抖動(dòng)及數(shù)據(jù)丟包對(duì)視頻播放質(zhì)量的影響。但是緩沖區(qū)數(shù)據(jù)量的大小是隨著網(wǎng)絡(luò)狀態(tài)的隨機(jī)變化而變化的,較小的緩沖數(shù)據(jù)量在較差的網(wǎng)絡(luò)狀態(tài)下可能很快就會(huì)被耗盡,發(fā)生緩沖區(qū)下溢,導(dǎo)致客戶端視頻播放器沒有數(shù)據(jù)解碼,造成播放中斷,直到視頻播放器接收到新的視頻數(shù)據(jù)后才能繼續(xù)播放,較大的緩沖數(shù)據(jù)量雖然一定程度上能保證視頻的連續(xù)播放,但會(huì)導(dǎo)致播放過度延遲,失去視頻節(jié)目的實(shí)時(shí)性,且需要較大容量的緩沖區(qū),增加客戶端設(shè)備(如嵌入式智能電視終端)的內(nèi)存資源消耗。
因此,如何控制緩沖區(qū)中緩沖數(shù)據(jù)的占用水平,以保證視頻數(shù)據(jù)傳輸?shù)耐揭约耙曨l數(shù)據(jù)播放的實(shí)時(shí)性,是需要解決的關(guān)鍵問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種針對(duì)服務(wù)器下發(fā)的視頻的播放方法及裝置,以提高視頻播放質(zhì)量。
本發(fā)明實(shí)施例提供的具體技術(shù)方案如下:
第一方面,本發(fā)明實(shí)施例提供了一種針對(duì)服務(wù)器下發(fā)的視頻的播放方法,包括:
獲取用于存儲(chǔ)視頻幀的緩沖區(qū)的上限閾值和下限閾值,所述上限閾值和所述下限閾值至少根據(jù)網(wǎng)絡(luò)的信道速率確定;
若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量小于所述下限閾值,則減小視頻幀的播放速率,其中,若相鄰時(shí)刻所述緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均小于所述下限閾值,則所述相鄰時(shí)刻視頻幀播放速率的變化率與所述緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比,所述時(shí)刻為接收到視頻幀的時(shí)刻;
若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于所述上限閾值,則增大視頻幀的播放速率,其中,若相鄰時(shí)刻所述緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均大于所述上限閾值,則所述相鄰時(shí)刻視頻幀播放速率的變化率與所述緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比。
第二方面,本發(fā)明實(shí)施例提供了一種用于播放服務(wù)器下發(fā)的視頻的裝置,包括:
第一處理模塊,用于獲取用于存儲(chǔ)視頻幀的緩沖區(qū)的上限閾值和下限閾值,所述上限閾值和所述下限閾值至少根據(jù)網(wǎng)絡(luò)的信道速率確定;
第二處理模塊,用于若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量小于所述下限閾值,則減小視頻幀的播放速率,其中,若相鄰時(shí)刻所述緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均小于所述下限閾值,則所述相鄰時(shí)刻視頻幀播放速率的變化率與所述緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比,所述時(shí)刻為接收到視頻幀的時(shí)刻;若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于所述上限閾值,則增大視頻幀的播放速率,其中,若相鄰時(shí)刻所述緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均大于所述上限閾值,則所述相鄰時(shí)刻視頻幀播放速率的變化率與所述緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比。
基于上述技術(shù)方案,本發(fā)明實(shí)施例中,客戶端視頻播放器獲取用于存儲(chǔ)服務(wù)器通過網(wǎng)絡(luò)發(fā)送的視頻幀的緩沖區(qū)的上限閾值和下限閾值,若該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量小于該下限閾值,則減小視頻幀的播放速率,若該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于該上限閾值,則增大視頻幀的播放速率,其中,該上限閾值和該下限閾值至少根據(jù)網(wǎng)絡(luò)的信道速率確定,使得緩沖區(qū)中緩沖數(shù)據(jù)量能夠維持在一定水平,避免網(wǎng)絡(luò)狀態(tài)變化導(dǎo)致緩沖區(qū)下溢以及緩沖區(qū)上溢情況的發(fā)生,提高視頻的播放質(zhì)量和用戶的觀看體驗(yàn)。并且該緩沖區(qū)的上限閾值和下限閾值與網(wǎng)絡(luò)的信道速率相關(guān),即當(dāng)網(wǎng)絡(luò)的信道速率發(fā)生變化時(shí),緩沖區(qū)的上限閾值和下限閾值也會(huì)變化,緩沖區(qū)的上限閾值和下限閾值的設(shè)置更合理,提高了視頻幀播放速率調(diào)整的準(zhǔn)確性。另外,若相鄰時(shí)刻該緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均小于該下限閾值,或者相鄰時(shí)刻該緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均大于該上限閾值,則相鄰時(shí)刻視頻幀播放速率的變化率與該緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比,使得客戶端視頻播放器在緩沖區(qū)中緩沖數(shù)據(jù)量較小或較大時(shí),快速調(diào)整視頻幀的播放速率,減小緩沖區(qū)下溢以及緩沖區(qū)上溢發(fā)生的概率,進(jìn)一步提高視頻的播放質(zhì)量。
附圖說明
圖1為現(xiàn)有技術(shù)中視頻播放速率反饋控制系統(tǒng);
圖2為現(xiàn)有技術(shù)中客戶端播放緩沖模型;
圖3為現(xiàn)有技術(shù)中雙門限緩沖區(qū)播放模型;
圖4為本發(fā)明實(shí)施例提供的針對(duì)服務(wù)器下發(fā)的視頻的播放方法的流程示意圖;
圖5為本發(fā)明實(shí)施例中視頻幀的播放速率與緩沖區(qū)中緩沖數(shù)據(jù)的變化關(guān)系;
圖6為本發(fā)明實(shí)施例提供的用于播放服務(wù)端下發(fā)的視頻的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述。
現(xiàn)有技術(shù)主要通過以下兩種方式保證客戶端中視頻數(shù)據(jù)的播放質(zhì)量:
方式一、服務(wù)器端根據(jù)客戶端反饋的當(dāng)前緩沖區(qū)中緩沖數(shù)據(jù)量的大小,控制視頻數(shù)據(jù)的發(fā)送速率,以適應(yīng)客戶端中視頻播放器的播放速率,從而保證視頻數(shù)據(jù)的播放質(zhì)量,其中,視頻播放速率反饋控制系統(tǒng)如圖1所示??蛻舳瞬捎眯帕顚⒉シ牌骶彌_區(qū)中當(dāng)前緩沖數(shù)據(jù)量的大小通過網(wǎng)絡(luò)反饋到服務(wù)端,服務(wù)端的速率控制器根據(jù)設(shè)定的控制策略計(jì)算下一周期內(nèi)視頻數(shù)據(jù)的發(fā)送速率,以使緩沖區(qū)中緩沖數(shù)據(jù)量的大小穩(wěn)定在合理的區(qū)間內(nèi)。
但是,當(dāng)網(wǎng)絡(luò)帶寬波動(dòng)較大時(shí),采用上述方式控制視頻數(shù)據(jù)的發(fā)送速率,客戶端將會(huì)產(chǎn)生大量信令,增加服務(wù)器端的負(fù)擔(dān),影響視頻的播放質(zhì)量和效率。
方式二、客戶端采用自適應(yīng)媒體播放(adaptivemediaplayout,amp)算法,根據(jù)網(wǎng)絡(luò)信道的狀況或客戶端緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量調(diào)節(jié)視頻的播放速率,以保證視頻的播放質(zhì)量,其中,客戶端播放緩沖模型如圖2所示,n為緩沖區(qū)總?cè)萘?,lc為緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量,lt為剩余緩沖區(qū)的大小,客戶端會(huì)在播放視頻前進(jìn)行預(yù)緩沖,預(yù)緩沖結(jié)束后客戶端播放器以速率μ(即視頻數(shù)據(jù)離開播放器緩沖區(qū)的速率)播放接收到的視頻數(shù)據(jù),同時(shí)服務(wù)器端發(fā)送的視頻數(shù)據(jù)以速率a到達(dá)播放器緩沖區(qū)。
客戶端中視頻播放器通常采用如圖3所示的雙門限緩沖區(qū)播放模型調(diào)節(jié)視頻的播放速率,其中,n為客戶端播放器緩沖區(qū)總?cè)萘?,l為緩沖區(qū)的下限閾值,h為緩沖區(qū)的上限閾值。緩沖區(qū)中緩沖數(shù)據(jù)量小于下限閾值以及緩沖數(shù)據(jù)量大于上限閾值的區(qū)域稱為“警報(bào)區(qū)”,緩沖數(shù)據(jù)量位于這兩個(gè)區(qū)域內(nèi)時(shí)表示可能發(fā)生緩沖區(qū)下溢或緩沖區(qū)上溢事件,當(dāng)緩沖區(qū)中緩沖數(shù)據(jù)量小于下限閾值時(shí),速度控制器減小視頻數(shù)據(jù)的播放速率,當(dāng)緩沖區(qū)中緩沖數(shù)據(jù)量大于上限閾值時(shí),速度控制器增大視頻數(shù)據(jù)的播放速率;緩沖區(qū)中緩沖數(shù)據(jù)量大于等于下限閾值且小于等于上限閾值的區(qū)域稱為“安全區(qū)”,此時(shí)速度控制器將視頻數(shù)據(jù)的播放速率設(shè)置為接收到的視頻數(shù)據(jù)的編碼速率。
目前,自適應(yīng)媒體播放算法多數(shù)是基于圖3所示的模型,常見的自適應(yīng)媒體播放算法有以下兩種:
一、固定系數(shù)自適應(yīng)播放算法(amp-mean),當(dāng)緩沖區(qū)中緩沖數(shù)據(jù)量小于下限閾值時(shí),客戶端中視頻播放器的播放速率為第一設(shè)定值,緩沖區(qū)中緩沖數(shù)據(jù)量大于等于下限閾值且小于等于上限閾值時(shí),客戶端中視頻播放器的播放速率為第二設(shè)定值,當(dāng)緩沖區(qū)中緩沖數(shù)據(jù)量大于上限閾值時(shí),客戶端中視頻播放器的播放速率為第三設(shè)定值,其中,第一設(shè)定值小于第二設(shè)定值,第二設(shè)定值小于第三設(shè)定值。該算法雖然能夠在一定程度上平滑網(wǎng)絡(luò)延時(shí)、抖動(dòng)及數(shù)據(jù)丟包對(duì)視頻播放質(zhì)量的影響,但當(dāng)緩沖區(qū)中緩沖數(shù)據(jù)量在安全區(qū)與警報(bào)區(qū)之間切換時(shí),視頻播放器的播放速率發(fā)生突然變化,影響用戶的觀看體驗(yàn)。
二、漸進(jìn)變速自適應(yīng)播放算法,當(dāng)緩沖區(qū)中緩沖數(shù)據(jù)量小于下限閾值時(shí),客戶端中視頻播放器的播放速率根據(jù)緩沖區(qū)中緩沖數(shù)據(jù)量線性減小,緩沖區(qū)中緩沖數(shù)據(jù)量大于等于下限閾值且小于等于上限閾值時(shí),客戶端中播放器的播放速率為接收到的視頻數(shù)據(jù)的編碼速率,當(dāng)緩沖區(qū)的緩沖數(shù)據(jù)量大于上限閾值時(shí),客戶端中播放器的播放速率根據(jù)緩沖區(qū)中緩沖數(shù)據(jù)量線性增大。該算法中當(dāng)緩沖區(qū)中緩沖數(shù)據(jù)量位于警報(bào)區(qū)時(shí),客戶端播放器的播放速率根據(jù)緩沖區(qū)中緩沖數(shù)據(jù)量大小線性變化,因此當(dāng)緩沖區(qū)的緩沖數(shù)據(jù)量很小或很大時(shí),客戶端播放器的播放速率可能來不及變化,就已經(jīng)發(fā)生緩沖區(qū)下溢或者緩沖區(qū)上溢。
本發(fā)明實(shí)施例提供的視頻播放方法由客戶端中視頻播放器執(zhí)行,其中,客戶端為能夠通過網(wǎng)絡(luò)從服務(wù)器獲取視頻數(shù)據(jù)的終端設(shè)備,例如手機(jī)、智能電視、個(gè)人計(jì)算機(jī)、平板電腦等??蛻舳酥幸曨l播放器的初始播放速率為接收到的視頻幀的編碼速率,用于存儲(chǔ)接收到的視頻幀的緩沖區(qū)的總?cè)萘?、緩沖閾值,以及上限閾值和下限閾值可以用視頻幀的個(gè)數(shù)或者視頻幀所占內(nèi)存的大小表征。
圖4示例性地示出了本發(fā)明實(shí)施例提供的針對(duì)服務(wù)器下發(fā)的視頻的播放方法的流程,具體包括以下步驟:
步驟401:獲取用于存儲(chǔ)視頻幀的緩沖區(qū)的上限閾值和下限閾值,其中,該上限閾值和該下限閾值至少根據(jù)網(wǎng)絡(luò)的信道速率確定。
其中,視頻幀是服務(wù)器通過網(wǎng)絡(luò)發(fā)送給客戶端。
實(shí)施中,緩沖區(qū)的上限閾值和下限閾值與網(wǎng)絡(luò)的信道速率相關(guān),當(dāng)網(wǎng)絡(luò)的信道速率發(fā)生變化時(shí),緩沖區(qū)的上限閾值和下限閾值也會(huì)發(fā)生變化,相比于現(xiàn)有技術(shù)中緩沖區(qū)的上限閾值和下限閾值采用固定值,緩沖區(qū)的上限閾值和下限閾值的設(shè)置更合理。一個(gè)具體的實(shí)施方式中,獲取用于存儲(chǔ)視頻幀的緩沖區(qū)的上限閾值和下限閾值,包括以下步驟:根據(jù)網(wǎng)絡(luò)的平均信道速率、緩沖時(shí)長以及設(shè)定時(shí)長內(nèi)視頻幀的平均大小,確定該緩沖區(qū)的緩沖閾值,其中,該緩沖閾值小于該緩沖區(qū)的總?cè)萘?,該設(shè)定時(shí)長的終止時(shí)刻為獲取用該緩沖區(qū)的上限閾值和下限閾值的時(shí)刻;根據(jù)所確定的緩沖閾值和預(yù)設(shè)的下限因子確定緩沖區(qū)的下限閾值,以及根據(jù)所確定的緩沖閾值和預(yù)設(shè)的上限因子,確定緩沖區(qū)的上限閾值,其中,該下限因子和該上限因子可以根據(jù)經(jīng)驗(yàn)值確定。
具體地,可以根據(jù)公式(1)確定緩沖區(qū)的緩沖閾值:
其中,nadopt為緩沖閾值,rchannel為網(wǎng)絡(luò)的平均信道速率,tpre-time為緩沖時(shí)長,fframesize為設(shè)定時(shí)長內(nèi)接收到的視頻幀的平均大小。此時(shí),根據(jù)公式(2)確定緩沖區(qū)的下限閾值:
l=nadopt×λl(2)
其中,l為緩沖區(qū)的下限閾值,λl為預(yù)設(shè)的下限因子,0<λl<1;
根據(jù)公式(3)確定緩沖區(qū)的上限閾值:
h=nadopt×λh(3)
其中,h為緩沖區(qū)的上限閾值,λh為所述預(yù)設(shè)的上限因子,
一個(gè)具體的實(shí)施例中,設(shè)定時(shí)長內(nèi)接收到的視頻幀的平均大小fframesize根據(jù)接設(shè)定時(shí)長內(nèi)收到的視頻幀個(gè)數(shù)以及設(shè)定時(shí)長內(nèi)接收到的視頻碼流包中所有視頻幀的大小確定,其中,每個(gè)視頻幀的大小根據(jù)該視頻幀中包括的切片(slice)大小確定。
實(shí)施中,若網(wǎng)絡(luò)信道速率沒有發(fā)生變化,客戶端視頻播放器可以獲取之前確定出的緩沖區(qū)的上限閾值和下限閾值(網(wǎng)絡(luò)信道速率相同時(shí)的上限閾值和下限閾值),根據(jù)獲取到的上限閾值和下限閾值,調(diào)整視頻幀的播放速率,若網(wǎng)絡(luò)信道的信道速率發(fā)生變化,服務(wù)器通知客戶端網(wǎng)絡(luò)當(dāng)前的信道速率,客戶端視頻播放器重新根據(jù)公式(1)-(3)確定緩沖區(qū)的上限閾值和下限閾值,根據(jù)重新確定的上限閾值和下限閾值,調(diào)整視頻幀的播放速率。
步驟402:若緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量小于該下限閾值時(shí),則減小視頻幀的播放速率,其中,若相鄰時(shí)刻該緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均小于該下限閾值,則相鄰時(shí)刻視頻幀播放速率的變化率與所述緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比,該時(shí)刻為接收到視頻幀的時(shí)刻;若該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于該上限閾值,則增大視頻幀的播放速率,其中,若相鄰時(shí)刻該緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均大于該上限閾值,則相鄰時(shí)刻視頻幀播放速率的變化率與該緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比。
實(shí)施中,若相鄰時(shí)刻該緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均小于該下限閾值,則相鄰時(shí)刻視頻幀播放速率的變化率與所述緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比,使得緩沖區(qū)中緩沖數(shù)據(jù)量較小時(shí),客戶端中視頻播放器能夠快速減小視頻幀的播放速率,盡量避免發(fā)生緩沖區(qū)下溢,進(jìn)而減小網(wǎng)絡(luò)延時(shí)、抖動(dòng)及數(shù)據(jù)丟包等對(duì)視頻播放質(zhì)量的影響。具體地,當(dāng)該緩沖區(qū)中緩沖數(shù)據(jù)量小于該下限閾值時(shí),視頻幀的播放速率與該緩沖區(qū)中緩沖數(shù)據(jù)量的大小為二次函數(shù)關(guān)系。
具體地,若該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量小于該下限閾值,則根據(jù)公式(4)減小視頻幀的播放速率:
其中,rl為減小后的播放速率,n為該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量,r1為該緩沖區(qū)中緩沖數(shù)據(jù)量小于所述下限閾值時(shí),視頻幀的播放速率的設(shè)定偏差,μ0為接收到的視頻幀的編碼速率,l為該下限閾值,r為該緩沖區(qū)中緩沖數(shù)據(jù)量大于等于該下限閾值,且小于等于該上限閾值時(shí),視頻幀的播放速率的設(shè)定偏差,r>r1。
研究表明,當(dāng)視頻幀的播放速率的變化范圍在25%以內(nèi),基本不會(huì)影響用戶對(duì)所播放的視頻的觀看體驗(yàn),因此,為了保證視頻播放的穩(wěn)定性以及用戶的觀看體驗(yàn),視頻幀的播放速率的變化范圍不超過25%,即0≤r≤0.25。
實(shí)施中,若相鄰時(shí)刻該緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均大于該上限閾值,則相鄰時(shí)刻視頻幀播放速率的變化率與該緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比,使得緩沖區(qū)中緩沖數(shù)據(jù)量較大時(shí),客戶端中視頻播放器能夠快速增大視頻幀的播放速率,盡量避免發(fā)生緩沖區(qū)上溢,進(jìn)而減小網(wǎng)絡(luò)抖動(dòng)及數(shù)據(jù)丟包等對(duì)視頻播放質(zhì)量的影響。具體地,當(dāng)該緩沖區(qū)中緩沖數(shù)據(jù)量大于該下限閾值時(shí),視頻幀的播放速率與該緩沖區(qū)中緩沖數(shù)據(jù)量的大小為二次函數(shù)關(guān)系。
具體地,當(dāng)該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于所述上限閾值時(shí),根據(jù)公式(5)增大視頻幀的播放速率:
其中,rh為增大后的播放速率,n為該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量,r2該緩沖區(qū)中緩沖數(shù)據(jù)量大于該上限閾值時(shí)視頻幀播放速率的設(shè)定偏差,μ0為接收到的視頻幀的編碼速率,n為該緩沖區(qū)的總?cè)萘浚琱為該上限閾值,r該緩沖區(qū)中緩沖數(shù)據(jù)量大于等于該下限閾值,且小于等于該上限閾值時(shí),視頻幀的播放速率的設(shè)定偏差,r2>r。
實(shí)施中,獲取用于存儲(chǔ)該視頻幀的緩沖區(qū)的上限閾值和下限閾值之后,若該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于等于該下限閾值,且小于等于該上限閾值,則根據(jù)當(dāng)前時(shí)刻視頻幀到達(dá)緩沖區(qū)的速率和接收到的視頻幀的編碼速率,確定視頻幀的播放速率,維持緩沖區(qū)中緩沖數(shù)據(jù)量的穩(wěn)定。
其中,當(dāng)前時(shí)刻視頻幀到達(dá)緩沖區(qū)的速率是根據(jù)上一個(gè)時(shí)刻視頻幀到達(dá)緩沖區(qū)的速率的速率估計(jì)得到的,其中,第一個(gè)視頻幀到達(dá)緩沖區(qū)的速率為該視頻幀的編碼速率。具體地,可以根據(jù)公式(6)估計(jì)當(dāng)前時(shí)刻視頻幀到達(dá)所述緩沖區(qū)的速率:
其中,rf(i)為當(dāng)前時(shí)刻視頻幀到達(dá)緩沖區(qū)的速率,rf(i-δ)上一個(gè)時(shí)刻視頻幀達(dá)到緩沖區(qū)的速率,i表示當(dāng)前時(shí)刻,δ為相鄰時(shí)刻的時(shí)間差,nadopt為所述緩沖區(qū)的緩沖閾值,f(i)為時(shí)刻i-δ到時(shí)刻i接收到的視頻幀的個(gè)數(shù),f(i-δ)為時(shí)刻i-2δ時(shí)刻到i-δ接收到的視頻幀的個(gè)數(shù),c1、c2為常數(shù)。其中,c1、c2根據(jù)根據(jù)經(jīng)驗(yàn)值確定,c1的取值可以為15,c2的取值可以為16。
具體地,若該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于等于該下限閾值,且小于等于該上限閾值,根據(jù)公式(7)確定視頻幀的播放速率:
其中,rs為所確定的視頻幀的播放速率,r為該緩沖區(qū)中緩沖數(shù)據(jù)量大于等于該下限閾值,且小于等于該上限閾值時(shí),視頻幀的播放速率的設(shè)定偏差,rf為當(dāng)前時(shí)刻視頻幀到達(dá)緩沖區(qū)的速率,i表示當(dāng)前時(shí)刻,μ0為該視頻幀的編碼速率。
綜上所述,視頻幀的播放速率的調(diào)整函數(shù)如下所示:
其中,μ(i,n)為緩沖區(qū)中緩沖數(shù)據(jù)量為n時(shí)視頻幀的播放速率,μ(i,n)與n的變化關(guān)系如圖5所示。
實(shí)施中,為了避免視頻幀播放速率的突然變化導(dǎo)致視頻畫面的抖動(dòng),進(jìn)一步改善用戶的觀看體驗(yàn),相鄰視頻幀的播放速率的差值小于設(shè)定值,該設(shè)定值根據(jù)經(jīng)驗(yàn)值確定,例如可以是1fps。具體地,可以根據(jù)公式(9)控制相鄰視頻幀的播放速率:
其中,n用視頻幀個(gè)數(shù)表征,r3為設(shè)定值。
基于上述技術(shù)方案,本發(fā)明實(shí)施例中,客戶端視頻播放器獲取用于存儲(chǔ)服務(wù)器通過網(wǎng)絡(luò)發(fā)送的視頻幀的緩沖區(qū)的上限閾值和下限閾值,若該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量小于該下限閾值,則減小視頻幀的播放速率,若該緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于該上限閾值,則增大視頻幀的播放速率,其中,該上限閾值和該下限閾值至少根據(jù)網(wǎng)絡(luò)的信道速率確定,使得緩沖區(qū)中緩沖數(shù)據(jù)量能夠維持在一定水平,避免網(wǎng)絡(luò)狀態(tài)變化導(dǎo)致緩沖區(qū)下溢以及緩沖區(qū)上溢情況的發(fā)生,提高視頻的播放質(zhì)量和用戶的觀看體驗(yàn)。并且該緩沖區(qū)的上限閾值和下限閾值與網(wǎng)絡(luò)的信道速率相關(guān),即當(dāng)網(wǎng)絡(luò)的信道速率發(fā)生變化時(shí),緩沖區(qū)的上限閾值和下限閾值也會(huì)變化,緩沖區(qū)的上限閾值和下限閾值的設(shè)置更合理,提高了視頻幀播放速率調(diào)整的準(zhǔn)確性。另外,若相鄰時(shí)刻該緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均小于該下限閾值,或者相鄰時(shí)刻該緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均大于該上限閾值,則相鄰時(shí)刻視頻幀播放速率的變化率與該緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比,使得客戶端視頻播放器在緩沖區(qū)中緩沖數(shù)據(jù)量較小或較大時(shí),快速調(diào)整視頻幀的播放速率,減小緩沖區(qū)下溢以及緩沖區(qū)上溢發(fā)生的概率,進(jìn)一步提高視頻的播放質(zhì)量。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供了一種用于播放服務(wù)器下發(fā)的視頻的裝置,該裝置的具體實(shí)施可參見方法實(shí)施例部分的描述,重復(fù)之處不再贅述,如圖6所示,該裝置主要包括:
第一處理模塊601,用于獲取用于存儲(chǔ)視頻幀的緩沖區(qū)的上限閾值和下限閾值,所述上限閾值和所述下限閾值至少根據(jù)網(wǎng)絡(luò)的信道速率確定;
第二處理模塊602,用于若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量小于所述下限閾值,則減小視頻幀的播放速率,其中,若相鄰時(shí)刻所述緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均小于所述下限閾值,則所述相鄰時(shí)刻視頻幀播放速率的變化率與所述緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比,所述時(shí)刻為接收到視頻幀的時(shí)刻;若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于所述上限閾值,則增大視頻幀的播放速率,其中,若相鄰時(shí)刻所述緩沖區(qū)中緩沖數(shù)據(jù)量不相等,且均大于所述上限閾值,則所述相鄰時(shí)刻視頻幀播放速率的變化率與所述緩沖區(qū)中緩沖數(shù)據(jù)量的大小成正比。
可選地,所述第一處理模塊601具體用于:根據(jù)所述網(wǎng)絡(luò)的平均信道速率、緩沖時(shí)長以及設(shè)定時(shí)長內(nèi)視頻幀的平均大小,確定所述緩沖區(qū)的緩沖閾值,其中,所述緩沖閾值小于所述緩沖區(qū)的總?cè)萘浚鲈O(shè)定時(shí)長的終止時(shí)刻為獲取所述上限閾值和所述下限閾值的時(shí)刻;根據(jù)所述緩沖閾值和預(yù)設(shè)的下限因子確定所述下限閾值,以及根據(jù)所述緩沖閾值和預(yù)設(shè)的上限因子,確定所述上限閾值。
可選地,所述第一處理模塊601具體用于:根據(jù)以下公式確定所述緩沖區(qū)的緩沖閾值:
其中,nadopt為所述緩沖閾值,rchannel為所述網(wǎng)絡(luò)的平均信道速率,tpre-time為所述緩沖時(shí)長,fframesize為所述設(shè)定時(shí)長內(nèi)視頻幀的平均大?。?/p>
根據(jù)以下公式確定所述緩沖區(qū)的下限閾值:
l=nadopt×λl
其中,l為所述緩沖區(qū)的下限閾值,λl為所述預(yù)設(shè)的下限因子,0<λl<1;
根據(jù)以下公式確定所述緩沖區(qū)的上限閾值:
h=nadopt×λh
其中,h為所述緩沖區(qū)的上限閾值,λh為所述預(yù)設(shè)的上限因子,
可選地,所述第二處理模塊602還用于:若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于等于所述下限閾值,且小于等于所述上限閾值,則根據(jù)當(dāng)前時(shí)刻視頻幀到達(dá)所述緩沖區(qū)的速率和所述視頻幀的編碼速率,確定視頻幀的播放速率。
可選地,所述當(dāng)前時(shí)刻視頻幀到達(dá)所述緩沖區(qū)的速率是根據(jù)上一個(gè)時(shí)刻視頻幀到達(dá)所述緩沖區(qū)的速率估計(jì)得到的。
可選地,所述第二處理模塊602具體用于:根據(jù)以下公式估計(jì)當(dāng)前時(shí)刻視頻幀到達(dá)所述緩沖區(qū)的速率:
其中,rf(i)為當(dāng)前時(shí)刻視頻幀到達(dá)所述緩沖區(qū)的速率,rf(i-δ)上一個(gè)時(shí)刻視頻幀到達(dá)緩沖區(qū)的速率,i表示當(dāng)前時(shí)刻,δ為相鄰時(shí)刻的時(shí)間差,nadopt為所述緩沖區(qū)的緩沖閾值,f(i)為時(shí)刻i-δ到時(shí)刻i接收到的視頻幀的個(gè)數(shù),f(i-δ)為時(shí)刻i-2δ時(shí)刻到i-δ接收到的視頻幀的個(gè)數(shù),c1、c2為常數(shù)。
可選地,所述第二處理模塊602具體用于:若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于等于所述下限閾值,且小于等于所述上限閾值,根據(jù)以下公式確定視頻幀的播放速率:
其中,rs為所確定的視頻幀的播放速率,r為所述緩沖區(qū)中緩沖數(shù)據(jù)量大于等于所述下限閾值,且小于等于所述上限閾值時(shí),視頻幀的播放速率的設(shè)定偏差,rf為當(dāng)前時(shí)刻視頻幀到達(dá)所述緩沖區(qū)的速率,i表示當(dāng)前時(shí)刻,μ0為所述視頻幀的編碼速率。
可選地,相鄰視頻幀的播放速率的差值小于預(yù)設(shè)值。
可選地,所述第二處理模塊602具體用于:若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量小于所述下限閾值,則根據(jù)以下公式減小視頻幀的播放速率:
其中,rl為減小后的播放速率,n為所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量,r1為所述緩沖區(qū)中緩沖數(shù)據(jù)量小于所述下限閾值時(shí),視頻幀的播放速率的設(shè)定偏差,μ0為所述視頻幀的編碼速率,l為所述下限閾值,r為所述緩沖區(qū)中緩沖數(shù)據(jù)量大于等于所述下限閾值,且小于等于所述上限閾值時(shí),視頻幀的播放速率的設(shè)定偏差,r>r1。
可選地,所述第二處理模塊602具體用于:若所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量大于所述上限閾值,則根據(jù)以下公式增大視頻幀的播放速率:
其中,rh為增大后的播放速率,n為所述緩沖區(qū)中當(dāng)前緩沖數(shù)據(jù)量,r2所述緩沖區(qū)中緩沖數(shù)據(jù)量大于所述上限閾值時(shí)視頻幀播放速率的設(shè)定偏差,μ0為所述視頻幀的編碼速率,n為所述緩沖區(qū)的總?cè)萘?,h為所述上限閾值,r所述緩沖區(qū)中緩沖數(shù)據(jù)量大于等于所述下限閾值,且小于等于所述上限閾值時(shí),視頻幀的播放速率的設(shè)定偏差,r2>r。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。