WEBRTC開發入門

WEBRTC算法

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。固然,在瀏覽器端獲取到音視頻數據後,能夠作本地化的各類處理,例如抓圖、圖像樣式變化、本地顯示濾鏡等等。ide


#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上傳輸自定義數據,不只是在量上,並且在可靠性、安全性、靈活性方面,遠可以知足需求。這樣在開發基於音視頻的遊戲和應用上,提供了較大的方便。spa


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適合實時通訊應用場景,由於它主要是針對低延時而設計的編解碼器。 

視頻抖動緩衝器,能夠下降因爲視頻抖動和視頻信息包丟失帶來的不良影響。

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

相關文章
相關標籤/搜索