WebRTC,名稱源自網頁實時通訊(Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,是谷歌2010年以6820萬美圓收購Global IP Solutions公司而得到的一項技術。javascript
WebRTC實現了基於網頁的視頻會議,標準是WHATWG 協議,目的是經過瀏覽器提供簡單的javascript就能夠達到實時通信(Real-Time Communications (RTC))能力。java
WebRTC(Web Real-Time Communication)項目的最終目的主要是讓Web開發者可以基於瀏覽器(Chrome\FireFox\...)輕易快捷開發出豐富的實時多媒體應用,而無需下載安裝任何插件,Web開發者也無需關注多媒體的數字信號處理過程,只需編寫簡單的Javascript程序便可實現。linux
Google也但願和致力於讓WebRTC的技術成爲HTML5標準之一。android
WebRTC提供了視頻會議的核心技術,包括音視頻的採集、編解碼、網絡傳輸、顯示等功能,而且還支持跨平臺:windows,linux,mac,android。web
架構圖:算法
![](http://static.javashuo.com/static/loading.gif)
WebRTC架構組件介紹
(1) Your Web App
Web開發者開發的程序,Web開發者能夠基於集成WebRTC的
瀏覽器提供的web API開發基於視頻、音頻的實時通訊應用。[1]
(2)Web API
面向第三方開發者的WebRTC標準API(Javascript),使開發者可以容易地開發出相似於網絡
視頻聊天的web應用,最新的標準化進程能夠查看這裏。[3]
這些API可分紅Network Stream API、 RTCPeerConnection、Peer-to-peer Data API三類,詳細的API說明能夠看這裏[4]
。
Network Stream API
MediaStream:MediaStream用來表示一個媒體
數據流。
MediaStreamTrack在瀏覽器中表示一個媒體源。
RTCPeerConnection
RTCPeerConnection: 一個RTCPeerConnection對象容許用戶
在兩個瀏覽器之間直接通信
。
RTCIceCandidate :表示一個ICE協議的候選者。
RTCIceServer:表示一個ICE Server。
Peer-to-peer Data API
DataChannel:數據通道( DataChannel)接口表示
一個在兩個節點之間的雙向的數據通道 。
(3)WebRTC Native C++ API
本地C++ API層,
使瀏覽器廠商容易實現WebRTC標準的Web API,抽象地對數字信號過程進行處理。
(4)Transport / Session
傳輸/會話層
會話層組件採用了libjingle庫的部分組件實現,無須使用xmpp/jingle協議
a. RTP Stack協議棧
Real Time Protocol
b. STUN/ICE
能夠經過STUN和ICE組件來
創建不一樣類型網絡間的呼叫鏈接。
c. Session Management
一個抽象的會話層
,提供會話創建和管理功能。該層協議留給應用開發者自定義實現。
(5)VoiceEngine
音頻引擎是包含一系
列音頻多媒體處理的框架,包括從
視頻採集卡到
網絡傳輸端等整個解決方案。
PS:
VoiceEngine是WebRTC極具價值的技術之一,是Google收購GIPS公司後開源的。在VoIP上,技術業界領先,後面的文章會詳細瞭解
a. iSAC
Internet Speech Audio Codec
針對VoIP和
音頻流的
寬帶和超寬帶音頻編解碼器,
是WebRTC音頻引擎的默認的編解碼器
採樣頻率:16khz,24khz,32khz;(默認爲16khz)
自適應速率爲10kbit/s ~ 52kbit/;
自適應包大小:30~60ms;
算法延時:frame + 3ms
b.iLBC
Internet Low Bitrate Codec
VoIP音頻流的
窄帶語音編解碼器
採樣頻率:8khz;
20ms幀比特率爲15.2kbps
30ms幀比特率爲13.33kbps
標準由IETF RFC3951和RFC3952定義
c.NetEQ for Voice
針對音頻軟件實現的
語音信號處理元件
NetEQ算法:自適應抖動控制算法以及
語音包丟失隱藏算法。使其可以快速且高解析度地適應不斷變化的網絡環境,確保音質優美且緩衝延遲最小。
是GIPS公司獨步天下的技術,可以有效的處理因爲
網絡抖動和語音包丟失時候對語音質量產生的影響。
PS:NetEQ 也是
WebRTC中一個極具價值的技術,對於提升VoIP質量有明顯效果,加以AEC\NR\AGC等模塊集成使用,效果更好。
d.Acoustic Echo Canceler (AEC)
回聲消除器是一個基於軟件的信號處理元件,
能實時的去除mic採集到的回聲。
e.Noise Reduction (NR)
噪聲抑制也是一個基於軟件的信號處理元件,用於消除與相關VoIP的某些類型的
背景噪聲(嘶嘶聲,風扇噪音等等… …)
(6)VideoEngine
VideoEngine是包含一系列
視頻處理的總體框架,從攝像頭採集視頻到視頻信息網絡傳輸再到視頻顯示整個完整過程的解決方案。
a. VP8
視頻圖像編解碼器,是WebRTC視頻引擎的默認的編解碼器
VP8適合實時通訊應用場景,由於它主要是針對低延時而設計的
編解碼器。
PS:VPx
編解碼器是Google收購ON2公司後開源的,VPx如今是WebM項目的一部分,而WebM項目是Google致力於推進的HTML5標準之一
b. Video Jitter Buffer
視頻抖動緩衝器,能夠
下降因爲視頻抖動和視頻信息包丟失帶來的不良影響。
c. Image enhancements
圖像質量加強模塊
對網絡攝像頭採集到的
圖像進行處理,包括明暗度檢測、顏色加強、降噪處理等功能,用來提高
視頻質量。