WebRTC
![]() |
WebRTC,名稱源自網頁即時通信(英語:Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器[1]進行實時語音對話或視頻對話的API。它於2011年6月1日開源並在Google、Mozilla、Opera支持下被納入萬維網聯盟的W3C推薦標準。
特點
WebRTC實現了基於網頁的視頻會議,標準是WHATWG協議,目的是通過瀏覽器提供簡單的javascript就可以達到實時通訊(Real-Time Communications(RTC))能力。
WebRTC(Web Real-Time Communication)項目的最終目的主要是讓Web開發者能夠基於瀏覽器(ChromeFireFox...)輕易快捷開發出豐富的實時多媒體應用,而無需下載安裝任何插件,Web開發者也無需關注多媒體的數字信號處理過程,只需編寫簡單的Javascript程序即可實現,W3C等組織正在制定Javascript標準API,目前是WebRTC 1.0版本,Draft狀態;另外WebRTC還希望能夠建立一個多互聯網瀏覽器間健壯的實時通信的平台,形成開發者與瀏覽器廠商良好的生態環境[2]。同時,Google也希望和致力於讓WebRTC的技術成為HTML5標準之一,可見Google布局之深遠。
WebRTC提供了視頻會議的核心技術,包括音視頻的採集、編解碼、網絡傳輸、顯示等功能,並且還支持跨平台:windows,linux,mac,android。
相關說明
谷歌2011年6月3日宣布向開發人員開放WebRTC架構的源代碼。這個源代碼將根據沒有專利費的BSD(伯克利軟件發布)式的許可證向用戶提供。開發人員可訪問並獲取WebRTC的源代碼、規格說明和工具等。
分析
視頻
WebRTC的視頻部分,包含採集、編解碼(I420/VP8)、加密、媒體文件、圖像處理、顯示、網絡傳輸與流控(RTP/RTCP)等功能。
視頻採集---video_capture
源代碼在webrtcmodulesvideo_capturemain目錄下,包含接口和各個平台的源代碼。
在windows平台上,WebRTC採用的是dshow技術,來實現枚舉視頻的設備信息和視頻數據的採集,這意味着可以支持大多數的視頻採集設備;對那些需要單獨驅動程序的視頻採集卡(比如海康高清卡)就無能為力了。
視頻採集支持多種媒體類型,比如I420、YUY2、RGB、UYUY等,並可以進行幀大小和幀率控制。
視頻編解碼---video_coding
源代碼在webrtcmodulesvideo_coding目錄下。
WebRTC採用I420/VP8編解碼技術。VP8是google收購ON2後的開源實現,並且也用在WebM項目中。VP8能以更少的數據提供更高質量的視頻,特別適合視頻會議這樣的需求。
視頻加密--video_engine_encryption
視頻加密是WebRTC的video_engine一部分,相當於視頻應用層面的功能,給點對點的視頻雙方提供了數據上的安全保證,可以防止在Web上視頻數據的泄漏。
視頻加密在發送端和接收端進行加解密視頻數據,密鑰由視頻雙方協商,代價是會影響視頻數據處理的性能;也可以不使用視頻加密功能,這樣在性能上會好些。
視頻加密的數據源可能是原始的數據流,也可能是編碼後的數據流。估計是編碼後的數據流,這樣加密代價會小一些,需要進一步研究。
視頻媒體文件--media_file
源代碼在webrtcmodulesmedia_file目錄下。
該功能是可以用本地文件作為視頻源,有點類似虛擬攝像頭的功能;支持的格式有Avi。
另外,WebRTC還可以錄製音視頻到本地文件,比較實用的功能。
視頻圖像處理--video_processing
源代碼在webrtcmodulesvideo_processing目錄下。
視頻圖像處理針對每一幀的圖像進行處理,包括明暗度檢測、顏色增強、降噪處理等功能,用來提升視頻質量。
視頻顯示--video_render
源代碼在webrtcmodulesvideo_render目錄下。
在windows平台,WebRTC採用direct3d9和directdraw的方式來顯示視頻,只能這樣,必須這樣。
網絡傳輸與流控
對於網絡視頻來講,數據的傳輸與控制是核心價值。WebRTC採用的是成熟的RTP/RTCP技術。
音頻
WebRTC的音頻部分,包含設備、編解碼(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、聲音文件、聲音處理、聲音輸出、音量控制、音視頻同步、網絡傳輸與流控(RTP/RTCP)等功能。
音頻設備---audio_device
源代碼在webrtcmodulesaudio_devicemain目錄下,包含接口和各個平台的源代碼。
在windows平台上,WebRTC採用的是Windows Core Audio和Windows Wave技術來管理音頻設備,還提供了一個混音管理器。
利用音頻設備,可以實現聲音輸出,音量控制等功能。
音頻編解碼---audio_coding
源代碼在webrtcmodulesaudio_coding目錄下。
WebRTC採用iLIBC/iSAC/G722/PCM16/RED/AVT編解碼技術。
WebRTC還提供NetEQ功能---抖動緩衝器及丟包補償模塊,能夠提高音質,並把延遲減至最小。
另外一個核心功能是基於語音會議的混音處理。
聲音加密--voice_engine_encryption
和視頻一樣,WebRTC也提供聲音加密功能。
聲音文件
該功能是可以用本地文件作為音頻源,支持的格式有Pcm和Wav。
同樣,WebRTC也可以錄製音頻到本地文件。
聲音處理--audio_processing
源代碼在webrtcmodulesaudio_processing目錄下。
聲音處理針對音頻數據進行處理,包括回聲消除(AEC)、AECM(AEC Mobile)、自動增益(AGC)、降噪(NS)、靜音檢測(VAD)處理等功能,用來提升聲音質量。
網絡傳輸與流控
和視頻一樣,WebRTC採用的是成熟的RTP/RTCP技術。
參考文獻
- 移至 ↑ 瀏覽器超實用的5個功能,甚至能輕鬆查對象的瀏覽記錄 ,搜狐,2022-09-02
- 移至 ↑ 世界環境日 | 保護生態環境,建設美好家園 ,搜狐,2024-06-05