新聞中心

EEPW首頁 > 消費電子 > 設計應用 > 基于DirectX的音頻視頻無線傳輸系統設計與實現

基于DirectX的音頻視頻無線傳輸系統設計與實現

——
作者: 時間:2007-10-19 來源:現代電子技術 收藏

  1引言

  近些年來,多媒體技術,技術和通信技術的迅速發(fā)展為相互之間的交叉融合奠定了基礎,也使其成為信息產業(yè)發(fā)展的必然趨勢,傳統的Internet主要提供數據業(yè)務,通信主要提供語音業(yè)務,而多媒體技術的日新月異,使得文本、語音及綜合加入Internet與通信領域的需求日益增長。對于音流的傳輸,如果采用TCP協議,由于TCP的檢錯和重傳機制會大大增加數據包的延時,因此不符合音傳輸的要求,而如果單純采用UDP協議,由于UDP不提供任何的QoS保證,因此傳輸質量不理想。而IETF制定的實時傳輸協議/實時傳輸控制協議(RTP/RTCP)使得在理論上具有提供多媒體實時傳輸的能力。

  微軟推出的提供了與音視頻應用相關的SDK,開發(fā)者以此為跳板則可以較方便地實現語音與視頻的捕捉、傳輸、解壓、回放等功能,并可以根據需要來訂制和擴充利用。

  2系統概述

  本系統設計應用于XXX設備與系統,主要實現前后方與視頻的無線通信,傳輸部分基于DirectPlayVoice實現,視頻傳輸部分基于DirectShow實現。采用典型的客戶端/服務器結構,服務器端主要包括視頻的采集與壓縮以及數據發(fā)送,客戶端主要包括數據接收以及音頻視頻解壓播放,客戶端與服務器端通過無線網連接。系統結構如圖1所示。

  

  3基于DirectPlay Voice的音頻傳輸

  DireetPlay Voice是系統的成員之一,圖2顯示了應用DirectPlay Voice開發(fā)時可用的組件。

  

  采用客戶端/服務器模式時,使用IdirectPlayVoice-Client和IdireetPlayVoiceServer接口創(chuàng)建并管理一個聲音會話。

  3.1 混音

  本系統實際應用中,經常需要多人同時語音會話,因此對混音效果有很高要求,DireetPlayVoice提供了多人會話時混音功能,并且C/S模式下提供了客戶端混音,服務器混音兩種混音方式。

  客戶端混音方式,通過轉發(fā)服務器拓撲結構,選擇會話中的一個客戶端電腦充當轉發(fā)服務器,每一個客戶端把語音數據流送到轉發(fā)服務器,轉發(fā)服務器負責把收到的所有客戶聲音數據送到每一個客戶端,然后每一個客戶端把接收到的音頻數據混音并播放。 服務器混音方式,選擇服務器端電腦作為混音服務器,每一個客戶端的聲音數據流到混音服務器上,混音服務器會檢測每個聲音流的目的地,完成解壓縮、混音,再壓縮,把混音的音頻數據送到每一個客戶端,每一個客戶端接受單一的預混和的音頻數據并播放。

  3.2語音延時、抖動消除

  在語音傳輸過程中,由于等原因會發(fā)生語音延時、抖動,采取抖動緩沖技術,可以較好地解決這一問題。在接收方設定一個緩沖池,語音包到達時首先進入緩沖池暫存,系統以穩(wěn)定平緩的速率將語音包從緩沖池中取出、解壓,然后播放給受話者。如圖3(a)所示,這種緩沖技術可以在一定限度內有效處理語音抖動,提高音質。 為了確定呼話音包的正確時間間隔,在RTP的包頭上提供了一個時間戳(Time Stamp),用于記錄這個呼包的產生時間。在發(fā)送端網關產生的呼包①經過A,B的時間間隔和B,C的時間間隔均為20ms,如圖3(b)所示;經過網絡傳輸,在接收端收到的呼包②的B,C的時間間隔變成了30ms;為了恢復原有的時間間隔,接收端網關根據每個呼包的RTP時間戳來確定呼包③的正確時間間隔,把他們恢復成原來的20ms向下一級設備發(fā)送。由于消抖動緩存池不是在接收到每一個話音包的情況下就立即轉發(fā),因此還要確定適當的轉發(fā)延時的大小。如果延時太長,就會使系統整體的延時變得很長;如果延時太短,話音包在允許的時間范圍內沒有到達,話音仍會出現抖動現象,緩存池的作用不很明顯。取兩者平衡點的結果使緩存器的網絡延時保持在40ms左右。

  

  本系統實現時提供了兩種混音方式和多種音頻編碼類型可選,因此能夠適應網絡帶寬較差的環(huán)境,提供的編碼類型如下:MS-PCM 64kb/s,MS-ADPCM 32.8kb/s,Microsoft GSM6.10 13kb/s,True Speech(TM)8.6kb/s,Voxware SC03 3.2 kb/s,'Voxware SC06 6.4kb/s。

  4基于DirectShow的視頻傳輸

  DirectShow是一套完全基于COM的應用系統,COM組件有3種類型:進程內組件、本地組件和遠程組件。Filter一般是一種進程內組件,以動態(tài)鏈接庫(Dell)的形式提供服務。在Dir。ectShow體系結構中,Filter是最基本的模塊。DirectShow對流媒體的處理是分步進行的,每項特定的處理由特定的Filter。來完成。Filter主要有3類:SourceFilters,Transform Filters和Render ing Filters。 SourceFilters主要負責取得數據,然后將數據往下傳輸;Trans-form Fitlers主要負責數據的格式轉換、傳輸;RenderingFiltes主要負責數據的最終去向。

  視頻傳輸結構框圖如圖4所示:在發(fā)送端,采集卡捕獲的視頻數據經過Divx MPEG-4 LOW-Motion Filter編碼壓縮,然后進行RTP打包,再發(fā)送到網絡上。接收端使用RTP解包,Divx MPEG-4 Receivet Filter接收并緩沖視頻流,然后由Divx Decoder Filter進行解碼,由VideoRenderer Filter播放。同時引入RTCP進行傳輸質量控制。

  4.1視頻的壓縮與編碼

  在視頻傳輸的過程中,服務器和客戶端的視頻壓縮、解壓縮過程至關重要,視頻的流量非常龐大,網絡帶寬的占用隨著用戶的增加大幅增長,這在要求高質量視頻的時候最為突出。針對這種情況,選擇MPEG-4視頻壓縮算法,以提供高質量的視頻質量。與現有的標準相比,在可比擬速率上,MPEG-4標準能提供更好的主觀視覺質量的圖像,一般來說MPEG-4的壓縮倍數高達100倍。MPEG-4具有很強的容錯性,這使得他廣泛應用在各種媒體中,尤其在易發(fā)生嚴重錯誤的低比特率應用中,MPEG-4將提高抗錯誤能力。

  

  4.2 RTP/RTCP協議

  RTP協議是IETF在1996年為支持網絡數據實時傳輸而制訂的標準。RTP協議實際上是由實時傳輸協議RTP(Real Time Transport Protocol)和實時傳輸控制協議RTCP(Real Time Transport Control Protoeol)兩部分組成。

  RTP協議用來提供端到端的實時數據傳輸服務,包括有效載荷類型鑒定、數據序號、時間戳、傳送監(jiān)測。但是RTP本身并不能為按序傳輸數據包提供保證,他依賴于底層服務去實現這一過程,也不能提供流量控制和擁塞控制,這些都由實時傳輸控制協議RTCP來負責完成。

  RTCP用來控制服務質量,并在正在進行的會話里傳遞各個參與站點的信息。在RTP會話期間,各站點周期性地傳遞RTCP包。RTCP包中含有已發(fā)送的數據包數量和丟失的數據包數量等統計資料。因此站點可以利用這些信息動態(tài)改變傳輸速率,調整緩沖區(qū)大小和個數,甚至改變有效載荷類型。RTP和RTCP配合使用,可以有效地反饋和以最小的開銷使傳輸效率最佳化,因而特別適合傳送網上的實時數據。

  4.3 DirectShow框架下RTP實現

  在DirectShow框架下,多媒體數據以媒體樣本為單位在濾鏡之間流動。一個特定應用程序的濾鏡圖中,相鄰濾鏡的引腳之間流動的媒體樣本類型一般不同。因此,傳輸兩端需要選用合理濾鏡圖,確保服務器端傳出的媒體樣本能被客戶端正確播放。

  程序實現中,傳輸兩端的濾鏡圖如圖5所示。服務器采用攝像頭濾鏡捕獲視頻數據,向后傳送,經過編碼器濾鏡壓縮,傳到MyRTPRenderer濾鏡,并由他負責網絡發(fā)送;在客戶端,MyRTPSource濾鏡收到MyRTPRenderer發(fā)來的數據,經過解碼器濾鏡解壓縮后顯示到屏幕渲染濾鏡。服務器的編碼器和客戶端的解碼器是配套的,保證服務器傳輸的媒體樣本能被客戶端正確解壓播放。從客戶端來看,網絡對于用戶透明,就相當于是一個遠程攝像頭捕捉、壓縮、解壓、播放的過程。

  

  架中的兩個RTP濾鏡負責數據傳輸,而TCP傳輸的反饋控制在兩端上層的濾鏡圖管理器中實現。

  4.4 Filter實現

  本系統中視頻流的網絡發(fā)送與接收通過自己開發(fā)的Filter來實現。

  發(fā)送端Filter類:

  

  CbaseInputPin是一個用于實現輸人Pin的抽象類,該類支持IMereInput Pin接口。由于IMemInputPin接口是一個支持推模式(Push Model)的接口,因此,CnetworkSendFilter支持推模式(Push Model)應用。

  發(fā)送Filter關鍵過程:

  (1)初始化套接字;

  (2)設置系統緩沖區(qū),綁定端口;

  (3)創(chuàng)建默認的接口;

  (4)調用sendto發(fā)送數據;

  (6)關閉套接字。

  5結語

  圖6為本系統客戶端界面,有4路視頻顯示,在正常條件下,達到了較好的效果。

  

  本文結合實際項目需要,詳細論述了音視頻傳輸系統的設計方法和具體實現框架,利用DirectPlay Voice實現音頻混音功能,并且對音頻傳輸過程中的延時抖動進行了去除,利用RTP/RTCP傳輸MPEG-4視頻流,討論了在DirectShow框架下用RTP/RTCP協議傳輸MPEG-4視頻數據的實現方案。

  實驗表明,該系統音頻混音效果良好,利用RTP/RTCP傳輸MPEG-4視頻,能夠適應復雜的網絡狀況,提供更好的傳輸質量。



評論


相關推薦

技術專區(qū)

關閉