主頁(yè)(http://www.130131.com):源自網(wǎng)頁(yè)實(shí)時(shí)通信WebRTC WebRTC,名稱源自網(wǎng)頁(yè)實(shí)時(shí)通信(Web Real-Time Communication)的縮寫,是一個(gè)支持網(wǎng)頁(yè)瀏覽器進(jìn)行實(shí)時(shí)語(yǔ)音對(duì)話或視頻對(duì)話的技術(shù),是谷歌2010年以6820萬(wàn)美元收購(gòu)Global IP Solutions公司而獲得的一項(xiàng)技術(shù)。 特點(diǎn) WebRTC實(shí)現(xiàn)了基于網(wǎng)頁(yè)的視頻會(huì)議,標(biāo)準(zhǔn)是WHATWG 協(xié)議,目的是通過(guò)瀏覽器提供簡(jiǎn)單的javascript就可以達(dá)到實(shí)時(shí)通訊(Real-Time Communications (RTC))能力。 WebRTC(Web Real-Time Communication)項(xiàng)目的最終目的主要是讓W(xué)eb開發(fā)者能夠基于瀏覽器(Chrome\FireFox\...)輕易快捷開發(fā)出豐富的實(shí)時(shí)多媒體應(yīng)用,而無(wú)需下載安裝任何插件,Web開發(fā)者也無(wú)需關(guān)注多媒體的數(shù)字信號(hào)處理過(guò)程,只需編寫簡(jiǎn)單的Javascript程序即可實(shí)現(xiàn),W3C等組織正在制定Javascript 標(biāo)準(zhǔn)API,目前是WebRTC 1.0版本,Draft狀態(tài);另外WebRTC還希望能夠建立一個(gè)多互聯(lián)網(wǎng)瀏覽器間健壯的實(shí)時(shí)通信的平臺(tái),形成開發(fā)者與瀏覽器廠商良好的生態(tài)環(huán)境。同時(shí),Google也希望和致力于讓W(xué)ebRTC的技術(shù)成為HTML5標(biāo)準(zhǔn)之一,可見Google布局之深遠(yuǎn)。 WebRTC提供了視頻會(huì)議的核心技術(shù),包括音視頻的采集、編解碼、網(wǎng)絡(luò)傳輸、顯示等功能,并且還支持跨平臺(tái):windows,linux,mac,android。
架構(gòu)
顏色標(biāo)識(shí)說(shuō)明 (1)紫色部分是Web開發(fā)者API層; (2)藍(lán)色實(shí)線部分是面向?yàn)g覽器廠商的API層 (3)藍(lán)色虛線部分瀏覽器廠商可以自定義實(shí)現(xiàn)
架構(gòu)組件介紹 (1) Your Web App Web開發(fā)者開發(fā)的程序,Web開發(fā)者可以基于集成WebRTC的瀏覽器提供的web API開發(fā)基于視頻、音頻的實(shí)時(shí)通信應(yīng)用。 (2)Web API 面向第三方開發(fā)者的WebRTC標(biāo)準(zhǔn)API(Javascript),使開發(fā)者能夠容易地開發(fā)出類似于網(wǎng)絡(luò)視頻聊天的web應(yīng)用,最新的標(biāo)準(zhǔn)化進(jìn)程可以查看這里。 這些API可分成Network Stream API、 RTCPeerConnection、Peer-to-peer Data API三類,詳細(xì)的API說(shuō)明可以看這里。 Network Stream API MediaStream:MediaStream用來(lái)表示一個(gè)媒體數(shù)據(jù)流。 MediaStreamTrack在瀏覽器中表示一個(gè)媒體源。 RTCPeerConnection RTCPeerConnection: 一個(gè)RTCPeerConnection對(duì)象允許用戶在兩個(gè)瀏覽器之間直接通訊。 RTCIceCandidate :表示一個(gè)ICE協(xié)議的候選者。 RTCIceServer:表示一個(gè)ICE Server。 Peer-to-peer Data API DataChannel:數(shù)據(jù)通道( DataChannel)接口表示一個(gè)在兩個(gè)節(jié)點(diǎn)之間的雙向的數(shù)據(jù)通道 。 (3)WebRTC Native C++ API 本地C++ API層,使瀏覽器廠商容易實(shí)現(xiàn)WebRTC標(biāo)準(zhǔn)的Web API,抽象地對(duì)數(shù)字信號(hào)過(guò)程進(jìn)行處理。 (4)Transport / Session 傳輸/會(huì)話層 會(huì)話層組件采用了libjingle庫(kù)的部分組件實(shí)現(xiàn),無(wú)須使用xmpp/jingle協(xié)議 a. RTP Stack協(xié)議棧 Real Time Protocol b. STUN/ICE 可以通過(guò)STUN和ICE組件來(lái)建立不同類型網(wǎng)絡(luò)間的呼叫連接。 c. Session Management 一個(gè)抽象的會(huì)話層,提供會(huì)話建立和管理功能。該層協(xié)議留給應(yīng)用開發(fā)者自定義實(shí)現(xiàn)。 (5)VoiceEngine 音頻引擎是包含一系列音頻多媒體處理的框架,包括從視頻采集卡到網(wǎng)絡(luò)傳輸端等整個(gè)解決方案。 PS:VoiceEngine是WebRTC極具價(jià)值的技術(shù)之一,是Google收購(gòu)GIPS公司后開源的。在VoIP上,技術(shù)業(yè)界領(lǐng)先,后面的文章會(huì)詳細(xì)了解 a. iSAC Internet Speech Audio Codec 針對(duì)VoIP和音頻流的寬帶和超寬帶音頻編解碼器,是WebRTC音頻引擎的默認(rèn)的編解碼器 采樣頻率:16khz,24khz,32khz;(默認(rèn)為16khz) 自適應(yīng)速率為10kbit/s ~ 52kbit/; 自適應(yīng)包大。30~60ms; 算法延時(shí):frame + 3ms b.iLBC Internet Low Bitrate Codec VoIP音頻流的窄帶語(yǔ)音編解碼器 采樣頻率:8khz; 20ms幀比特率為15.2kbps 30ms幀比特率為13.33kbps 標(biāo)準(zhǔn)由IETF RFC3951和RFC3952定義 c.NetEQ for Voice 針對(duì)音頻軟件實(shí)現(xiàn)的語(yǔ)音信號(hào)處理元件 NetEQ算法:自適應(yīng)抖動(dòng)控制算法以及語(yǔ)音包丟失隱藏算法。使其能夠快速且高解析度地適應(yīng)不斷變化的網(wǎng)絡(luò)環(huán)境,確保音質(zhì)優(yōu)美且緩沖延遲最小。 是GIPS公司獨(dú)步天下的技術(shù),能夠有效的處理由于網(wǎng)絡(luò)抖動(dòng)和語(yǔ)音包丟失時(shí)候?qū)φZ(yǔ)音質(zhì)量產(chǎn)生的影響。 PS:NetEQ 也是WebRTC中一個(gè)極具價(jià)值的技術(shù),對(duì)于提高VoIP質(zhì)量有明顯效果,加以AEC\NR\AGC等模塊集成使用,效果更好。 d.Acoustic Echo Canceler (AEC) 回聲消除器是一個(gè)基于軟件的信號(hào)處理元件,能實(shí)時(shí)的去除mic采集到的回聲。 e.Noise Reduction (NR) 噪聲抑制也是一個(gè)基于軟件的信號(hào)處理元件,用于消除與相關(guān)VoIP的某些類型的背景噪聲(嘶嘶聲,風(fēng)扇噪音等等… …) (6)VideoEngine WebRTC視頻處理引擎 VideoEngine是包含一系列視頻處理的整體框架,從攝像頭采集視頻到視頻信息網(wǎng)絡(luò)傳輸再到視頻顯示整個(gè)完整過(guò)程的解決方案。 a. VP8 視頻圖像編解碼器,是WebRTC視頻引擎的默認(rèn)的編解碼器 VP8適合實(shí)時(shí)通信應(yīng)用場(chǎng)景,因?yàn)樗饕轻槍?duì)低延時(shí)而設(shè)計(jì)的編解碼器。 PS:VPx編解碼器是Google收購(gòu)ON2公司后開源的,VPx現(xiàn)在是WebM項(xiàng)目的一部分,而WebM項(xiàng)目是Google致力于推動(dòng)的HTML5標(biāo)準(zhǔn)之一 b. Video Jitter Buffer 視頻抖動(dòng)緩沖器,可以降低由于視頻抖動(dòng)和視頻信息包丟失帶來(lái)的不良影響。 c. Image enhancements 圖像質(zhì)量增強(qiáng)模塊 對(duì)網(wǎng)絡(luò)攝像頭采集到的圖像進(jìn)行處理,包括明暗度檢測(cè)、顏色增強(qiáng)、降噪處理等功能,用來(lái)提升視頻質(zhì)量。
相關(guān)說(shuō)明 谷歌2011年6月3日宣布向開發(fā)人員開放WebRTC架構(gòu)的源代碼。這個(gè)源代碼將根據(jù)沒有專利費(fèi)的BSD(伯克利軟件發(fā)布)式的許可證向用戶提供。 開發(fā)人員可訪問(wèn)并獲取WebRTC的源代碼、規(guī)格說(shuō)明和工具等。
分析
視頻 WebRTC的視頻部分,包含采集、編解碼(I420/VP8)、加密、媒體文件、圖像處理、顯示、網(wǎng)絡(luò)傳輸與流控(RTP/RTCP)等功能。 視頻采集---video_capture 源代碼在webrtc\modules\video_capture\main目錄下,包含接口和各個(gè)平臺(tái)的源代碼。 在windows平臺(tái)上,WebRTC采用的是dshow技術(shù),來(lái)實(shí)現(xiàn)枚舉視頻的設(shè)備信息和視頻數(shù)據(jù)的采集,這意味著可以支持大多數(shù)的視頻采集設(shè)備;對(duì)那些需要單獨(dú)驅(qū)動(dòng)程序的視頻采集卡(比如?蹈咔蹇ǎ┚蜔o(wú)能為力了。 視頻采集支持多種媒體類型,比如I420、YUY2、RGB、UYUY等,并可以進(jìn)行幀大小和幀率控制。 視頻編解碼---video_coding 源代碼在webrtc\modules\video_coding目錄下。 WebRTC采用I420/VP8編解碼技術(shù)。VP8是google收購(gòu)ON2后的開源實(shí)現(xiàn),并且也用在WebM項(xiàng)目中。VP8能以更少的數(shù)據(jù)提供更高質(zhì)量的視頻,特別適合視頻會(huì)議這樣的需求。 視頻加密--video_engine_encryption 視頻加密是WebRTC的video_engine一部分,相當(dāng)于視頻應(yīng)用層面的功能,給點(diǎn)對(duì)點(diǎn)的視頻雙方提供了數(shù)據(jù)上的安全保證,可以防止在Web上視頻數(shù)據(jù)的泄漏。 視頻加密在發(fā)送端和接收端進(jìn)行加解密視頻數(shù)據(jù),密鑰由視頻雙方協(xié)商,代價(jià)是會(huì)影響視頻數(shù)據(jù)處理的性能;也可以不使用視頻加密功能,這樣在性能上會(huì)好些。 視頻加密的數(shù)據(jù)源可能是原始的數(shù)據(jù)流,也可能是編碼后的數(shù)據(jù)流。估計(jì)是編碼后的數(shù)據(jù)流,這樣加密代價(jià)會(huì)小一些,需要進(jìn)一步研究。 視頻媒體文件--media_file 源代碼在webrtc\modules\media_file目錄下。 該功能是可以用本地文件作為視頻源,有點(diǎn)類似虛擬攝像頭的功能;支持的格式有Avi。 另外,WebRTC還可以錄制音視頻到本地文件,比較實(shí)用的功能。 視頻圖像處理--video_processing 源代碼在webrtc\modules\video_processing目錄下。 視頻圖像處理針對(duì)每一幀的圖像進(jìn)行處理,包括明暗度檢測(cè)、顏色增強(qiáng)、降噪處理等功能,用來(lái)提升視頻質(zhì)量。 視頻顯示--video_render 源代碼在webrtc\modules\video_render目錄下。 在windows平臺(tái),WebRTC采用direct3d9和directdraw的方式來(lái)顯示視頻,只能這樣,必須這樣。 網(wǎng)絡(luò)傳輸與流控 對(duì)于網(wǎng)絡(luò)視頻來(lái)講,數(shù)據(jù)的傳輸與控制是核心價(jià)值。WebRTC采用的是成熟的RTP/RTCP技術(shù)。
音頻 WebRTC的音頻部分,包含設(shè)備、編解碼(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、聲音文件、聲音處理、聲音輸出、音量控制、音視頻同步、網(wǎng)絡(luò)傳輸與流控(RTP/RTCP)等功能。 音頻設(shè)備---audio_device 源代碼在webrtc\modules\audio_device\main目錄下,包含接口和各個(gè)平臺(tái)的源代碼。 在windows平臺(tái)上,WebRTC采用的是Windows Core Audio和Windows Wave技術(shù)來(lái)管理音頻設(shè)備,還提供了一個(gè)混音管理器。 利用音頻設(shè)備,可以實(shí)現(xiàn)聲音輸出,音量控制等功能。 音頻編解碼---audio_coding 源代碼在webrtc\modules\audio_coding目錄下。 WebRTC采用iLIBC/iSAC/G722/PCM16/RED/AVT編解碼技術(shù)。 WebRTC還提供NetEQ功能---抖動(dòng)緩沖器及丟包補(bǔ)償模塊,能夠提高音質(zhì),并把延遲減至最小。 另外一個(gè)核心功能是基于語(yǔ)音會(huì)議的混音處理。 聲音加密--voice_engine_encryption 和視頻一樣,WebRTC也提供聲音加密功能。 聲音文件 該功能是可以用本地文件作為音頻源,支持的格式有Pcm和Wav。 同樣,WebRTC也可以錄制音頻到本地文件。 聲音處理--audio_processing 源代碼在webrtc\modules\audio_processing目錄下。 聲音處理針對(duì)音頻數(shù)據(jù)進(jìn)行處理,包括回聲消除(AEC)、AECM(AEC Mobile)、自動(dòng)增益(AGC)、降噪(NS)、靜音檢測(cè)(VAD)處理等功能,用來(lái)提升聲音質(zhì)量。 網(wǎng)絡(luò)傳輸與流控 和視頻一樣,WebRTC采用的是成熟的RTP/RTCP技術(shù)。 (中國(guó)集群通信網(wǎng) | 責(zé)任編輯:陳曉亮) |



