林 銳,劉 峰
(南京郵電大學圖像處理與圖像通信江蘇省重點實驗室,南京 210003)
視頻業務的快速發展占用了互聯網中大量帶寬,如何在有限的帶寬下提供更高質量的服務成為研究的熱點。一方面,新的視頻壓縮技術快速發展,相同質量的視頻所需要的碼率越來越小;另一方面,許多專家提出并改善眾多自適應的流媒體傳輸方案,在自適應流媒體系統中,系統可以根據帶寬和客戶端的設備條件提供不同質量級別的視頻,充分利用帶寬。
早期,人們認為TCP協議作為一個面向連接的協議,其重傳機制和擁塞控制機制都不適用于實時多媒體傳輸的。因此,早期大量的視頻流傳輸都是基于UDP(或者RTP over UDP)協議的[1]。然而,近年的研究表明,當該系統能夠自適應于網絡變化時[1],TCP的擁塞控制和可靠性傳輸并不會影響流媒體系統的表現。因此,不再使用傳統的流媒體協議,如RTP/RTCP,而使用基于HTTP的方式進行內容分發是目前流媒體發展的趨勢。基于HTTP方式的下載在服務器的構架上比專門的流媒體服務器下載更便宜;HTTP服務常用的80端口所有防火墻和路由器都放行,而傳統的流媒體協議通常對防火墻和路由器有特別的要求,UDP包傳送的時候會要求特別的網絡端口;在HTTP服務器上,媒體文件和其他的別的文件一樣直接緩沖在服務器上,不要求特別的代理和緩沖。
本文首先介紹了基于HTTP的流媒體系統的現況,然后介紹了本文的基于HTTP長連接[2]的自適應流媒體傳輸系統的總體設計,各功能模塊及其之間相互關系和該系統所采用的自適應控制策略,接著給出實驗結果,最后給出總結。
漸進式下載是一種基于HTTP的流媒體系統的分發方式,它是一種簡單的從HTTP WEB服務器進行文件下載的普通方式。該種方式將播放內容直接放在瀏覽器的緩存里,客戶端在下載的同時播放媒體內容,不用等到整個文件下載完成;然而HTTP WEB服務器會在媒體文件下載完成之前一直傳送數據流,造成客戶端數據的大量累積,浪費不必要的網絡資源。現在流行的視頻網站,比如說Youtube、優酷網、土豆網,幾乎都是在使用漸進式下載技術。
近年來出現了基于HTTP的自適應流媒體傳輸系統,常見的有:Apple公司的HTTP Live Streaming(HLS),微軟的 SilverLight Smooth Streaming[3],以及 Adobe 的 HTTP Dynamic Streaming。這些系統都將視頻源切割成一個個數秒大小的視頻端(切片),并把每一段視頻轉碼成不同的質量級別;客戶端首先向服務器請求一個播放列表,播放列表中包含切片的基本信息(如切片持續時間,開始時間戳,以及先后順序),然后再按播放列表根據網絡狀況和緩存情況適時的向服務器請求相應質量級別的切片,這樣使用戶得到在不同帶寬條件下的較佳體驗[4]。可以發現,這些系統客戶端每下載一個切片,客戶端就需要和服務器重新建立一次連接;并且客戶端需要隨時更新播放列表才能從服務器獲得正確的切片。此外,由于系統的自適應功能是由客戶端驅動的,用戶均需要下載特定的播放器,如微軟的要安裝Silverlight插件,HLS只適用于Apple的一些系統中[3]。
為此,本文提出一種基于HTTP長連接的自適應流媒體傳輸系統,在該系統中,用戶向服務器發出請求后,服務器和客戶端就會建立一個HTTP長連接,然后服務器根據網絡狀況和發送情況適時的向客戶端發送相應質量和時間段的切片。該系統不僅利用了HTTP長連接技術,有效的減少頻繁建立連接帶來的網絡資源開銷;同時采取了服務器端驅動的自適應控制策略,對客戶端的要求較低,具有很強的通用性。
基于HTTP的自適應流媒體傳輸系統主要利用HTTP長連接和服務器端驅動的自適應控制策略。傳統的基于HTTP的流媒體系統通常采用HTTP短連接,即客戶端每接收一個切片,都需要像服務器發出請求,然后建立連接,發送數據,而切片通常很短,因而客戶端和服務器之間就在頻繁的建立和斷開連接,對網絡資源造成浪費。為此本文采取HTTP長連接,即客戶端與服務器端先建立連接,連接建立后就不再斷開,然后再進行報文發送和接收,這種方式下由于通信連接的一直存在,就避免了客戶端向服務器請求切片時頻繁的建立和斷開連接[2]。服務器端驅動的自適應控制算法指的是服務器端監測客戶端的播放狀況和當前的網絡環境,并根據其監測結果發送相應的數據給客戶端。
該系統中包括源端、服務器和客戶端3個部分組成,其中服務器為主要部分,它包括:源多碼率模塊、子流切片模塊、切片管理模塊、客戶端緩存區控制模塊、帶寬監測模塊、自適應控制模塊和網絡發送模塊。如圖1所示。源端將節目源發送至服務器,服務器對節目源進行相應處理等待并響應客戶端的請求,客戶端接收切片并播放,整個系統中服務器為主要部分。

圖1 系統設計總體框圖
服務器的源多碼率模塊將節目源下采樣成多種碼率級別,然后子流切片模塊將其得到的各個碼率級別的子流進行切片,將得到的切片送到切片管理模塊中,等待客戶端的請求,當客戶端向服務器發送請求時,兩者之間就建立起一個長連接,客戶端緩存區控制模塊監測客戶端播放狀況以及緩存區狀況,帶寬監測模塊監測當前的網絡狀況,自適應控制模塊根據客戶端緩存區控制模塊和帶寬監測模塊的結果控制網絡發送模塊向客戶端適時發送相應數據。
源多碼率模塊是指將高碼率高分辨率的節目源通過下采樣的方法轉化為多種碼率級別的節目子流,這里的多種碼率級別指的是相同分辨率下的不同碼率級別。
子流切片模塊是指將每個子流切割成一個個4~6 s的切片,每一個切片由若干個GoP(視頻圖像組)組成,對于不同碼率的同一段切片,要保證開始和結束的時間戳一致。該模塊產生的切片由切片管理模塊統一管理和調配,方便客戶端的請求及服務器的選擇。
客戶端的緩存區應保持在一個安全的范圍,如果發送的太快,緩存區產生上溢,雖不影響用戶的體驗,卻會造成網絡資源不必要的浪費;如果發送的太慢,緩存區產生下溢,則會讓客戶端播放產生停頓,影響用戶的觀看。因此客戶端緩存區控制模塊監測客戶端的緩存區狀況,并將獲得的信息提供給自適應控制模塊。
自適應控制模塊根據客戶端緩存區控制模塊和帶寬監測模塊的結果選擇相應的發送時間和碼率,具體方法見2.2 節。
帶寬監測模塊對網絡狀況進行監測,該模塊根據2.2節中介紹的帶寬預測方法進行帶寬預測。而網絡發送模塊通過HTTP協議向客戶端發送相應的切片。
進行自適應碼率控制一方面要考慮所發送視頻的碼率級別是否與當前的網絡狀況相符;另一方面還要考慮客戶端緩存區的數據量,如果客戶端緩存區的數據量太小,而發送的碼率級別比較大,則很有可能造成客戶端緩存區的下溢,影響客戶體驗[5-7]。本文的自適應碼率控制方法就是從這兩方面入手。
TCP的瞬時傳播速率是時刻變化的,所以用它來衡量網絡的傳送能力是不可行的。為此,本文利用相對較長一段時間的平均帶寬來衡量當前的網絡狀況,具體方法如下
假設當前帶寬為Bi,則可以根據之前發送每片時的平均帶寬進行預測,預測值為,預測值由之前發送的5片的平均帶寬 Bi-1,Bi-2,Bi-3,Bi-4,Bi-5得到。首先找到5 個帶寬中最小的2個Bk1,Bk2(Bk1<Bk2);再通過二者的加權和得到預測值。λ1,λ2為加權因子,計算公式如下

式中:發送第i-k個切片時的平均帶寬為

式中:MSSi-k為第 i- k個切片的大小;Tsi-k為發送第 ik個切片所用時間。
如果當前的帶寬與發送切片的碼率相符,則說明當前切片的碼率級別的選擇符合當前的網絡狀況;如果當前的帶寬小于發送切片的碼率,則說明選擇的碼率過大,需要切換到較低的碼率;如果當前的帶寬大于發送切片的碼率,則說明選擇的碼率過小,需要切換到較低的碼率。因此,可以根據當前平均帶寬的變化來控制即將發送切片的碼率。
設R1節目源經過源多碼率模塊處理后產生N種碼率級別的子流,它們的碼率分別是R1,R2,…,RN。而客戶端緩存區中媒體流可以播放的時間用tm來表示,設客戶端緩存區中允許的最小的媒體流的播放時間為tmin。
自適應控制流程如圖2所示。本文首先要保證客戶端的緩沖區數據在安全范圍內,防止緩沖區下溢,如果一旦發現緩沖區下溢,則立即將碼率下調至最低級別,并立刻發送切片;其次根據相應的原則對要發送切片的碼率進行調整。

圖2 自適應控制算法流程圖

式中μup和μdown為碼率切換的判斷系數。
當系統滿足上調碼率級別的條件時,則將發送的下一切片的碼率級別比上一切片高一個級別;當系統要下調碼率級別時,則將發送的下一切片的碼率級別Rnext調整至滿足如下條件

在進行自適應控制時,要保證客戶端的緩沖區在一個安全范圍內,不能產生上溢,更不可發生下溢,為此,設定發送兩片的時間間隔為ts,

本文將源端、服務器和客戶端放在一個局域網中,在客戶端通過Netlimiter軟件控制服務器與客戶端之間的網絡帶寬。本文的切片采用3種質量級別550 kbit/s,950 kbit/s和1800 kbit/s,每個切片長約4~6 s;而客戶端緩存區中媒體流允許的最小播放的時間為tmin=4000 ms。系統啟動后,運行穩定,對發送的1500片進行分析。
如圖3和圖4所示,本文系統在網絡環境發生變化時,能及時做出響應,將要發送的切片的質量級別切換至相應的級別。可以看出當網絡狀況穩定在很好的狀況時,系統穩定的發送最高質量級別的切片,當網絡狀況穩定在較差的狀況時,系統發送的切片的質量級別會出現波動,但從圖5和表1中可以發現,此種狀況下,系統發送的大部分切片的質量級別是與帶寬值相符的,而出現波動的原因有二:一方面,發送切片的質量級別是一個平均值,每一個切片的平均碼率是變化的,而當設定的帶寬值與切片質量級別相近時,會出現切片的平均碼率大于平均帶寬的狀況;另一方面,網絡的平均帶寬只是評價網絡狀況的一個指標,網絡環境是時刻變化的,有可能出現擁塞等其他影響數據傳輸的狀況出現。

圖3 網絡環境變化下的切片質量級別分布—1
圖6展示的是客戶端緩存區中所剩數據可以播放的時間,從圖中可以看到,該時間絕大部分情況下大于tmin,并始終在0以上,說明沒有出現下溢的情況;同時,該時間在10 s附近上下浮動,亦沒有出現顯著的上溢,說明本文系統讓客戶端緩存區保持在一個安全范圍內,在保證客戶流暢觀看的條件下,節省了帶寬資源。



表1 不同帶寬穩定狀況下切片質量級別分布表

圖6 客戶端緩存區數據量的變化
本文的基于HTTP長連接的自適應傳輸系統中客戶端無需安裝特殊的插件,具有很強的適應性和通用性;同時,由于采用了HTTP長連接,避免了客戶端向服務器請求切片時頻繁的建立和斷開連接,節省了網絡資源。
本文系統所采用的自適應控制策略能夠很好的適應網絡環境,當網絡帶寬發生變化時,系統對推送的切片的質量級別及時做出調整,同時在網絡狀況穩定時,切片的質量級別亦能基本符合帶寬狀況。本文系統實現了客戶端緩存區的數據量在一定范圍波動,沒有發生下溢確保了客戶端的播放流暢,亦未發生上溢,防止了過度的數據累積。
[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]李爭明,張佐,葉德鍵.自適應流媒體傳輸方案研究及其應用[J].計算機工程,2006,32(12):226-228.
[7]祝睿杰,別紅霞.影響流媒體系統視頻質量的關鍵參數仿真測試研究[J].電視技術,2009,33(S2):228-231.