WebRTC 介紹 (轉)

      google開源了WebRTC項目,網址是:http://code.google.com/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、YUY二、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的官網是http://www.webrtc.org/,其中的FAQ解答了不少你們關心的問題。有這麼幾點能夠關注:
  1.license
  採用BSD licenses,能夠用於商業軟件;即便你修改了源代碼,也沒必要公開你修改的部分。

  2.爲何WebRTC要免費
  音視頻針對目前的互聯網應用,仍是相當重要的。google這樣作的目的,無非是吸引大量的開發者在chrome平臺上開發音視頻相關應用,和當年微軟windows集成IE是一個道理。

  3.下載和編譯
  a).下載google的源碼工具depot_tools:
  svn co http://src.chromium.org/svn/trunk/tools/depot_tools
  並把depot_tools添加到系統的環境變量PATH裏;
  b).下載git工具:並把git添加到系統的環境變量PATH裏;
  c).建立webrtc工做目錄,並在該目錄下運行:
  gclient config https://webrtc.googlecode.com/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。javascript

相關文章
相關標籤/搜索