1. 程式人生 > >H.264/ACC音視訊編碼流的RTP/RTSP傳輸實現(1)

H.264/ACC音視訊編碼流的RTP/RTSP傳輸實現(1)

目標:
  實現一個用於H.264/ACC音視訊編碼流的RTP/RTSP傳輸的簡單伺服器,主要通過此過程學習基於RTP的NAL、ADTS碼流封裝技術和基於RTSP的視訊互動控制技術。完整系統應該包括伺服器和客戶端兩個部分,其中伺服器負責接收客戶端請求、封包以及傳送音視訊資料,客戶端負責傳送請求和接收視訊資料。分別在Windows平臺上和Android平臺上進行網路傳輸實體測試,通過客戶端網路流抓包和播放器播放對系統進行進一步驗證。
  
簡介:
  隨著網際網路和行動通訊的飛速發展,H.264憑藉其突出的編碼效率和網路相容性在視訊會議、可視電話、遠端監控、數字電視等各個方面得到了廣泛的應用,被視為最具開發潛力的視訊壓縮技術之一。H.264提供資料包編碼,有利於將資料包在網路中傳輸,支援流媒體服務應用;對不同應用的時延要求具有靈活的適應性;編碼和解碼的複雜度具有擴充套件性。H.264從設計上把視訊編碼和傳輸分開,形成兩個層次:視訊編碼層(VCL)和網路提取層(NAL)。VCL提供高質量的視訊壓縮,NAL對壓縮好的資料進行傳輸封裝,提供了良好的網路適應性。
  由於視訊流的資料傳輸量極大,受到網路傳輸質量的限制,雖然H.264提供了良好的網路適應性,但是仍然需要一種協議機制來保證其可靠傳輸。要實現在網路中進行有效和高質量的傳輸,需要對視訊流的實時性、連續性和丟包率進行嚴格控制。針對視訊流傳輸的這些特點,Internet專家任務組IETF於1996年,制定了實時傳輸協議/實時傳輸控制協議(Real-time Transport Protocol/Real-time Transport Control Protocol)協議族。隨著RTP協議族的普及和H.264編碼技術的廣泛應用,IETF還制定了針對H.264標準的RTP封裝協議RFC3984和RTP補充控制協議RTSP。因此,根據這些協議,針對不同的網路媒介和網路狀況,對H.264視訊流進行打包傳輸及控制,將為其網路應用提供良好保證。同時,隨著流媒體技術的不斷髮展,基於RTP/RTCP/RTSP的視訊打包及傳輸方法的研究和應用將會變得越來越有意義。
  鑑於目前Internet 網路頻寬與視訊龐大的資料量、實時傳輸特性之間存在的矛盾,引發了人們對於如何保證Internet網路上視訊實時傳輸QoS問題的思考,主要集中表現在以下幾個方面
1)視訊資料的處理
  與傳統Internet上的檔案傳輸以及web瀏覽等應用不同,多媒體應用不再侷限於簡單的文字和圖形,而是逐漸過渡到音視訊(A/V)等媒體格式,與此同時資料量也隨之大幅增加。日益增加的視訊資料量與有限的網路頻寬形成了流媒體發展的主要矛盾,對於一些實時性要求比較高的領域,這種矛盾表現得尤為突出。所以,選擇一種合適的視訊壓縮方法,對是視訊資料進行有效處理,以降低寬頻佔有率顯得極為重要。在視訊傳輸技術的發展過程中,H.264憑藉高編碼效率和良好的網路相容性,成為視訊傳輸資料編碼的不二選擇。
2)網路傳輸協議的選擇
  由於視訊流的資料傳輸量極大,受到網路傳輸質量的限制,會出現延時,抖動等現象。雖然H.264提供了良好的網路適應性,但是要實現在網路中進行有效和高質量的傳輸,需要對視訊流的實時性、連續性和丟包率進行嚴格控制。因此,必須選擇一種適合多媒體傳輸的實時傳輸協議,以降低延遲、減少抖動、丟包等現象,從而改善視訊實時傳輸QoS。
  針對流媒體視訊流傳輸的特點,Internet專家任務組IETF於1996年,制定了實時傳輸協議/實時傳輸控制協議(Real-time Transport Protocol/Real-time Transport Control Protocol)協議族。隨著RTP協議族的普及和H.264編碼技術的廣泛應用,IETF還制定了針對H.264標準的RTP封裝協議RFC3984。因此,根據RFC3984,針對不同的網路媒介和網路狀況,對H.264視訊流進行打包,將為其網路應用提供良好保證。同時,隨著流媒體技術的不斷髮展,基於RTP/RTCP的視訊方法研究和應用將會變得越來越有意義。
  媒體技術不僅涉及大量的資料傳輸,而且要求滿足使用者對實時觀賞和互動方式控制的需要。網路的寬頻化改造在不斷進行,因而在容量上可以滿足多數流媒體業務的需要,而實時性是下一代網路應用的一個重要發展方向,它要求傳輸的延時小、丟包率低。實時性應用特點使得受到重傳機制、擁塞控制機制等限制的TCP 協議無法被用於傳輸實時多媒體資料。為了滿足實時性需求,出現了實時傳輸協議(RTP )、實時傳輸控制協議(RTCP)和實時流協議(RTSP)等流媒體協議。RTP是針對Internet上多媒體資料流的一個傳輸協議。可以實現一對一或一對多的傳輸情況。