WEBRTC算法
「WebRTC,名稱源自網頁實時通訊(Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,是谷歌2010年以6820萬美圓收購Global IP Solutions公司而得到的一項技術,Google開源了這項技術!」瀏覽器
就衝着6000多萬美金的技術,就很值得研究一下!WebRTC提供了視頻會議的核心技術,包括音視頻採集、編解碼、網絡傳輸、顯示等功能,而且還支持跨平臺:Windows,Linux,Mac,Android,尤爲是在實時通訊方面的不少技術能夠靈活嫁接到非RTC類流媒體系統中,例如,在低帶寬下的視頻抖動控制,圖像效果加強,通用NAT穿透過程等等(後面我們再具體細說如何嫁接),那麼這就須要咱們對WEBRTC的總體流程以及深層次的框架進行熟悉和掌控,這一篇裏,咱們先經過瀏覽器端WEBRTC視頻通話過程,瞭解WEBRTC瀏覽器基本接口和一次RealTime視頻通話的流程。安全
首先,從WEB-RTC方面分析WEBRTC在瀏覽器上的接口結構,在瀏覽器端,WEBRTC主要實現了三個接口網絡
#MediaStream框架
在瀏覽器端,MediaStream接口名稱爲getUserMedia,該接口爲上層提供同步的音視頻流,好比在本地媒體資源獲取的時候,一路MediaStream能夠是一路本地Camera提供的視頻Track與一路本地Microphone提供的音頻Track通過同步後的Stream。固然,在瀏覽器端獲取到音視頻數據後,能夠作本地化的各類處理,例如抓圖、圖像樣式變化、本地顯示濾鏡等等。ide
#RTCPeerConnection編碼
RTCPeerConnection主要是用來處理點到點之間的鏈接和數據傳輸,使整個過程可以穩定且高效。在RTCPeerConnection下,封裝了大量的編解碼、通訊協議的工做來實現整個實時通訊過程,甚至是在不能提供穩定帶寬狀況下的實時通訊,主要功能點包括:加密
RTCDataChannel提供了在RTCPeerConnection之上交換自定義數據的方法,相比於流媒體數據,在PeerConnection上傳輸自定義數據,不只是在量上,並且在可靠性、安全性、靈活性方面,遠可以知足需求。這樣在開發基於音視頻的遊戲和應用上,提供了較大的方便。spa
#Transport/Session翻譯
#VoiceEngine
WebRTC極具價值的技術之一,支持722,PCM,ILBC,ISAC等編碼,在VoIP上,技術業界領先!
NetEQ算法:自適應抖動控制算法以及語音包丟失隱藏算法。使其可以快速且高解析度地適應不斷變化的網絡環境,確保音質優美且緩衝延遲最小。可以有效的處理因爲網絡抖動和語音包丟失時候對語音質量產生的影響。NetEQ也是WebRTC中一個極具價值的技術,對於提升VoIP質量有明顯效果,加以AEC(回聲消除)\NR(噪聲抑制)\AGC等模塊集成使用,效果更好。
#VideoEngine
VP8視頻圖像編解碼器,是WebRTC視頻引擎的默認的編解碼器,VP8適合實時通訊應用場景,由於它主要是針對低延時而設計的編解碼器。
視頻抖動緩衝器,能夠下降因爲視頻抖動和視頻信息包丟失帶來的不良影響。
圖像質量加強模塊對網絡攝像頭採集到的圖像進行處理,包括明暗度檢測、顏色加強、降噪處理等功能,用來提高視頻質量。