盧 靜,李 華
(河南工程學院 計算機科學與工程系,河南 鄭州 451191)
隨著計算機網(wǎng)絡和視頻壓縮技術的快速發(fā)展,多媒體技術的研究和應用越來越多地受到重視.由于多媒體技術擁有的數(shù)據(jù)量大、對實時性要求比較強的特點,導致在IP網(wǎng)絡中傳輸時,其QoS難以得到保證.因此,如何在有限的帶寬上提高多媒體信息的傳輸質(zhì)量成為人們研究的重點.由于傳統(tǒng)網(wǎng)絡層協(xié)議和傳輸層協(xié)議(如TCP/IP、UDP等)的設計初衷是用來傳輸非實時數(shù)據(jù)的,大多數(shù)設計決策都沒有考慮網(wǎng)絡上的延時、帶寬和跳變等問題.這種策略導致在目前的網(wǎng)絡上,傳統(tǒng)網(wǎng)絡協(xié)議不能很好地處理多媒體數(shù)據(jù)的傳輸.為了解決上述問題,本文提出了一種基于RTP/RTCP協(xié)議的實時視頻流網(wǎng)絡帶寬自適應傳輸算法.一般的網(wǎng)絡帶寬自適應傳輸算法[1,2]只是在傳統(tǒng)的AMD算法的基礎上,對增加因子和減小因子做定性的改變,從而動態(tài)調(diào)整碼流的發(fā)送速率.本文的算法則是根據(jù)網(wǎng)絡的不同狀態(tài)動態(tài)確定增加因子和減小因子的值.實驗表明,該算法的引入可以有效地提高視頻流在傳輸過程中的QoS.
RTP/RTCP(Real-time Transport Protocol/Real-time Transport Control Protocol)是由IETF基于多媒體傳輸?shù)奶厥庑枨蠖x的用于在互聯(lián)網(wǎng)上傳輸實時數(shù)據(jù)的一套標準協(xié)議,在承載多媒體流的運行環(huán)境下,RTP/RTCP可以提供給應用層相當大自由度的多媒體流控制空間和方式.RTP/RTCP運行在UDP協(xié)議層之上,分為RTP數(shù)據(jù)部分和RTCP控制部分.
RTP協(xié)議為用戶提供端到端的連續(xù)媒體數(shù)據(jù)的實時傳輸服務,支持多播或單播網(wǎng)絡;RTP協(xié)議為實時業(yè)務提供端到端的傳輸服務,向接收端點傳送恢復實時信號所必需的定時和順序信息,依靠時間戳信息實現(xiàn)流的同步.RTP包頭結構如圖1所示.
0 31
RTCP協(xié)議是RTP協(xié)議的控制部分,其主要功能是為應用程序提供會話質(zhì)量的信息,用于實時監(jiān)控媒體數(shù)據(jù)的傳輸質(zhì)量,為系統(tǒng)提供擁塞控制和流控制.RTCP提供五種類型的控制包:(1)發(fā)送方報告包SR(Sender Report)發(fā)送方發(fā)送的統(tǒng)計信息;(2)接收方報告包RR(Receiver Report)接收方的接收統(tǒng)計信息;(3)源描述項包SDES(Sender Description)描述與會話源相關的信息;(4)應用包APP(Application)開發(fā)新的應用;(5)離開包BYE:離開會話時的報告包.RTCP控制協(xié)議需要和RTP協(xié)議一起配合使用,當應用程序啟動一個RTP會話時將同時占用兩個端口,分別供RTP和RTCP使用,通過使用不同的端口號,可以把RTP信息包和RTCP信息包區(qū)分開來.通常RTCP會采用與RTP相同的分發(fā)機制,向會話中的所有成員周期性地發(fā)送控制信息,應用程序通過接收這些數(shù)據(jù),從中獲取參與會話者的相關資料及網(wǎng)絡狀況、丟包率等反饋信息,從而對提供QoS或者對網(wǎng)絡狀況進行診斷.
用戶一般不希望媒體流的變化速率過快,所以要合理調(diào)整自適應算法,減少媒體流的抖動,提高媒體流傳輸?shù)钠椒€(wěn)性.
傳統(tǒng)的碼流調(diào)整算法采用的是AMD算法,即加性增乘性減的方法.當網(wǎng)絡出現(xiàn)擁塞時,使用一個乘法因子α快速降低碼流的發(fā)送速率;當擁塞消除后,使用一個加法因子β來緩慢提高碼流的發(fā)送速率.用x(n+1)和x(n)分別表示n+1時隙和n時隙碼流的發(fā)送速度,t(n)表示時隙n內(nèi)的丟包率,k1、k2表示丟包率的兩個門限值,則傳統(tǒng)的碼流調(diào)整算法可表示成如下形式:
(1)
RTP是根據(jù)RTCP所反饋的信息來進行碼率的調(diào)整的,但RTCP的報文發(fā)送具有一定的時間間隔.所以,如果減小因子α選取得過大,碼率降低得就會很快,信道的利用率在碼率沒有恢復到一定程度前會較低.如果α取值過小,則擁塞程度得不到及時地緩解.對于增加因子β,如果取值太小,碼率的增幅就會太小,會降低網(wǎng)絡帶寬的利用率.為了解決上述問題,可以將α,β設為一個變量,使用變量來調(diào)整碼率.
設X是上次發(fā)生擁塞時的RTP流的速率,R,S是常數(shù)(0
(1) 初始時,即RTP流第一次進入網(wǎng)絡,則:
α=R,β=S×x(n)
(2)
(2) 當網(wǎng)絡發(fā)生擁塞時,按公式(1)降低碼率;
(3) 擁塞緩解后,如果x(n) x(n)+R α=R,β=S×x(n) (3) (4) 擁塞緩解后,如果x(n)>X/2 且 x(n)+R>X,X-x(n)>K,則: α=m×(X-x(n)),β=S, (0 (4) (5) 擁塞緩解后,如果x(n)>X/2且 x(n)+R>X,X-x(n) α=m×(X-x(n)),β=S×x(n) (5) 該算法的基本思想是利用網(wǎng)絡發(fā)生擁塞時的信息來控制碼率的增幅.當網(wǎng)絡發(fā)生擁塞時,記下此時的碼流速度作為上一次擁塞速度X,同時按照公式(1)快速降低碼流.當擁塞緩解后,若此時的碼率滿足(3),則快速增加碼流的發(fā)送速率;若此時的碼率滿足(4),則讓碼流的發(fā)送速度進行慢增長,同時令減小因子等于m×(X-x(n));若此時的碼率滿足(5),即RTP流已經(jīng)充分接近上次發(fā)生擁塞時的速率,若此刻網(wǎng)絡還沒出現(xiàn)擁塞,則說明上次網(wǎng)絡擁塞是臨時的,應減小α增加β, 令β的取值恢復到快速增長階段的取值. 根據(jù)上述討論,我們實現(xiàn)了一個基于RTP的H.264嵌入式多路視頻服務器[3],系統(tǒng)采用客戶機/服務器模式,其體系結構如圖2所示. 圖2 視頻服務器軟件體系結構圖Fig.2 Video server software architecture 視頻服務器是該系統(tǒng)的核心,工作在嵌入式Linux平臺上,服務器端將采集到的視頻進行本地顯示和存儲,將壓縮后的視頻數(shù)據(jù)發(fā)送到網(wǎng)絡中,并對用戶的請求做出響應.服務器端的軟件部分采用模塊化的程序設計思想,從功能上服務器端的軟件分為5個模塊. 該模塊主要完成兩項工作:采集視頻信息;轉換圖像格式為YUV格式.該模塊采用Linux的v4l[4]實現(xiàn). 該模塊完成對采集的視頻信息進行壓縮編碼.考慮到系統(tǒng)的靈活性及經(jīng)濟性,系統(tǒng)采用了利用軟件實現(xiàn)數(shù)據(jù)壓縮編碼的方案,使用H.264標準進行壓縮.H.264壓縮標準[5]是一種新的編碼方法,與其他壓縮編碼方式比較,利用H.264標準可以獲得更高的壓縮比及更好的圖像質(zhì)量.H.264編碼器都是開源的,可以從網(wǎng)上下載,此處用的是T264,對采集到的YUV格式的數(shù)據(jù)進行逐幀壓縮. 該模塊負責視頻信息的網(wǎng)絡傳輸,將視頻數(shù)據(jù)分組、打包后發(fā)送到網(wǎng)絡中.由于網(wǎng)絡視頻信息傳輸實時性的要求,故本模塊使用了RTP傳輸協(xié)議.在實際網(wǎng)絡傳輸過程中,網(wǎng)絡帶寬的變化往往不可預料,網(wǎng)絡的抖動會影響視頻傳輸?shù)馁|(zhì)量.因此,該傳輸模塊需具備網(wǎng)絡帶寬自適應性,這可通過RTCP的反饋信息實現(xiàn),通過RTP接口,根據(jù)監(jiān)控端反饋的網(wǎng)絡狀態(tài)信息進行碼流速率的動態(tài)調(diào)整.具體過程為:編碼后的視頻信息經(jīng)RTP組件發(fā)送至網(wǎng)絡,在傳輸過程中,監(jiān)控端的QoS監(jiān)視模塊根據(jù)接收包的丟包率和延遲情況診斷網(wǎng)絡的擁塞狀況,反饋控制模塊對這些信息分析后通過RTCP包向碼率控制器反饋網(wǎng)絡信息,碼率控制器即可根據(jù)網(wǎng)絡狀態(tài)進行碼率的自適應調(diào)整.其中,碼率控制器部分采用上文中的碼率調(diào)整算法,完成碼流的動態(tài)調(diào)整,其傳輸模型如圖3所示. 圖3 數(shù)據(jù)傳輸模型Fig.3 Data transmission model 該模塊負責將編碼后的視頻數(shù)據(jù)存儲到磁盤中,并將視頻文件信息寫入到嵌入式數(shù)據(jù)庫MySQL,以供檢索和回放.在本模塊的存儲管理中,采用了等長分組存儲策略:將待存儲的視頻信息按照時序關系分為若干個分組,每個分組被存儲于一個大小固定的存儲單元內(nèi). 該模塊根據(jù)用戶界面發(fā)出的或網(wǎng)絡傳送來的控制命令,控制解碼器,完成對云臺、鏡頭等設備的控制. 本文提出了一種基于RTP的自適應網(wǎng)絡傳輸策略,利用該策略可以動態(tài)調(diào)整碼流的發(fā)送速率.在該策略的基礎上,采用H.264編碼技術,設計了一個多路嵌入式視頻服務器.試驗證明,對于包含有多路視頻服務器的嵌入式系統(tǒng),上述網(wǎng)絡傳輸部分能夠很好地完成視頻數(shù)據(jù)的實時傳輸,網(wǎng)絡自適應能力良好. 參考文獻: [1] WU D, HOU Y T. Transporting real-time video over the Internet challenge and approaches[C]. Proceedings of the IEEE, 2000, 88(12): 1 855-1 877. [2] 張正華,余松煜,陳軍華. 一種針對視頻點播系統(tǒng)的RTP/RTCP自適應算法[J].計算機工程,2006,32(6):223-226. [3] 鐘玉琢.流媒體和視頻服務器[M].北京:清華大學出版社,2003. [4] 范永開.Linux應用開發(fā)技術詳解[M].北京:人民郵電出版社,2006. [5] THOMAS W, GARY J S, GISLE B,et al. Overview of the H.264/AVC video coding standard[C]. IEEE Transactions on Circuits and Systems for Video Technology, 2003, 13(7): 560-576.3 多路嵌入式視頻服務器的實現(xiàn)
3.1 視頻采集模塊
3.2 壓縮編碼模塊
3.3 網(wǎng)絡傳輸模塊
3.4 存儲管理模塊
3.5 設備控制模塊
4 結束語