林 銳,劉 峰
(南京郵電大學(xué)圖像處理與圖像通信江蘇省重點實驗室,南京 210003)
視頻業(yè)務(wù)的快速發(fā)展占用了互聯(lián)網(wǎng)中大量帶寬,如何在有限的帶寬下提供更高質(zhì)量的服務(wù)成為研究的熱點。一方面,新的視頻壓縮技術(shù)快速發(fā)展,相同質(zhì)量的視頻所需要的碼率越來越小;另一方面,許多專家提出并改善眾多自適應(yīng)的流媒體傳輸方案,在自適應(yīng)流媒體系統(tǒng)中,系統(tǒng)可以根據(jù)帶寬和客戶端的設(shè)備條件提供不同質(zhì)量級別的視頻,充分利用帶寬。
早期,人們認(rèn)為TCP協(xié)議作為一個面向連接的協(xié)議,其重傳機制和擁塞控制機制都不適用于實時多媒體傳輸?shù)?。因此,早期大量的視頻流傳輸都是基于UDP(或者RTP over UDP)協(xié)議的[1]。然而,近年的研究表明,當(dāng)該系統(tǒng)能夠自適應(yīng)于網(wǎng)絡(luò)變化時[1],TCP的擁塞控制和可靠性傳輸并不會影響流媒體系統(tǒng)的表現(xiàn)。因此,不再使用傳統(tǒng)的流媒體協(xié)議,如RTP/RTCP,而使用基于HTTP的方式進行內(nèi)容分發(fā)是目前流媒體發(fā)展的趨勢?;贖TTP方式的下載在服務(wù)器的構(gòu)架上比專門的流媒體服務(wù)器下載更便宜;HTTP服務(wù)常用的80端口所有防火墻和路由器都放行,而傳統(tǒng)的流媒體協(xié)議通常對防火墻和路由器有特別的要求,UDP包傳送的時候會要求特別的網(wǎng)絡(luò)端口;在HTTP服務(wù)器上,媒體文件和其他的別的文件一樣直接緩沖在服務(wù)器上,不要求特別的代理和緩沖。
本文首先介紹了基于HTTP的流媒體系統(tǒng)的現(xiàn)況,然后介紹了本文的基于HTTP長連接[2]的自適應(yīng)流媒體傳輸系統(tǒng)的總體設(shè)計,各功能模塊及其之間相互關(guān)系和該系統(tǒng)所采用的自適應(yīng)控制策略,接著給出實驗結(jié)果,最后給出總結(jié)。
漸進式下載是一種基于HTTP的流媒體系統(tǒng)的分發(fā)方式,它是一種簡單的從HTTP WEB服務(wù)器進行文件下載的普通方式。該種方式將播放內(nèi)容直接放在瀏覽器的緩存里,客戶端在下載的同時播放媒體內(nèi)容,不用等到整個文件下載完成;然而HTTP WEB服務(wù)器會在媒體文件下載完成之前一直傳送數(shù)據(jù)流,造成客戶端數(shù)據(jù)的大量累積,浪費不必要的網(wǎng)絡(luò)資源?,F(xiàn)在流行的視頻網(wǎng)站,比如說Youtube、優(yōu)酷網(wǎng)、土豆網(wǎng),幾乎都是在使用漸進式下載技術(shù)。
近年來出現(xiàn)了基于HTTP的自適應(yīng)流媒體傳輸系統(tǒng),常見的有:Apple公司的HTTP Live Streaming(HLS),微軟的 SilverLight Smooth Streaming[3],以及 Adobe 的 HTTP Dynamic Streaming。這些系統(tǒng)都將視頻源切割成一個個數(shù)秒大小的視頻端(切片),并把每一段視頻轉(zhuǎn)碼成不同的質(zhì)量級別;客戶端首先向服務(wù)器請求一個播放列表,播放列表中包含切片的基本信息(如切片持續(xù)時間,開始時間戳,以及先后順序),然后再按播放列表根據(jù)網(wǎng)絡(luò)狀況和緩存情況適時的向服務(wù)器請求相應(yīng)質(zhì)量級別的切片,這樣使用戶得到在不同帶寬條件下的較佳體驗[4]??梢园l(fā)現(xiàn),這些系統(tǒng)客戶端每下載一個切片,客戶端就需要和服務(wù)器重新建立一次連接;并且客戶端需要隨時更新播放列表才能從服務(wù)器獲得正確的切片。此外,由于系統(tǒng)的自適應(yīng)功能是由客戶端驅(qū)動的,用戶均需要下載特定的播放器,如微軟的要安裝Silverlight插件,HLS只適用于Apple的一些系統(tǒng)中[3]。
為此,本文提出一種基于HTTP長連接的自適應(yīng)流媒體傳輸系統(tǒng),在該系統(tǒng)中,用戶向服務(wù)器發(fā)出請求后,服務(wù)器和客戶端就會建立一個HTTP長連接,然后服務(wù)器根據(jù)網(wǎng)絡(luò)狀況和發(fā)送情況適時的向客戶端發(fā)送相應(yīng)質(zhì)量和時間段的切片。該系統(tǒng)不僅利用了HTTP長連接技術(shù),有效的減少頻繁建立連接帶來的網(wǎng)絡(luò)資源開銷;同時采取了服務(wù)器端驅(qū)動的自適應(yīng)控制策略,對客戶端的要求較低,具有很強的通用性。
基于HTTP的自適應(yīng)流媒體傳輸系統(tǒng)主要利用HTTP長連接和服務(wù)器端驅(qū)動的自適應(yīng)控制策略。傳統(tǒng)的基于HTTP的流媒體系統(tǒng)通常采用HTTP短連接,即客戶端每接收一個切片,都需要像服務(wù)器發(fā)出請求,然后建立連接,發(fā)送數(shù)據(jù),而切片通常很短,因而客戶端和服務(wù)器之間就在頻繁的建立和斷開連接,對網(wǎng)絡(luò)資源造成浪費。為此本文采取HTTP長連接,即客戶端與服務(wù)器端先建立連接,連接建立后就不再斷開,然后再進行報文發(fā)送和接收,這種方式下由于通信連接的一直存在,就避免了客戶端向服務(wù)器請求切片時頻繁的建立和斷開連接[2]。服務(wù)器端驅(qū)動的自適應(yīng)控制算法指的是服務(wù)器端監(jiān)測客戶端的播放狀況和當(dāng)前的網(wǎng)絡(luò)環(huán)境,并根據(jù)其監(jiān)測結(jié)果發(fā)送相應(yīng)的數(shù)據(jù)給客戶端。
該系統(tǒng)中包括源端、服務(wù)器和客戶端3個部分組成,其中服務(wù)器為主要部分,它包括:源多碼率模塊、子流切片模塊、切片管理模塊、客戶端緩存區(qū)控制模塊、帶寬監(jiān)測模塊、自適應(yīng)控制模塊和網(wǎng)絡(luò)發(fā)送模塊。如圖1所示。源端將節(jié)目源發(fā)送至服務(wù)器,服務(wù)器對節(jié)目源進行相應(yīng)處理等待并響應(yīng)客戶端的請求,客戶端接收切片并播放,整個系統(tǒng)中服務(wù)器為主要部分。
圖1 系統(tǒng)設(shè)計總體框圖
服務(wù)器的源多碼率模塊將節(jié)目源下采樣成多種碼率級別,然后子流切片模塊將其得到的各個碼率級別的子流進行切片,將得到的切片送到切片管理模塊中,等待客戶端的請求,當(dāng)客戶端向服務(wù)器發(fā)送請求時,兩者之間就建立起一個長連接,客戶端緩存區(qū)控制模塊監(jiān)測客戶端播放狀況以及緩存區(qū)狀況,帶寬監(jiān)測模塊監(jiān)測當(dāng)前的網(wǎng)絡(luò)狀況,自適應(yīng)控制模塊根據(jù)客戶端緩存區(qū)控制模塊和帶寬監(jiān)測模塊的結(jié)果控制網(wǎng)絡(luò)發(fā)送模塊向客戶端適時發(fā)送相應(yīng)數(shù)據(jù)。
源多碼率模塊是指將高碼率高分辨率的節(jié)目源通過下采樣的方法轉(zhuǎn)化為多種碼率級別的節(jié)目子流,這里的多種碼率級別指的是相同分辨率下的不同碼率級別。
子流切片模塊是指將每個子流切割成一個個4~6 s的切片,每一個切片由若干個GoP(視頻圖像組)組成,對于不同碼率的同一段切片,要保證開始和結(jié)束的時間戳一致。該模塊產(chǎn)生的切片由切片管理模塊統(tǒng)一管理和調(diào)配,方便客戶端的請求及服務(wù)器的選擇。
客戶端的緩存區(qū)應(yīng)保持在一個安全的范圍,如果發(fā)送的太快,緩存區(qū)產(chǎn)生上溢,雖不影響用戶的體驗,卻會造成網(wǎng)絡(luò)資源不必要的浪費;如果發(fā)送的太慢,緩存區(qū)產(chǎn)生下溢,則會讓客戶端播放產(chǎn)生停頓,影響用戶的觀看。因此客戶端緩存區(qū)控制模塊監(jiān)測客戶端的緩存區(qū)狀況,并將獲得的信息提供給自適應(yīng)控制模塊。
自適應(yīng)控制模塊根據(jù)客戶端緩存區(qū)控制模塊和帶寬監(jiān)測模塊的結(jié)果選擇相應(yīng)的發(fā)送時間和碼率,具體方法見2.2 節(jié)。
帶寬監(jiān)測模塊對網(wǎng)絡(luò)狀況進行監(jiān)測,該模塊根據(jù)2.2節(jié)中介紹的帶寬預(yù)測方法進行帶寬預(yù)測。而網(wǎng)絡(luò)發(fā)送模塊通過HTTP協(xié)議向客戶端發(fā)送相應(yīng)的切片。
進行自適應(yīng)碼率控制一方面要考慮所發(fā)送視頻的碼率級別是否與當(dāng)前的網(wǎng)絡(luò)狀況相符;另一方面還要考慮客戶端緩存區(qū)的數(shù)據(jù)量,如果客戶端緩存區(qū)的數(shù)據(jù)量太小,而發(fā)送的碼率級別比較大,則很有可能造成客戶端緩存區(qū)的下溢,影響客戶體驗[5-7]。本文的自適應(yīng)碼率控制方法就是從這兩方面入手。
TCP的瞬時傳播速率是時刻變化的,所以用它來衡量網(wǎng)絡(luò)的傳送能力是不可行的。為此,本文利用相對較長一段時間的平均帶寬來衡量當(dāng)前的網(wǎng)絡(luò)狀況,具體方法如下
假設(shè)當(dāng)前帶寬為Bi,則可以根據(jù)之前發(fā)送每片時的平均帶寬進行預(yù)測,預(yù)測值為,預(yù)測值由之前發(fā)送的5片的平均帶寬 Bi-1,Bi-2,Bi-3,Bi-4,Bi-5得到。首先找到5 個帶寬中最小的2個Bk1,Bk2(Bk1<Bk2);再通過二者的加權(quán)和得到預(yù)測值。λ1,λ2為加權(quán)因子,計算公式如下
式中:發(fā)送第i-k個切片時的平均帶寬為
式中:MSSi-k為第 i- k個切片的大小;Tsi-k為發(fā)送第 ik個切片所用時間。
如果當(dāng)前的帶寬與發(fā)送切片的碼率相符,則說明當(dāng)前切片的碼率級別的選擇符合當(dāng)前的網(wǎng)絡(luò)狀況;如果當(dāng)前的帶寬小于發(fā)送切片的碼率,則說明選擇的碼率過大,需要切換到較低的碼率;如果當(dāng)前的帶寬大于發(fā)送切片的碼率,則說明選擇的碼率過小,需要切換到較低的碼率。因此,可以根據(jù)當(dāng)前平均帶寬的變化來控制即將發(fā)送切片的碼率。
設(shè)R1節(jié)目源經(jīng)過源多碼率模塊處理后產(chǎn)生N種碼率級別的子流,它們的碼率分別是R1,R2,…,RN。而客戶端緩存區(qū)中媒體流可以播放的時間用tm來表示,設(shè)客戶端緩存區(qū)中允許的最小的媒體流的播放時間為tmin。
自適應(yīng)控制流程如圖2所示。本文首先要保證客戶端的緩沖區(qū)數(shù)據(jù)在安全范圍內(nèi),防止緩沖區(qū)下溢,如果一旦發(fā)現(xiàn)緩沖區(qū)下溢,則立即將碼率下調(diào)至最低級別,并立刻發(fā)送切片;其次根據(jù)相應(yīng)的原則對要發(fā)送切片的碼率進行調(diào)整。
圖2 自適應(yīng)控制算法流程圖
式中μup和μdown為碼率切換的判斷系數(shù)。
當(dāng)系統(tǒng)滿足上調(diào)碼率級別的條件時,則將發(fā)送的下一切片的碼率級別比上一切片高一個級別;當(dāng)系統(tǒng)要下調(diào)碼率級別時,則將發(fā)送的下一切片的碼率級別Rnext調(diào)整至滿足如下條件
在進行自適應(yīng)控制時,要保證客戶端的緩沖區(qū)在一個安全范圍內(nèi),不能產(chǎn)生上溢,更不可發(fā)生下溢,為此,設(shè)定發(fā)送兩片的時間間隔為ts,
本文將源端、服務(wù)器和客戶端放在一個局域網(wǎng)中,在客戶端通過Netlimiter軟件控制服務(wù)器與客戶端之間的網(wǎng)絡(luò)帶寬。本文的切片采用3種質(zhì)量級別550 kbit/s,950 kbit/s和1800 kbit/s,每個切片長約4~6 s;而客戶端緩存區(qū)中媒體流允許的最小播放的時間為tmin=4000 ms。系統(tǒng)啟動后,運行穩(wěn)定,對發(fā)送的1500片進行分析。
如圖3和圖4所示,本文系統(tǒng)在網(wǎng)絡(luò)環(huán)境發(fā)生變化時,能及時做出響應(yīng),將要發(fā)送的切片的質(zhì)量級別切換至相應(yīng)的級別。可以看出當(dāng)網(wǎng)絡(luò)狀況穩(wěn)定在很好的狀況時,系統(tǒng)穩(wěn)定的發(fā)送最高質(zhì)量級別的切片,當(dāng)網(wǎng)絡(luò)狀況穩(wěn)定在較差的狀況時,系統(tǒng)發(fā)送的切片的質(zhì)量級別會出現(xiàn)波動,但從圖5和表1中可以發(fā)現(xiàn),此種狀況下,系統(tǒng)發(fā)送的大部分切片的質(zhì)量級別是與帶寬值相符的,而出現(xiàn)波動的原因有二:一方面,發(fā)送切片的質(zhì)量級別是一個平均值,每一個切片的平均碼率是變化的,而當(dāng)設(shè)定的帶寬值與切片質(zhì)量級別相近時,會出現(xiàn)切片的平均碼率大于平均帶寬的狀況;另一方面,網(wǎng)絡(luò)的平均帶寬只是評價網(wǎng)絡(luò)狀況的一個指標(biāo),網(wǎng)絡(luò)環(huán)境是時刻變化的,有可能出現(xiàn)擁塞等其他影響數(shù)據(jù)傳輸?shù)臓顩r出現(xiàn)。
圖3 網(wǎng)絡(luò)環(huán)境變化下的切片質(zhì)量級別分布—1
圖6展示的是客戶端緩存區(qū)中所剩數(shù)據(jù)可以播放的時間,從圖中可以看到,該時間絕大部分情況下大于tmin,并始終在0以上,說明沒有出現(xiàn)下溢的情況;同時,該時間在10 s附近上下浮動,亦沒有出現(xiàn)顯著的上溢,說明本文系統(tǒng)讓客戶端緩存區(qū)保持在一個安全范圍內(nèi),在保證客戶流暢觀看的條件下,節(jié)省了帶寬資源。
表1 不同帶寬穩(wěn)定狀況下切片質(zhì)量級別分布表
圖6 客戶端緩存區(qū)數(shù)據(jù)量的變化
本文的基于HTTP長連接的自適應(yīng)傳輸系統(tǒng)中客戶端無需安裝特殊的插件,具有很強的適應(yīng)性和通用性;同時,由于采用了HTTP長連接,避免了客戶端向服務(wù)器請求切片時頻繁的建立和斷開連接,節(jié)省了網(wǎng)絡(luò)資源。
本文系統(tǒng)所采用的自適應(yīng)控制策略能夠很好的適應(yīng)網(wǎng)絡(luò)環(huán)境,當(dāng)網(wǎng)絡(luò)帶寬發(fā)生變化時,系統(tǒng)對推送的切片的質(zhì)量級別及時做出調(diào)整,同時在網(wǎng)絡(luò)狀況穩(wěn)定時,切片的質(zhì)量級別亦能基本符合帶寬狀況。本文系統(tǒng)實現(xiàn)了客戶端緩存區(qū)的數(shù)據(jù)量在一定范圍波動,沒有發(fā)生下溢確保了客戶端的播放流暢,亦未發(fā)生上溢,防止了過度的數(shù)據(jù)累積。
[1]AKHSHABI S,BEGEN A C,DOVROLIS C.An experimental evaluation of rate-adaptation algorithms in adaptive streaming over HTTP[EB/OL].[2011-07-15].http://www.cc.gatech.edu/~ dovrolis/Papers/final-saamer-mmsys11.pdf.
[2]FIELDING R,GETTY J,MOGUL J,et al.Hypertext transfer protocol--HTTP/1.1[S].1999.
[3]MA K J,MAN L,HUANGA,et al.Video rate adaptation in mobile devices via HTTP progressive download of stitched media files[J].IEEE Trans.Multimedia,2011,15(3):320-322.
[4]JARNIKOV D,O?Z?ELEBI T.Client intelligence for adaptive streaming solutions[C]//IEEE International Conference on Multimedia and Expo(ICME).[S.l.]:IEEE Press,2010:1499-1504.
[5]LIU Chenghao,BOUAZIZI I,GABBOUJ M.Rate adaptation for adaptive HTTP streaming[C]//Proc.MMSys'11 Proceedings of the second annual ACM conference on Multimedia systems.San Jose:ACM Press,2011:169-174.
[6]李爭明,張佐,葉德鍵.自適應(yīng)流媒體傳輸方案研究及其應(yīng)用[J].計算機工程,2006,32(12):226-228.
[7]祝睿杰,別紅霞.影響流媒體系統(tǒng)視頻質(zhì)量的關(guān)鍵參數(shù)仿真測試研究[J].電視技術(shù),2009,33(S2):228-231.