當前位置:編程學習大全網 - 源碼下載 - google為什麽要開源webrtc

google為什麽要開源webrtc

google開源了WebRTC項目,網址是:/p/webrtc/。

WebRTC實現了基於網頁的視頻會議,標準是WHATWG 協議,目的是通過瀏覽器提供簡單的javascript就可以達到實時通訊(Real-Time Communications (RTC))能力。

通過對源碼的粗略分析,WebRTC提供了視頻會議的核心技術,包括音視頻的采集、編解碼、網絡傳輸、顯示等功能,並且還支持跨平臺:windows,linux,mac,android。

WebRTC的視頻處理分析(windows平臺)

WebRTC的視頻部分,包含采集、編解碼(I420/VP8)、加密、媒體文件、圖像處理、顯示、網絡傳輸與流控(RTP/RTCP)等功能。

視頻采集---video_capture

源代碼在webrtc\modules\video_capture\main目錄下,包含接口和各個平臺的源代碼。

在windows平臺上,WebRTC采用的是dshow技術,來實現枚舉視頻的設備信息和視頻數據的采集,這意味著可以支持大多數的視頻采集設備;對那些需要單獨驅動程序的視頻采集卡(比如海康高清卡)就無能為力了。

視頻采集支持多種媒體類型,比如I420、YUY2、RGB、UYUY等,並可以進行幀大小和幀率控制。

視頻編解碼---video_coding

源代碼在webrtc\modules\video_coding目錄下。

WebRTC采用I420/VP8編解碼技術。VP8是google收購ON2後的開源實現,並且也用在WebM項目中。VP8能以更少的數據提供更高質量的視頻,特別適合視頻會議這樣的需求。

視頻加密--video_engine_encryption

視頻加密是WebRTC的video_engine壹部分,相當於視頻應用層面的功能,給點對點的視頻雙方提供了數據上的安全保證,可以防止在Web上視頻數據的泄漏。

視頻加密在發送端和接收端進行加解密視頻數據,密鑰由視頻雙方協商,代價是會影響視頻數據處理的性能;也可以不使用視頻加密功能,這樣在性能上會好些。

視頻加密的數據源可能是原始的數據流,也可能是編碼後的數據流。估計是編碼後的數據流,這樣加密代價會小壹些,需要進壹步研究。

視頻媒體文件--media_file

源代碼在webrtc\modules\media_file目錄下。

該功能是可以用本地文件作為視頻源,有點類似虛擬攝像頭的功能;支持的格式有Avi。

另外,WebRTC還可以錄制音視頻到本地文件,比較實用的功能。

視頻圖像處理--video_processing

源代碼在webrtc\modules\video_processing目錄下。

視頻圖像處理針對每壹幀的圖像進行處理,包括明暗度檢測、顏色增強、降噪處理等功能,用來提升視頻質量。

視頻顯示--video_render

源代碼在webrtc\modules\video_render目錄下。

在windows平臺,WebRTC采用direct3d9和directdraw的方式來顯示視頻,只能這樣,必須這樣。

網絡傳輸與流控

對於網絡視頻來講,數據的傳輸與控制是核心價值。WebRTC采用的是成熟的RTP/RTCP技術。

WebRTC的音頻處理分析(windows平臺)

WebRTC的音頻部分,包含設備、編解碼(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、聲音文件、聲音處理、聲音輸出、音量控制、音視頻同步、網絡傳輸與流控(RTP/RTCP)等功能。

音頻設備---audio_device

源代碼在webrtc\modules\audio_device\main目錄下,包含接口和各個平臺的源代碼。

在windows平臺上,WebRTC采用的是Windows Core Audio和Windows Wave技術來管理音頻設備,還提供了壹個混音管理器。

利用音頻設備,可以實現聲音輸出,音量控制等功能。

音頻編解碼---audio_coding

源代碼在webrtc\modules\audio_coding目錄下。

WebRTC采用iLIBC/iSAC/G722/PCM16/RED/AVT編解碼技術。

WebRTC還提供NetEQ功能---抖動緩沖器及丟包補償模塊,能夠提高音質,並把延遲減至最小。

另外壹個核心功能是基於語音會議的混音處理。

聲音加密--voice_engine_encryption

和視頻壹樣,WebRTC也提供聲音加密功能。

聲音文件

該功能是可以用本地文件作為音頻源,支持的格式有Pcm和Wav。

同樣,WebRTC也可以錄制音頻到本地文件。

聲音處理--audio_processing

源代碼在webrtc\modules\audio_processing目錄下。

聲音處理針對音頻數據進行處理,包括回聲消除(AEC)、AECM、自動增益(AGC)、降噪處理等功能,用來提升聲音質量。

網絡傳輸與流控

和視頻壹樣,WebRTC采用的是成熟的RTP/RTCP技術。

WebRTC的官網是/svn/trunk

gclient sync --force

sync命令也會產生基於本地環境(Linux:make, OSX: XCode, Windows: Visual Studio)的build文件。

也可以用命令:

gclient runhooks --force

對windows平臺,在trunk目錄下,已經有針對Visual Studio的工程文件:

webrtc.sln

好了,打開它,這就可以編譯了。

註:webrtc默認使用了C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses。我的機器上只有v7.0的sdk,於是構造了壹個v7.1的目錄,僅包含Samples\multimedia\directshow\baseclasses。

  • 上一篇:Vcselect源代碼
  • 下一篇:美食源php
  • copyright 2024編程學習大全網