摘要:分析了以RTP包傳輸視頻數據,并以RTCP包進行控制的傳輸機制。根據3GPP規范和相關協議,設計實現了針對AVS-M碼流的負載包、重傳包和六種不同的RTCP包,包括引入的FB包。建立了一個包傳輸和控制系統。在立即反饋的基礎上提出了一種基于分層重傳的差錯控制機制。
關鍵詞:RTP/RTCP;包格式;傳輸和控制系統; 差錯控制機制
中圖法分類號:TP393文獻標識碼:A
文章編號:1001-3695(2006)09-0234-03
隨著3G移動技術的不斷發展和成熟,無線網絡的帶寬已經能夠滿足視頻信息的要求,而視頻流媒體也成為未來的應用熱點之一。我們參考3GPP相關技術規范,在中國移動視頻標準AVSM技術的基礎上建立了一個3G視頻流媒體點播系統。而在實際應用中,3G流媒體系統應提供一個相對完善的QoS機制。QoS機制包括擁塞控制和差錯控制兩個方面。本文在擁塞控制的基礎上,建立了一個適用于差錯控制的基于AVSM碼流的RTP/RTCP包傳輸和控制系統。我們設計了傳輸AVSM視頻數據的RTP包和傳輸控制信息的RTCP包,在系統中實現了打包和解包功能。根據實際需要,在系統中采用立即反饋機制進行RTCP控制,并提出了一個適用的基于分層重傳的應用層差錯控制機制。另外,該文考慮了由差錯控制引起的擁塞控制,并給出了解決方案。
13G流媒體系統結構
在前期工作中,我們根據3GPP相關規范[1]和中國視頻標準AVSM[2]建立了3G視頻流媒體系統。其結構如圖1所示,主要包括四大部分,即視頻編/解碼器、AVSM碼流的3GP文件生成、流媒體服務器和客戶端。3G流媒體系統在應用過程中需要完成會話建立、管理和媒體傳輸。因此,流媒體服務可以分為會話層和傳輸層。在應用過程中,系統通過RTSP/SDP協議實現會話的建立和管理;通過RTP/RTCP協議實現媒體數據的傳輸和控制。本文重點討論媒體數據的傳輸及差錯控制。
2RTP/RTCP和系統中使用的包
實時傳輸協議(RealtimeTransportProtocol,RTP)[3]是針對多媒體數據流的一個傳輸協議,其目的是提供時間信息和實現流同步。RTP本身只提供實時數據的傳輸,并不保證QoS或可靠性傳輸,也不提供流量控制或擁塞控制。它依靠RTCP來提供這些服務。
實時傳輸控制協議(RealtimeTransportControlProtocol,RTCP)[3]負責管理傳輸質量在當前應用進程之間交換控制信息。在RTP會話期間,各參與者周期性地傳送RTCP包,包中含有已發送的數據包數量、丟失的數據包數量等統計資料。因此,服務器可以利用這些信息動態地改變傳輸速率,甚至改變負載類型。RTCP主要有四個功能[4]:
(1)QoS反饋。反饋信息包括發送方和接收方報告,其中包含的信息有丟包率、丟包數、延遲和抖動。這些反饋可以用來進行擁塞控制,也可以用來監視網絡和診斷網絡中的問題。
(2)參與者識別。提供全局唯一的信源描述信息,包括姓名、電話號碼等。
(3)調整RTCP包的發送率。
(4)媒體間同步。發送方報告中含有實時指示和相應的RTP時間戳,這些信息用于同步。
RTP包包括包頭和負載兩部分,圖2是RTP包頭的格式。其中PT長度為七位,表示RTP包負載的類型,如31表示H.261類型的負載;SequenceNumber長度為16位,表示包的順序號,用于判定包的丟失,如接收端收到序列號為86和89的包,則可判斷丟失了87,88;Timestamp長度為32位,用于提供包內第一個字節的采樣時間,可以為播放提供同步功能;SSRC同步源標志符,表示包的來源。
RTP/RTCP包的傳輸是在UDP和TCP之上的,如圖2所示。在實際應用中使用相鄰的兩個端口號。RTP包頭的格式如圖3所示。
RTP負載格式依賴于具體的編/解碼器,我們的系統依賴于AVSM編/解碼器,并采用其中的NAL機制進行打包。
2.1AVSM碼流及其RTP負載格式
AVSM碼流按照編碼方式分為I幀和P幀,每幀由連續的條帶組成,條帶又由宏塊組成。本文參考文獻[5]實現了AVSM碼流RTP包格式。AVSM碼流可以用單包、復合包、分裂包來傳送NAL單元,如對單包模式,即每個包必須只包含一個NAL單元,其負載格式如圖4所示。
F值占一位,值0表示NALU中不宜包含比特錯誤或其他語法錯誤。值1表示NALU頭和凈載中可能包含比特錯誤或其他語法錯誤。解碼器最簡單的操作是將其丟棄,然后進行錯誤掩蓋。
NRI值占兩位,除了必須符合AVSM視頻標準中的規定之外,NRI表示相對傳輸優先級。我們可以利用這個信息更好地保護更重要的NAL單元。優先級由高到低的NRI值依次為11b,10b,01b,00b。序列參數集、圖像參數集和IDR圖像對應的NALU中的NRI值宜為11b。
Type表示凈載的格式類型,包括單包、復合包和分裂單元,相應類型可參考文獻[5]。
根據文獻[6],我們設計并實現了AVSM碼流的重傳包。重傳包的格式與原始包的格式相同,只是在負載的頭部加上了16位OSN標志域用于表示要重傳的原始序列號。OSN用于接收端判斷該包所在碼流的位置。
2.2RTCP包及其應用
我們設計并實現了SR,RR,SDES,BYE,APP五種RTCP包,并且根據實際需要設計了立即反饋包FB[5]。這幾種包可以單獨作為RTCP報告包,也可以組成復合包。SR和RR分別傳送發送方報告和接收方報告;SDES用于表述源的信息,其中的CNAME選項必不可少;BYE用于傳輸會話結束時的控制信息;APP則用于傳輸相應的應用數據。我們采用RTCP復合包來傳輸上述五種包的信息。
SR包是發送方報告,用于報告發送數據的信息,包括包數、時間戳、發送的NTP時間等,這些信息可用于客戶端判斷網絡情況,或者計算RTT時間。
RR包作為接收方的反饋報告,在我們的系統中主要用于反饋客戶端接收包的信息,包括丟包比例、丟包總數、最高序列號、上一個SR包到達時的時間和延遲。其中的NTP時間也可以用來計算RTT。根據3GPP規范[1],我們引入RLE丟包報告塊,以游程編碼的方式報告丟包。
APP包用于在流服務的過程中及時傳輸應用數據的控制包,如我們需要服務器進行碼率調整時及時通知客戶端碼流的信息,我們還通過反饋客戶端緩沖區的狀況使服務器及時地做出碼率調整以避免上溢或下溢。圖5是OBSNAPP塊的格式。其中SSRC為同步源標識符,OBSN指緩沖區內最久的包的序列號,PlayOutDelay是該包到播放時間的延遲。
FB包用于立即反饋[7],在出現丟包時,為克服網絡延遲,我們需要及時反饋客戶端的信息,以便服務器及時作出決定以恢復錯誤,如重傳。反饋信息包括丟失包的序列號和在此序列號后邊連續16個包的丟包二進制掩碼。
3RTP/RTCP包傳輸和控制系統及其差錯控制機制
基于上述理論及各種包格式,我們建立了一個包系統來完成視頻媒體流的傳輸和控制。其中實現了立即反饋機制和提出的分層重傳差錯控制機制,并解決了由重傳引起的擁塞控制問題。實驗結果表明,該系統能夠有效地降低丟包率并提高視頻質量。
3.1包傳輸和控制系統結構
圖6是我們的包傳輸和控制系統,其中服務器端包括系統管理器線程、會話管理器線程、RTP/RTCP處理器和重傳緩沖區線程;客戶端包括解包線程、會話管理線程和丟包監視器線程。客戶端將接收到的媒體數據放入流媒體系統的解碼前緩沖區以用于解碼。我們用一個實時監控器線程來檢查丟包。RTPProcessor用于在服務器端將AVSM碼流打包成RTP包和在客戶端解包;RTCPProcessor用于RTCP信息的打包和解包。Session1用于原始碼流的傳輸,Session2用于重傳碼流。
當3G視頻流系統通過RTSP協議建立連接后,管理器首先應根據網絡狀況在3GP文件中選擇適用碼率的碼流,然后通過會話管理器建立端口以發送RTP和接收RTCP信息。在此我們建立兩個會話,分別用于原始碼流和重傳碼流傳輸與控制。在會話1中,服務器用RTP包向客戶端傳輸視頻碼流并且將發送過的數據放入重傳緩沖區中;客戶端則由此會話返回RTCP信息,包括網絡信息、丟包號等。服務器要根據RTCP信息進行網絡狀況估計以判斷采取何種措施,當它采用重傳策略時建立會話2。會話2根據管理器的要求在重傳緩沖區中分層重傳相應的媒體數據。客戶端在接收到重傳數據后,根據序列號和時間戳解包,并將數據放入解碼前緩沖區。
3.2立即反饋和分層差錯控制機制
我們的包系統采用基于立即反饋[7]和分層重傳的差錯控制機制。立即反饋要求當客戶端發現丟包時,及時向服務器發送包含反饋信息的FB包。因此,FB包可能在規定時間之前發送。為了不增加RTCP可獲得的帶寬,即RTP帶寬的5%,發送立即反饋包后的下一個RTCP包就不能按正常計算的時間考慮,應作出調整。設tn是下一個包的發包時間,tp是上一個包的發包時間,Te是根據網絡情況計算出的下一個RTCP發包間隔。那么當發生立即反饋時,即反饋時間T if(在Te的間隔內時間T發生丟包并需立即反饋) {發送反饋包; 調整下一個發包時間Tp=tn+2*Te; 更新上一個發包時間為Tn=T; }else{ 在Tn時間到達時,發送正規RTCP包; 更新Tp=Tn; 計算下一個正規發包時間Te; 下一個發包時間仍為Tn=Tp+Te; } 我們在丟包檢查器線程中使用的算法如下: while(1){ if(發現丟包){ 獲得當前RTT(由NTP時間戳得到); if(RTT<解碼時間-當前時間-處理延遲){ 通知會話發送立即反饋; 調整下一個RTCP的時間; }else{ 通知此包丟失(以便于解碼器進行錯誤掩蓋或恢復); }}} 當丟包率變大時,重傳對帶寬的要求變高。基于選擇性重傳算法[4],我們提出分層重傳機制,即按照不同的包優先級別,根據網絡帶寬分層傳輸重傳包。在服務器端建立不同優先級重傳緩沖區,RTP包的重要性是不同的,可以將包分為三個優先級別:含I幀幀頭和P幀幀頭的包具有最高重傳優先級,含條帶頭的包為次優先級,其他包為第三優先級。當沒有足夠的冗余帶寬重傳所有丟包時,系統按照不同的優先級來傳輸這些數據信息。 3.3擁塞控制考慮 重傳無疑會增大系統使用的帶寬,因此系統的擁塞控制機制應盡可能地不增大要使用的帶寬。在這個擁塞控制中,網絡的包率和比特率應包括原始會話和重傳會話。為使占用的總帶寬不變,我們可以進行調整以傳輸低碼率的碼流。擁塞控制機制還要保證丟包率在一個范圍內,當丟包率超出這個范圍時,系統及時調整傳輸碼率或在多碼流間進行碼流切換。 R=Ro×(1+5%)+Re≤B 其中Ro是原始RTP流所占帶寬,5%表示RTCP帶寬占RTP帶寬的比例,Re表示重傳所需帶寬,B表示可獲得的帶寬。上式表示使用的帶寬必須滿足可獲得的帶寬,若不滿足上述約束,則根據AVSM文件轉換成的3GP文件進行碼率調整。 Ro=(R-Re)/(1+5%) 當Re要求變高時,相應的Ro變小,我們就要調整到對應較低碼率的碼流,反之則調整到高碼率的碼流。 3.4性能比較 流媒體系統使用差錯控制后,系統的視頻質量比使用前有明顯提高。在使用前,視頻除了有如圖7所示的劣化,還有由丟幀引起的幀跳躍。而使用差錯控制方法后,視頻質量得到了提高,并且丟幀減少。 圖7視頻質量對比 4結論 在擁塞控制的基礎上建立了一個相對完善的差錯控制機制。在RTP/RTCP協議的基礎上,實現了適用于AVSM的包傳輸和控制系統,其中引入的應用層差錯控制機制能夠很好地解決由于丟包、延遲等原因引起的丟幀問題,提高了視頻畫面質量。 視頻流媒體應用層QoS包括擁塞控制和差錯控制兩個方面。本文僅考慮不增大擁塞風險的解決方案。在以后的工作中,我們將在系統中設計完善的擁塞控制機制。 參考文獻: [1]3GPP TS 26.234 v6.0.0. Protocols and Codecs\\[S\\]. [2]信息技術先進音/視頻編碼(第2部分):視頻\\[S\\].中華人民共和國國家標準.GB/T20090.22006,2006. [3]RTP:A Transport Protocol for Realtime Applications\\[S\\].IETF RFC 3550. [4]Yao Wang, Jorn Ostermann, YaQin Zhang. Video Processing and Communications\\[M\\]. Beijing: PHEI,2003.402403,414416. [5]信息技術先進音視/頻編碼(第x部分):移動視頻RTP凈載格式(草案)\\[S\\].中華人民共和國國家標準. [6]RTP Retransmission Payload Format\\[EB/OL\\]. http://www.ietf.org/internetdrafts/draftietfavtrtpretransmission10.txt,2004. [7]Extended RTP Profile for RTCPbased Feedback (RTP/AVPF)\\[EB/OL\\]. http://www.ietf.org/internetdrafts/draftietfavtrtcpfeedback08.txt,200401. [8]白鋼,楊猛,等. 3G無線網絡視頻流媒體服務系統研究\\[J\\]. 計算機工程與應用, 2005, 41(24):138140,150. 作者簡介: 楊猛(1982),男,河北滄州人,碩士研究生,研究方向為多媒體技術; 孫艷豐(1964),女,北京人,教授,博士,研究方向為模式識別、圖像處理、運籌學、視頻編碼; 李鋅(1974),男,內蒙古呼和浩特人,博士研究生,研究方向為視頻和圖像編碼傳輸; 蘇海斌(1977),男,山東萊蕪人,碩士研究生,研究方向為多媒體技術。