1. 程式人生 > >【轉載】WEBRTC基本介紹

【轉載】WEBRTC基本介紹

webrtc 數據流 應用 帶寬 工作 ogl 回聲 real 明顯

“WebRTC,名稱源自網頁實時通信(Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,是谷歌2010年以6820萬美元收購Global IP Solutions公司而獲得的一項技術,Google開源了這項技術!”

就 沖著6000多萬美金的技術,就很值得研究一下!WebRTC提供了視頻會議的核心技術,包括音視頻采集、編解碼、網絡傳輸、顯示等功能,並且還支持跨平 臺:Windows,Linux,Mac,Android,尤其是在實時通信方面的很多技術可以靈活嫁接到非RTC類流媒體系統中,例如,在低帶寬下的視 頻抖動控制,圖像效果增強,通用NAT穿透過程等等(後面咱們再具體細說如何嫁接),那麽這就需要我們對WEBRTC的整體流程以及深層次的框架進行熟悉 和掌控,這一篇裏,我們先通過瀏覽器端WEBRTC視頻通話過程,了解WEBRTC瀏覽器基本接口和一次RealTime視頻通話的流程。

WEBRTC結構

  首先,從WEB-RTC方面分析WEBRTC在瀏覽器上的接口結構,在瀏覽器端,WEBRTC主要實現了三個接口

  • MediaStream, 實現對本地音視頻資源的封裝,例如從Camera、Microphone、遠端Stream等等,MediaStream表示一個媒體數據流,一個 MediaStreamTrack表示MediaStream中的一個媒體源,如音頻、視頻、字幕等等。
  • RTCPeerConnection,語音或者視頻通話過程,內部涵蓋呼叫、應答、穿透、加密、傳輸及會話管理等一系列流程,一個RTCPeerConnection代表一對通話過程中的一端。
  • RTCDataChannel,在PeerConnection之上,傳輸自定義數據。

#MediaStream

在瀏覽器端,MediaStream接口名稱為getUserMedia, 該接口為上層提供同步的音視頻流,比如在本地媒體資源獲取的時候,一路MediaStream可以是一路本地Camera提供的視頻Track與一路本地 Microphone提供的音頻Track經過同步後的Stream。當然,在瀏覽器端獲取到音視頻數據後,可以做本地化的各種處理,例如抓圖、圖像樣式 變化、本地顯示濾鏡等等。

#RTCPeerConnection

RTCPeerConnection主要是用來處理點到點之間的連接和數據 傳輸,使整個過程能夠穩定且高效。在RTCPeerConnection下,封裝了大量的編解碼、通信協議的工作來實現整個實時通信過程,甚至是在不能提 供穩定帶寬情況下的實時通信,主要功能點包括:

  • 丟包補償(packet loss concealment)
  • 回音消除(echo cancellation)
  • 自適應帶寬(bandwidth adaptivity)
  • 視頻抖動緩沖器(dynamic jitter buffering)
  • 自動增益控制(automatic gain control)
  • 噪聲降低和抑制(noise reduction and suppression)
  • 圖像清理(image ‘cleaning‘)(!暫且這麽翻譯吧)
#RTCDataChannel

RTCDataChannel提供了在RTCPeerConnection 之上交換自定義數據的方法,相比於流媒體數據,在PeerConnection上傳輸自定義數據,不僅是在量上,而且在可靠性、安全性、靈活性方面,遠能 夠滿足需求。這樣在開發基於音視頻的遊戲和應用上,提供了較大的方便。

WEBRTC組件

#Transport/Session

  • 完整的RTP/SRTP協議棧
  • STUN、TURN、ICE過程
  • Session管理機制。

#VoiceEngine

WebRTC極具價值的技術之一,支持722,PCM,ILBC,ISAC等編碼,在VoIP上,技術業界領先!

NetEQ算法:自適應抖動控制算法以及語音包丟失隱藏算法。使其能夠快速且高解析度地適應不斷變化的網絡環境,確保音質優美且緩沖延遲最小。能夠有效的處理由於網絡抖動和語音包丟失時候對語音質量產生的影響。NetEQ也是WebRTC中一個極具價值的技術,對於提高VoIP質量有明顯效果,加以AEC(回聲消除)\NR(噪聲抑制)\AGC等模塊集成使用,效果更好。

#VideoEngine

VP8視頻圖像編解碼器,是WebRTC視頻引擎的默認的編解碼器,VP8適合實時通信應用場景,因為它主要是針對低延時而設計的編解碼器。

視頻抖動緩沖器,可以降低由於視頻抖動和視頻信息包丟失帶來的不良影響。

圖像質量增強模塊對網絡攝像頭采集到的圖像進行處理,包括明暗度檢測、顏色增強、降噪處理等功能,用來提升視頻質量。

【轉載】WEBRTC基本介紹