專利名稱:一種流媒體傳輸系統(tǒng)中的速率控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)多媒體數(shù)據(jù)傳輸與播放領(lǐng)域中一種在網(wǎng)絡(luò)上有效傳輸視音頻數(shù)據(jù)流的技術(shù),特別是公開一種流媒體傳輸系統(tǒng)中的速率控制方法,有效利用網(wǎng)絡(luò)帶寬,在流媒體視頻點播系統(tǒng)上對視音頻數(shù)據(jù)流的碼率控制技術(shù)。
背景技術(shù):
對于現(xiàn)在的網(wǎng)絡(luò),基于TCP/IP的數(shù)據(jù)傳輸都是突發(fā)的、間歇的、貪婪的、盡力的。這種方式的數(shù)據(jù)傳輸就象沒有紅綠燈的交通系統(tǒng),很容易交通堵塞。造成網(wǎng)絡(luò)阻塞,并導(dǎo)致數(shù)據(jù)包的大量重發(fā),大大降低了通道帶寬的利用率。
IP分組網(wǎng)中的實時多媒體業(yè)務(wù)在網(wǎng)絡(luò)中傳輸時,由于在每一個網(wǎng)絡(luò)節(jié)點中都要進行路由選擇,而且傳輸包要進行排隊導(dǎo)致包傳輸?shù)臅r延,延時超過一定時間后會采取丟包處理。這些都對視頻處理的質(zhì)量造成影響。
網(wǎng)絡(luò)技術(shù)自身的發(fā)展很難為流媒體應(yīng)用提供絕對的服務(wù)質(zhì)量保證。目前的Internet只提供Best-effort的服務(wù),沒有質(zhì)量保證。因此,需要通過應(yīng)用層的機制來實現(xiàn)質(zhì)量的控制?,F(xiàn)在在IP網(wǎng)上傳輸流媒體數(shù)據(jù)時,為保證服務(wù)質(zhì)量,一般采用擁塞控制和差錯控制。擁塞控制主要是通過調(diào)整視頻編碼的速度使其適應(yīng)網(wǎng)絡(luò)的帶寬。因為網(wǎng)絡(luò)的帶寬是時變而非固定的,而且是一個未知量,所以不能直接設(shè)定一個編碼速率來適應(yīng)網(wǎng)絡(luò)狀態(tài)。通常采用兩個方法實時調(diào)節(jié)一是窗口法通過逐漸增大傳送的碼率,當(dāng)發(fā)現(xiàn)網(wǎng)絡(luò)上出現(xiàn)包的碰撞(檢測到了丟包)時,再減小發(fā)送的碼率;另外是基于速率的方法先估計網(wǎng)絡(luò)的帶寬資源,再調(diào)整編碼的目標(biāo)速率來適應(yīng)網(wǎng)絡(luò)的狀態(tài)。基于窗口的解決方案會引入類似TCP的重傳,這是不能忍受的。
RealNetworks的真實流(Sure Streaming)和Microsoft的智能流(Intelligent Streaming)解決方案都是基于收端的速率控制方法。在與用戶建立連接的初始,檢測用戶的網(wǎng)絡(luò)帶寬資源狀況以及連接數(shù)目的多少,以此來判斷,發(fā)送文件大小最適合的流媒體文件。而在用戶觀看流媒體文件的過程中,網(wǎng)絡(luò)狀況和帶寬資源其實一直在發(fā)生不可預(yù)測的變化,對于服務(wù)器,可能不斷有新的用戶連接上來,并發(fā)數(shù)不斷在變化,收端根據(jù)網(wǎng)絡(luò)狀態(tài)增加或減少信道,主要用于分級的圖象編碼。在這種控制方法中,編碼部分本身并不作調(diào)整,只是在發(fā)送層參與調(diào)整。不過每一次發(fā)送的碼率是以分級碼流的級為單位進行調(diào)整,而不是連續(xù)的。降低了帶寬的有效利用。結(jié)果引起在用戶端的播放質(zhì)量下降,通常還是會時常出現(xiàn)圖像卡殼、抖動和停停放放的情況,服務(wù)質(zhì)量仍然無法保證。
發(fā)明內(nèi)容
本發(fā)明的目的是TCP/IP數(shù)據(jù)傳輸網(wǎng)在用戶日益增加的情況下,保證服務(wù)質(zhì)量,不發(fā)生擁塞現(xiàn)象,使用戶享受到穩(wěn)定的視頻服務(wù)。
本發(fā)明是這樣實現(xiàn)的采用本發(fā)明的流媒體傳輸系統(tǒng)的速率控制方法是基于收端的,但信道是固定的,而不是動態(tài)增加或減少的;該信道的速率是動態(tài)變化的,而且是連續(xù)的,不是分級的。該信道的速率是由流媒體文件本身的編碼速率決定的,同時受網(wǎng)絡(luò)丟包率及接收端的緩存占有率影響的。流媒體內(nèi)容在傳輸過程中質(zhì)量是穩(wěn)定的,不降級的,不跳幀的,這樣可以保證用戶端的播放質(zhì)量的穩(wěn)定。對于網(wǎng)絡(luò)帶寬的長時間尺度波動,則通過調(diào)整解碼速率來保證播放的連續(xù),而不會出現(xiàn)卡殼停頓的現(xiàn)象。
發(fā)送端的傳輸速率基于收端隨時調(diào)整,并進行平滑控制。這是根據(jù)流量控制來實現(xiàn)的。流量控制的策略是根據(jù)期望傳輸速率,調(diào)整下一時刻的發(fā)送數(shù)據(jù)量。本發(fā)明使用兩個隊列分別記錄以前若干時刻點的流量和傳輸用的時間,根據(jù)期望的傳輸速率r來預(yù)測下一時刻點的流量。并每次刷新兩個隊列。通過調(diào)整隊列的長度,可以調(diào)整傳輸速率的平滑程度。隊列越短,則瞬時性越強,反之,隊列越長,速度越平滑。這樣不斷調(diào)整每個時刻的發(fā)送數(shù)據(jù)量,不僅起到精確控制傳輸速率的作用,而且能夠使傳輸速率更平滑。
通過實時調(diào)整發(fā)送端的傳輸速率來適應(yīng)網(wǎng)絡(luò)的傳輸。如果傳輸碼率和網(wǎng)絡(luò)帶寬相匹配則包丟失率會大大下降。RTCP作為反向信道,從收端監(jiān)測網(wǎng)絡(luò)的狀態(tài),把網(wǎng)絡(luò)的狀態(tài)信息反傳給發(fā)端。RTP即作為數(shù)據(jù)信道把視音頻數(shù)據(jù)從發(fā)送端傳輸?shù)讲シ牌鞫?,同時也作為反向信道把播放器端的緩存狀態(tài)反饋到發(fā)送端。發(fā)送端同時根據(jù)網(wǎng)絡(luò)狀態(tài)信息與播放器端的緩存狀態(tài)信息進行傳輸速率調(diào)整。具體方法如下首先設(shè)定一個包丟失率的閾值Pth,在收端檢測包丟失率p,并將p通過反向信道RTCP傳回發(fā)送端,發(fā)送時可以采用以下的策略進行碼率調(diào)整如果(p≤Pth)
r=min{r+StepR},MaxR}如果(p≥Pth)r=max{(α×r),MinR}其中r是傳輸速率,p是包丟失率,MaxR和MinR是最大和最小傳輸速率。StepR是碼率遞增的步長,也就是每次碼率增加的幅度。α是碼率的遞減系數(shù)。
同時,StepR和α是與接收端緩沖狀態(tài)相關(guān)。設(shè)定接收端緩存的占有率為B,將B通過RTP信道傳回發(fā)送端,發(fā)送端根據(jù)B調(diào)整碼率的遞增步長和遞減系數(shù)。
StepR=F((3/4)*B,(1/4)*B)α=F1((3*4)/B,(1*4)/B)上述兩個表達式的意思就是當(dāng)緩沖占有率越小,則每次的碼率遞增步長越大,遞減系數(shù)越小;反之,緩沖占有率越大,則每次的碼率遞增步長越小,遞減系數(shù)越大;緩沖占有率為3/4和1/4時為碼率遞增遞減轉(zhuǎn)換的臨界點。
為了使可變的解碼速率Rv和傳輸速率r相匹配,播放器中設(shè)置了一個緩存。隨著每一幀被解碼,解碼數(shù)據(jù)以可變的Rv速率移出緩存,同樣以可變的傳輸速率r填充緩存。由于沒有對變化的速率Rv及r有限制,緩存的數(shù)據(jù)既有可能漫出(“上溢”),也有可能變空(“下溢”)。為了避免這種情況的發(fā)生,可將緩存的占有率B的信息“反饋”到發(fā)送端去控制量化步長,即遞增步長StepR和遞減系數(shù)α。隨著B的增加/減少,α也隨著增加/減少,StepR也隨著減少/增加,這就引起傳輸速率r的變化,正常情況下,解碼速率Rv和傳輸速率r總體上是匹配的,就可以始終維持緩存容量在一個合理的范圍內(nèi)。同時增加在緩沖占有率臨界點對解碼速率的控制,增強系統(tǒng)對網(wǎng)絡(luò)惡化的抵抗能力。
這樣,當(dāng)播放端點播節(jié)目,發(fā)送請求到發(fā)送端,發(fā)送端根據(jù)請求從存儲裝置讀取文件內(nèi)容到發(fā)送緩沖,發(fā)送端先根據(jù)流媒體內(nèi)容的編碼速率確定初始傳輸速率r,同時確定MaxR,MinR;把數(shù)據(jù)內(nèi)容從發(fā)送緩沖中以速率r通過RTP信道發(fā)送到網(wǎng)絡(luò)上,播放器從RTP信道收到發(fā)送端傳來的數(shù)據(jù)后,臨時存放在接收緩沖,這時一邊是解碼回放裝置從接收緩沖中讀取數(shù)據(jù)進行解碼回放,一邊從RTP信道接收數(shù)據(jù),同時檢測丟包率p及時延d,而且根據(jù)丟包信息和時延d來判斷丟包是否需要重傳,如果重傳后的包能夠低于時延的閾值,就可重傳。把p(及d)通過RTCP信道回傳給發(fā)送端,而且計算接收緩存占有率B,定時把接收緩存占有率B(以及丟包信息)通過RTP信道回傳給發(fā)送端;發(fā)送端從RTCP信道接收p,根據(jù)p調(diào)整發(fā)送碼率,同時在RTP信道定時接收接收緩存占有率B及丟包信息,根據(jù)B來調(diào)整當(dāng)前的遞增步長或遞減系數(shù),當(dāng)由于長時間尺度的網(wǎng)絡(luò)擁塞,接收緩存占有率B下降到最低臨界點后或上升到最高臨界點后,播放器適當(dāng)減慢或加快播放速度,確保緩存即不下溢也不上溢,同時保證了節(jié)目播放的清晰度,而且避免了停頓現(xiàn)象。
本發(fā)明的效果與優(yōu)點是由于擁塞控制的作用,網(wǎng)絡(luò)帶寬的短時間尺度波動常常比較大,如果直接按照網(wǎng)絡(luò)實時帶寬進行視頻質(zhì)量調(diào)節(jié),必然會造成視頻質(zhì)量抖動劇烈,影響播放效果。采用本發(fā)明的方法,可以準(zhǔn)確控制數(shù)據(jù)流的傳輸速率,但并不需要進行視頻質(zhì)量調(diào)節(jié),能保證客戶享受到穩(wěn)定的視頻服務(wù)。
該技術(shù)能使流媒體服務(wù)器自動適應(yīng)網(wǎng)絡(luò)狀況實時傳送流媒體數(shù)據(jù)。即使在劇烈變化的網(wǎng)絡(luò)環(huán)境下,采用該技術(shù)仍能保證客戶享受到清晰的、流暢的視頻服務(wù)。
在流媒體服務(wù)器上應(yīng)用本發(fā)明,可以有效控制每個媒體流的傳輸速率,降低服務(wù)器資源利用率。同樣由于每個媒體流的傳輸速率可以靈敏控制,使每個媒體流的傳輸速率更穩(wěn)定,充分利用服務(wù)器輸出帶寬,提供更多的客戶連接。
四
附圖1 是本發(fā)明流媒體傳輸系統(tǒng)發(fā)送端的速率控制過程;附圖2 是發(fā)送端根據(jù)期望速率來預(yù)測下一個時刻點的流量控制過程;附圖3 是視頻點播系統(tǒng)的速率控制示意圖。
五具體實施例方式流媒體傳輸系統(tǒng)發(fā)送端的速率控制過程如附圖l所示。步驟如下1、首先,流媒體發(fā)送端接收播放終端請求;2、根據(jù)播放終端的請求確定多媒體數(shù)據(jù)源;3、根據(jù)多媒體數(shù)據(jù)源的編碼信息確定初始發(fā)送速率;4、根據(jù)預(yù)期的傳輸速率確定當(dāng)前的發(fā)送數(shù)據(jù)量;5、發(fā)送一定量數(shù)據(jù)到網(wǎng)絡(luò);6、接收播放終端反饋的丟包率和接收緩存占有率;7、判斷多媒體流是否結(jié)束或用戶停止播放,如果結(jié)束就退出;
8、根據(jù)步驟4傳輸速率以及步驟6的丟包率和接收緩存占有率調(diào)整預(yù)期的發(fā)送速率;9、返回第4步。
對于其中的第4步,根據(jù)預(yù)期的傳輸速率確定當(dāng)前的發(fā)送數(shù)據(jù)量,在具體實施時可以起到速率精確控制與速率平滑控制的作用。方法如下a.我們使用一個隊列來記錄以前若干時刻點的流量。即流量隊列,計作Q-flow[SIZE]。
b.同時我們用一個隊列記錄以前若干時刻點的傳輸用時間。即時差隊列,計作Q-difference[SIZE]。
c.然后,根據(jù)我們設(shè)置的期望速率R來預(yù)測下一時刻點的流量。
d.循環(huán)以上3步,不斷修正下一時刻點的流量,實現(xiàn)對該路數(shù)據(jù)流的傳輸速率控制。
e.其中,a中若干時刻點的若干即SIZE作為參數(shù)是可以設(shè)置的。它確定了用于預(yù)測任一時刻數(shù)據(jù)通道流量時所用的歷史數(shù)據(jù)隊列的大小。這個隊列的大小正比于計算瞬時速率所用的窗口時間。這個參數(shù)值越小,計算出來的速率的瞬時性就越強,但與此同時,速率控制的穩(wěn)定性相對越差。
f.前面提到的流量實際上就是數(shù)據(jù)通道在兩個時刻點之間傳輸?shù)臄?shù)據(jù)量。
g.b的若干時刻點與a的若干時刻點是一一對應(yīng)的,也就是一致的。
h.b的傳輸用時間指的是兩個記錄時刻點之間的時間差。
至于c根據(jù)我們設(shè)置的期望速率來預(yù)測下一個時刻點的流量,如附圖2所示。具體操作如下1、首先計時次數(shù)索引Index自動加1,如果達到SIZE,Index歸零;實際上,Index也就是該計時時刻點記錄在兩個隊列中的位置。
2、判斷隊列是否已經(jīng)滿了,也就是記錄次數(shù)是否超過SIZE。如果滿了,就把隊列中Index的位置騰空,準(zhǔn)備用當(dāng)前記錄值填充。
3、計算出最近SIZE記錄的時間段內(nèi)總的耗時T。
4、計算出最近SIZE記錄的時間段內(nèi)總的流量F。
5、計算最近SIZE記錄時段內(nèi)的實際發(fā)送平均碼率。R0=F/T。其中F和T為到上個記錄時刻的連續(xù)SIZE個記錄時間段內(nèi)的總流傳輸量和總耗時。
6、取得當(dāng)前時間now,計算當(dāng)前時間與上次計錄時間lasttime的時間差td。
7、填充態(tài)度td到Q-difference[Index];刷新時差隊列。
8、更新上次記錄時間,lasttime=now。
9、計算當(dāng)前記錄時刻點準(zhǔn)備傳輸?shù)牧髁縓。X=R*T-F。R為期望傳輸速率,T和F為到當(dāng)前記錄時刻的連續(xù)SIZE個記錄時間段內(nèi)的總傳輸流量和總耗時。
10、把X填充到Q-flow[Index];刷新流量隊列。
本發(fā)明可以在視頻點播系統(tǒng)中實施。如附圖3所示。系統(tǒng)由視頻服務(wù)器和多個客戶播放器以及網(wǎng)絡(luò)組成。視頻服務(wù)器包括存儲系統(tǒng)1、速率控制模塊2、發(fā)送緩沖區(qū)3、及傳輸子系統(tǒng)4。客戶播放器包括傳輸子系統(tǒng)5、接收緩沖區(qū)6、解碼回放模塊7。
對于每個客戶的點播請求,客戶播放器傳輸子系統(tǒng)5通過網(wǎng)絡(luò)傳遞點播請求到視頻服務(wù)器的傳輸子系統(tǒng)4。
視頻服務(wù)器從存儲系統(tǒng)1中讀取相應(yīng)的媒體文件內(nèi)容到發(fā)送緩沖區(qū)3。
速率控制模塊2把該節(jié)目的編碼碼率作為我們的期望碼率,也就是初始發(fā)送速率,同時根據(jù)網(wǎng)絡(luò)狀況和客戶播放器緩沖狀態(tài),不斷調(diào)整發(fā)送速率,計算每次的傳輸數(shù)據(jù)量。
視頻服務(wù)器把該數(shù)據(jù)量的媒體內(nèi)容從發(fā)送緩沖區(qū)3送到及傳輸子系統(tǒng)4,通過網(wǎng)卡傳輸?shù)骄W(wǎng)絡(luò)上。
客戶播放器傳輸子系統(tǒng)5接收媒體內(nèi)容,送入接收緩沖區(qū)6。
客戶播放器傳輸子系統(tǒng)5檢查丟包狀態(tài),并監(jiān)視接收緩沖占有率,及時把丟包率和接收緩沖占有率通過傳輸子系統(tǒng)5經(jīng)網(wǎng)絡(luò)反饋給視頻服務(wù)器。
解碼回放模塊7從接收緩沖區(qū)6中取的媒體數(shù)據(jù)進行解碼回放。
既保證了視頻服務(wù)器傳輸速率和網(wǎng)絡(luò)速率的匹配,又保證客戶播放器的接收緩沖區(qū)6既不上溢,也不下溢,能夠平穩(wěn)流暢的播放。
權(quán)利要求
1.一種流媒體傳輸系統(tǒng)中的速率控制方法,其特征在于本發(fā)明采用流媒體傳輸系統(tǒng)的速率控制方法是基于收端的,但信道是固定的,而不是動態(tài)增加或減少的;該信道的速率是動態(tài)變化的,而且是連續(xù)的,不是分級的,該信道的速率是由流媒體文件本身的編碼速率決定的,同時受網(wǎng)絡(luò)丟包率及接收端的緩存占有率影響的;對于網(wǎng)絡(luò)帶寬的長時間尺度波動,則通過調(diào)整解碼速率來保證播放的連續(xù),而不會出現(xiàn)卡殼停頓的現(xiàn)象;發(fā)送端的傳輸速率基于收端隨時調(diào)整,并進行平滑控制,策略是根據(jù)期望傳輸速率,調(diào)整下一時刻的發(fā)送數(shù)據(jù)量,本發(fā)明使用兩個隊列分別記錄以前若干時刻點的流量和發(fā)送用的時間,根據(jù)期望的傳輸速率r來預(yù)測下一時刻點的流量,并每次刷新兩個隊列,通過調(diào)整隊列的長度,可以調(diào)整發(fā)送速率的平滑程度,隊列越短,則瞬時性越強,反之,隊列越長,速度越平滑。
2.根據(jù)權(quán)利要求1所述的流媒體傳輸系統(tǒng)中的速率控制方法,其特征在于通過實時調(diào)整發(fā)送端的傳輸速率來適應(yīng)網(wǎng)絡(luò)的傳輸,RTCP作為反向信道,從收端監(jiān)測網(wǎng)絡(luò)的狀態(tài),把網(wǎng)絡(luò)的狀態(tài)信息反傳給發(fā)端,RTP即作為數(shù)據(jù)信道把視音頻數(shù)據(jù)從發(fā)送端傳輸?shù)讲シ牌鞫?,同時也作為反向信道把播放器端的緩存狀態(tài)反饋到發(fā)送端,發(fā)送端同時根據(jù)網(wǎng)絡(luò)狀態(tài)信息與播放器端的緩存狀態(tài)信息進行傳輸速率調(diào)整,具體方法如下首先設(shè)定一個包丟失率的閾值Pth,在收端檢測包丟失率p,并將p通過反向信道RTCP傳回發(fā)送端,發(fā)送時可以采用以下的策略進行碼率調(diào)整如果(p≤Pth)r=min{r+StepR},MaxR}如果(p≥Pth)r=max{(α×r),MinR},其中r是傳輸速率,p是包丟失率,MaxR和MinR是最大和最小傳輸速率,StepR是碼率遞增的步長,也就是每次碼率增加的幅度,α是碼率的遞減系數(shù),同時,StepR和α是與接收端緩沖狀態(tài)相關(guān),設(shè)定接收端緩存的占有率為B,將B通過RTP信道傳回發(fā)送端,發(fā)送端根據(jù)B調(diào)整碼率的遞增步長和遞減系數(shù);StepR=F((3/4)*B,(1/4)*B)α=F1((3*4)/B,(1*4)/B)上述兩個表達式的意思就是當(dāng)緩沖占有率越小,則每次的碼率遞增步長越大,遞減系數(shù)越?。环粗?,緩沖占有率越大,則每次的碼率遞增步長越小,遞減系數(shù)越大;緩沖占有率為3/4和1/4時為碼率遞增遞減轉(zhuǎn)換的臨界點。
3.根據(jù)權(quán)利要求1或2所述的一種流媒體傳輸系統(tǒng)中的速率控制方法,其特征在于為了使可變的解碼速率Rv和傳輸速率r相匹配,播放器中設(shè)置了一個緩存,解碼數(shù)據(jù)以可變的Rv速率移出緩存,同樣以可變的傳輸速率r填充緩存,由于沒有對變化的速率Rv及r有限制,緩存的數(shù)據(jù)既有可能漫出(“上溢”),也有可能變空(“下溢”),為了避免這種情況的發(fā)生,將緩存的占有率B的信息“反饋”到發(fā)送端去控制量化步長,即遞增步長StepR和遞減系數(shù)α。隨著B的增加/減少,α也隨著增加/減少,StepR也隨著減少/增加,這就引起傳輸速率r的變化,正常情況下,解碼速率Rv和傳輸速率r總體上是匹配的,就可以始終維持緩存容量在一個合理的范圍內(nèi),同時增加在緩沖占有率臨界點對解碼速率的控制,增強系統(tǒng)對網(wǎng)絡(luò)惡化的抵抗能力。
全文摘要
本發(fā)明為一種流媒體傳輸系統(tǒng)中的速率控制方法,本發(fā)明公開了怎樣有效利用網(wǎng)絡(luò)帶寬,在媒體視頻點播系統(tǒng)上對視音頻數(shù)據(jù)流的碼率控制技術(shù),通過接收端設(shè)定緩存的占有率B,并將B通過數(shù)據(jù)信道傳回發(fā)送端,發(fā)送端根據(jù)B值網(wǎng)絡(luò)丟包率調(diào)整碼率的遞增步長StepR和遞減系數(shù)α,也就是調(diào)整流量隊列的長度可以調(diào)整傳輸速率的平滑程度。本發(fā)明方法可以準(zhǔn)確控制數(shù)據(jù)流的傳輸速率,并不需要進行視頻質(zhì)量調(diào)節(jié),能夠保證客戶享受到穩(wěn)定的視頻服務(wù),客戶享受到清晰的、流暢的視頻服務(wù)節(jié)目,充分利用服務(wù)器的輸出帶寬,提供更多的客戶連接。
文檔編號H04L29/02GK1655547SQ200410066218
公開日2005年8月17日 申請日期2004年9月9日 優(yōu)先權(quán)日2004年9月9日
發(fā)明者朱愛璽 申請人:上海川海信息科技有限公司