童翔威 周鐵軍
摘要:隨著計算機網(wǎng)絡(luò)的流媒體系統(tǒng)在日常工作和生活中應(yīng)用越來越廣泛,流媒體數(shù)據(jù)傳輸和網(wǎng)絡(luò)帶寬之間的矛盾也日益劇烈和明顯。在兩者都已經(jīng)固定的情況下,就需要應(yīng)用合適的網(wǎng)絡(luò)傳輸策略,有效利用媒體流的特點和網(wǎng)絡(luò)資源,傳輸流媒體數(shù)據(jù)流。本文重點研究了擁塞控制策略中的分層策略,針對現(xiàn)在的分層策略中各層之間有著優(yōu)先級不同的限制、靈活性不高的缺陷,提出了一種先分層后編碼傳輸?shù)姆謱咏M播策略,并給出了較詳細(xì)的試驗方案和實現(xiàn)方法,最后對該策略的特點進(jìn)行了討論。
關(guān)鍵詞:流媒體;擁塞控制;分層編碼策略
中圖分類號: 文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)18-20ppp-0c
The Research of Congestion Control in Streaming Media Transmission
TONG xiangwei1 ZHOU tiejun2
(A graduate student of Computer College in Central south university of forestry and technology; Hunan, Changsha, 410004; Professor of computer college in Central south university of forestry and technology; Hunan, Changsha, 410004)
ABSTRACT: With the streaming media system on computer network more and more extensive application in their daily work and lives, the conflict between network bandwidth and data transfer is also increasingly severe and obvious. If both factors have been fixed, there will be a need to apply the appropriate strategy for network transmission and effective use of the media flow characteristics and network resources to transfer streaming data flow. This article focuses on layered strategy in congestion control strategy. For between each layered strategy there are defects of different priority restrictions and low flexibility, this article brings forward a layered multicast strategy of coding after layer, and gives a detailed test and realization method, and lastly discusses the features of this strategy.
KEY WORDS: Streaming Media; Congestion Control; Layered Coding Strategy
1 前言
隨著計算機網(wǎng)絡(luò)和流媒體技術(shù)的發(fā)展,基于計算機網(wǎng)絡(luò)的流媒體系統(tǒng)在日常工作和生活中應(yīng)用越來越廣泛。由于圖像的信息量和數(shù)據(jù)量比較大,對視頻數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)傳輸時會占用大量的網(wǎng)絡(luò)資源,容易造成網(wǎng)絡(luò)擁塞,嚴(yán)重影響網(wǎng)絡(luò)的傳輸質(zhì)量。近幾年來各種相關(guān)機構(gòu)對流媒體和網(wǎng)絡(luò)進(jìn)行大量的研究,對現(xiàn)有傳輸策略進(jìn)行了各種改進(jìn),提出了多種對于視頻傳輸中網(wǎng)絡(luò)流量控制的方法。比如為在網(wǎng)絡(luò)上實時發(fā)布視頻數(shù)據(jù),提出了多種分層組播策略,這些傳輸策略大大提高了視頻數(shù)據(jù)傳輸?shù)馁|(zhì)量。但是,現(xiàn)有的分層策略各層之間有著優(yōu)先級不同的限制,靈活性不高。為解決這一問題,本章在簡單討論視頻流和網(wǎng)絡(luò)傳輸?shù)奶攸c之后,提出了一種先分層后編碼傳輸?shù)姆謱咏M播策略,并給出了較詳細(xì)的試驗方案和實現(xiàn)方法,最后對該策略的特點進(jìn)行了討論。
2 網(wǎng)絡(luò)傳輸?shù)膯栴}
現(xiàn)有的網(wǎng)絡(luò)一般都是異質(zhì)性網(wǎng)絡(luò),即網(wǎng)絡(luò)由特性不同的子網(wǎng)組成,這些特性包括網(wǎng)絡(luò)有不同的帶寬,不同的QoS質(zhì)量保證,和具有不同的傳輸時延,這些特性都會對數(shù)據(jù)的網(wǎng)絡(luò)傳輸造成不良影響。所以在網(wǎng)絡(luò)上傳輸視頻等流媒體數(shù)據(jù)時,一定要解決網(wǎng)絡(luò)傳輸中的三類問題:數(shù)據(jù)丟失/錯誤、延遲和傳輸時延變化也就是網(wǎng)絡(luò)抖動[1]。
3 現(xiàn)有解決方法分析
由于流媒體應(yīng)用,無論是分布式應(yīng)用還是交互式應(yīng)用,都是C/S結(jié)構(gòu)的應(yīng)用(即使B/S結(jié)構(gòu)一般也是在客戶端瀏覽器中使用組件處理流媒體和其他數(shù)據(jù)),所以對網(wǎng)絡(luò)流量的控制一般分為兩類:一類是基于服務(wù)器的控制方法[2-5],另一類是基于客戶端的控制方法。其中基于服務(wù)器的流量控制是利用服務(wù)器根據(jù)客戶端接收狀況調(diào)節(jié)編碼輸出的碼率的一種流量調(diào)節(jié)方法;基于客戶端的流量控制是利用客戶端選擇接收流的方式來控制網(wǎng)絡(luò)上的流媒體數(shù)據(jù)流量。
另外一種是利用分層編碼傳輸(Layered Coding)策略控制網(wǎng)絡(luò)流量。分層策略是指,將媒體流按某種標(biāo)準(zhǔn)分配到不同的傳輸通道傳輸,客戶端根據(jù)自身的特點有選擇地接收各個通道的數(shù)據(jù)的一種流量控制策略。分層編碼策略有多種實現(xiàn)方法,其中包括:質(zhì)量分層或SNR(Signal-to-Noise Ratio)分層、空間分層、時間分層、頻率分層或上面這些方式的組合[6,7]:
質(zhì)量分層是對原始圖像從基本層開始,以越來越精細(xì)的量化步長進(jìn)行量化,從而得到不同質(zhì)量的幾層數(shù)據(jù)流。接收端通過逐步加入并接收解碼這些數(shù)據(jù)流,可以得到越來越清晰的圖像。
空間分層是把原始圖像在空間上劃分為幾部分,然后進(jìn)行編碼傳輸,基本層解碼后可以獲得分辨率較低的圖像,各增強層解碼后可增加現(xiàn)有圖像的分辨率。
時間分層是視頻服務(wù)器在對視頻編碼時,按照時間,把圖像分配到不同的層上,即客戶端可以通過逐步加入不同的層,解碼得到不同幀率的視頻流。目前實現(xiàn)的方法一般時將編碼后的視頻流,按照每幀在解碼時的重要性分配到不同的層中,客戶端可以通過接收解碼不同的層,得到不同質(zhì)量的視頻。
時間分層方法一般應(yīng)用于對圖像質(zhì)量要求較高而沒有對幀率提出過高要求的應(yīng)用中,而其它分層方法一般應(yīng)用于對時間連貫性比較高的應(yīng)用當(dāng)中。
由上述兩種時間分層方法可以看出,由于增強層的解碼需要基本層或前一層的碼流數(shù)據(jù),所以,當(dāng)基本層或?qū)訑?shù)比較低的數(shù)據(jù)流中出現(xiàn)丟幀時,丟幀所造成的解碼錯誤有可能擴散到之后的解碼過程中,而且,客戶端必須按順序加入各層,帶寬調(diào)整方面也不是十分靈活。為解決這些問題,本文提出了一種先分層后編碼的時間分層傳輸策略,這種策略使傳輸?shù)母鲗又g沒有非常嚴(yán)格的制約關(guān)系,都各自編碼解碼,使客戶端的選擇更加靈活。
4 先分層后編碼的方法
4.1 分層原理
我們觀看的數(shù)字視頻信息,都是由一串動作連貫的圖片組成。之所以圖像連貫,是因為圖像中動作的運動頻率遠(yuǎn)遠(yuǎn)低于圖像的采樣頻率,所以相鄰的兩幅圖片之間的差異也就比較小,這也是當(dāng)前很多視頻編碼思想的基礎(chǔ)。
同時,RGB視頻流由一串連續(xù)的未壓縮的圖片序列組成,幀和幀之間沒有依賴關(guān)系,一幀數(shù)據(jù)的顯示并不要求其它幀的數(shù)據(jù)。在RGB視頻序列中抽取部分幀之后,視頻仍然可以正常播放,只不過幀率有所降低,只要抽取的幀不是太多,對視頻主觀質(zhì)量的影響并不嚴(yán)重[3]。
根據(jù)上述兩個條件,如果我們將視頻采集設(shè)備獲得的原始RGB視頻序列,按照一定的規(guī)律,均勻地分成幾個視頻序列,則各個視頻序列都能以不同地視頻質(zhì)量反映原始視頻序列所描述地內(nèi)容,如果我們將這些視頻序列按照原來地排列順序再重新排列起來,則可以得到原來的視頻序列,如圖1所示。這就是本文所提出的先分層后編碼傳輸?shù)牧髁靠刂撇呗缘乃枷牖A(chǔ)。
圖1 RGB格式數(shù)據(jù)流的分離和組合
4.2 流媒體處理的設(shè)計實現(xiàn)
這里的流媒體處理是指對媒體流的處理,包括RGB流的分離和合成、流媒體數(shù)據(jù)的網(wǎng)絡(luò)發(fā)送和接收四個模塊以及整個過程的控制功能。
在本節(jié)所涉及的四個組件都使用DirectShow的Filter實現(xiàn),而對整個流媒體處理過程的控制利用Filter Graph來實現(xiàn)。在DirectShow中,RGB的幀和Filter Graph中的Sample相對應(yīng),我們可以通過操作Sample對象來操作RGB流中幀數(shù)據(jù)。RGB分離Filter有一個輸入Pin和多個輸出Pin,是一個Splitter Filter,RGB合成Filter有多個輸入Pin一個輸入Pin是一個Mixer Filter,網(wǎng)絡(luò)發(fā)送Filter只有輸入Pin沒有輸出Pin,它將流媒體數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上,是一個Renderer Filter,網(wǎng)絡(luò)接收Filter從網(wǎng)絡(luò)上接收流媒體數(shù)據(jù),只有輸出Pin,是一個Source Filter。其中流媒體數(shù)據(jù)的網(wǎng)絡(luò)發(fā)送和接收Filter實現(xiàn)了部分上述的RTP協(xié)議的功能。
根據(jù)上面的敘述我們可以知道,RGB分離Filter的主要功能是將從輸入Pin接收來的RGB數(shù)據(jù)流按照一定的規(guī)律分配給Filter的幾個輸出Pin,如圖2所示。
圖2 Splitter Filter結(jié)構(gòu)示意圖
4.3 基于分層的擁塞控制
基于分層的擁塞控制是指客戶端如何選擇加入和退出各層從而得到一個合適的網(wǎng)絡(luò)流量。為了控制方便,對分層組播做如下的幾點規(guī)定:
所有的組(層)使用同一個組播IP地址,各組之間以RTP端口號區(qū)分。
RTP端口號從小到大,幀率依次增加。并假設(shè)客戶可以通過其它途徑得到最小的端口號。
由于流媒體內(nèi)容的改變,編碼后的碼流流量有可能有所變化,所以流媒體服務(wù)器需要及時通過RTCPAPP數(shù)據(jù)包通知各客戶端系統(tǒng)中各層的數(shù)據(jù)流量。
APP數(shù)據(jù)包中Application-dependent data部分的格式如下圖3定義
圖3 Application-dependent data格式
圖中各字段的含義如下:
Count of Layers:32位整數(shù),表示在會話中的層數(shù)。
Port_1~Port_n:16位,表示各層的RTP端口號。
Flow Rate:16位,表示該層每秒發(fā)送的字節(jié)數(shù)。
客戶端加入會話以后,首先加入端口號最小的層中接收流媒體數(shù)據(jù),這時客戶端得到主觀質(zhì)量最差的視頻流。當(dāng)客戶端接收到APP RTCP數(shù)據(jù)報文后,將各層的流量進(jìn)行組合并排序后保存在一數(shù)組中??蛻舳耸褂蒙鲜鰯?shù)組中的組合進(jìn)行嘗試接收數(shù)據(jù),直到得到一個合適的流量為止,這里所謂合適的流量是指,此流量是該客戶端可以接收到的最好質(zhì)量數(shù)據(jù)流量。
當(dāng)在接收數(shù)據(jù)過程中,RTP數(shù)據(jù)報文丟失率增高時表明,網(wǎng)絡(luò)上的可用帶寬在減少,則客戶端嘗試通過數(shù)據(jù)流量低的組合接收數(shù)據(jù),直到得到一個合適的流量為止。
在順利接收流媒體數(shù)據(jù)一段時間之后,客戶端嘗試使用流量更高的組合接收數(shù)據(jù),并在得到一個合適的流量后為止。
4.4 實驗測試
由于在Windows平臺上該策略的軟件實現(xiàn)利用了DirectShow架構(gòu),所以可以利用DirectShow提供的Filter測試工具GraphEdit來實驗系統(tǒng)的運行效果。在GraphEdit中,F(xiàn)ilter被以圖形化的形式顯示在界面上,操作簡單、靈活而且非常直觀。
具體到本文的實驗,系統(tǒng)的仿真實現(xiàn)可以分為三部分:第一部分為視頻服務(wù)器部分,用來分層發(fā)送數(shù)據(jù);第二部分為視頻客戶端部分,用來接收播放視頻數(shù)據(jù);第三部分是數(shù)據(jù)記錄部分,把數(shù)據(jù)發(fā)送量和接收量記錄下來以供分析。本文的實驗中使用一塊視頻采集卡采集視頻數(shù)據(jù),其輸出視頻格式為RGB555。采集到視頻數(shù)據(jù)后,利用實現(xiàn)的分層Filter對RGB數(shù)據(jù)進(jìn)行分層,然后編碼傳輸。
數(shù)據(jù)接收端首先利用實現(xiàn)的數(shù)據(jù)接收Filter接收數(shù)據(jù)后,解碼成RGB數(shù)據(jù)流,然后通過數(shù)據(jù)合成Filter將多路視頻數(shù)據(jù)合成為一路視頻數(shù)據(jù),播放輸出。
數(shù)據(jù)記錄的目的是為了記錄下數(shù)據(jù)傳輸?shù)牧?,來評價視頻發(fā)布的質(zhì)量。本文在實驗過程中,首先將視頻接收和發(fā)送的數(shù)據(jù)保存在AVI文件中,這樣可以記錄下具體傳輸?shù)臄?shù)據(jù)和數(shù)據(jù)傳輸?shù)臅r間長度,如圖4所示。然后將AVI文件中的視頻數(shù)據(jù)寫入二進(jìn)制文件,這樣可以得到網(wǎng)絡(luò)上發(fā)送的數(shù)據(jù)的量如圖5所示。將AVI中的視頻數(shù)據(jù)寫入文件的原因是,當(dāng)系統(tǒng)寫AVI文件時,寫入的不只是視頻數(shù)據(jù),還有AVI文件的格式信息等其他數(shù)據(jù)。
圖4 接收并保存為AVI文件
圖5 寫視頻數(shù)據(jù)到文件
5 總結(jié)
根據(jù)先分層后編碼傳輸?shù)脑O(shè)計思想和實現(xiàn)方法,可以分析出,這種流量控制策略有如下特點:
1)實現(xiàn)簡單,系統(tǒng)實現(xiàn)過程中不必考慮圖像的具體內(nèi)容,只需處理原始的RGB視頻流,而RGB視頻流,結(jié)構(gòu)簡單,容易對其進(jìn)行操作;2) 對編碼格式?jīng)]有依賴性,傳輸策略只規(guī)定了原始數(shù)據(jù)流應(yīng)該是RGB格式的數(shù)據(jù)流,解碼后的數(shù)據(jù)流也應(yīng)該是RGB數(shù)據(jù)流,而對編碼后的數(shù)據(jù)流格式?jīng)]有任何要求;3) 適合實時應(yīng)用,由于在流媒體處理時主要是對原始的未壓縮的RGB數(shù)據(jù)流進(jìn)行分層,此策略適合獲得RGB數(shù)據(jù)的實時應(yīng)用,比如實時組播或?qū)崟r點對點傳輸。
綜上所述,結(jié)合RTP實時傳輸協(xié)議,這種分層策略可以較好地解決網(wǎng)絡(luò)視頻傳輸中的數(shù)據(jù)丟失、延遲和抖動等問題,控制網(wǎng)絡(luò)擁塞的發(fā)生。在網(wǎng)絡(luò)狀況較好的情況下,客戶端選擇較多的層接收數(shù)據(jù)可以得到質(zhì)量較高的視頻圖像。
參考文獻(xiàn):
[1] 李捷,周云嫻,王雨等.網(wǎng)絡(luò)視頻編碼中的分層技術(shù)[J].計算機工程與應(yīng)用,1999(8):81-86.
[2] 王軍,吳志美.交換式以太網(wǎng)中連續(xù)實時流媒體的可靠組播[J].軟件學(xué)報,2004,15(2):229-237.
[3] 趙黔莉,涂國防.Internet視頻傳輸?shù)膿砣刂撇呗訹J].計算機工程,2004,30(1):144-147.
[4] 徐建軍,李強.視頻監(jiān)控系統(tǒng)中基于MPEG-1數(shù)據(jù)流的丟幀機制[J].空軍雷達(dá)學(xué)院學(xué)報,2002,16(4):28-30
[5] Sun Y.S.,Tsou F.-M.,Chen M.C.,Tsai,Z.A TCP-friendly congestion control scheme for real-time packet video using prediction[C].Global Telecommunications Conference,1999. GLOBECOM' 99,1999(3):1818-1822.
[6] Abdul H. Sadka.Compressed Video Communications(影印版)[M].北京:科學(xué)出版社,2004,5:109-112.
[7] Yao Wang,Jrn Ostermann,et al著,候正信等譯.視頻處理與通信[M].北京:電子工業(yè)出版社,2003:269-287.
收稿日期:
作者簡介:童翔威(1983-),男,漢族,湖南株洲,碩士研究生,研究方向:計算機網(wǎng)絡(luò)擁塞控制。