為何一直推薦WebRTC?


做為一名音視頻行業里的小混混,如果沒聽說過WebRTC那真是不認識大哥一樣沒有見識,說的可能有點誇大了,但是確實WebRTC在近幾年對音視頻實時通訊這個行業帶來的顛覆是顯而易見的,Google用他自己的魅力+實力征服了很多開發者,小編也是其中之一啦。但是跟隨這項技術這麼長時間來,他帶給我們的確實可以說是行業內頂尖的技術,不說多,單說一個音頻的回聲消除你說你能搞定?那你確實牛B,小編佩服您這樣的牛B人士,有空可以加個微信啥的。。。

WebRTC提供了視頻會議的核心技術,包括音視頻的採集、編解碼、網路傳輸、顯示等功能,並且還支持跨平台:windows,linux,mac,android, iOS等。WebRTC中的任何的一個技術點都可以拿出來列一個專欄進行討論,這裡我們只能簡單粗暴的羅列一下嘍。

視頻相關視頻採集---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技術。

以上列舉的主要來源於網路,WebRTC到今年已經5周歲了,代碼的更新速度一直非常快速,跟隨WebRTC也有兩年的時間,從陌生到熟悉,就像談戀愛一樣有甜有苦,如果最後能終成眷屬就完美了。如果你是音視頻領域剛入行的小夥伴請勇敢的擁抱WebRTC吧,這個技術值得你花時間去研究。


webrtc 已經成為視頻界的一匹黑馬~,也將成為標準的


音頻處理效果好,尤其在迴音處理方面,其它部分就見仁見智了


有現成的demo么。混音這塊做的好嗎。這裡有AMS(adobe media server)做的一個音視頻聊天室,主要是放伴奏的時候混音效果比較差。http://www.vinixiu.com/room/70188


來扒一扒你們使用 webrtc 技術的產品性能圖表。

目前測試實時語音聊天,效果不理想 。30-40% 的 CPU 佔比, 上下行帶寬總和 &<10k/s

總之 CPU 負載有點高


推薦閱讀:

在互聯網的商務總監/BD總監職能中,如何理解戰略合作與渠道流量的關係?
基於物品和基於用戶的協作型過濾推薦演算法分別有何優劣?能否具體舉例一下國內互聯網在這方面的應用場景?
怎麼評價網易失效網頁尋人計劃這個創意?
現在還有人用自動鉛筆嗎?你用它來做什麼呢?為什麼用它呢?
傳統法律服務市場被互聯網顛覆和創新的機會大嗎?

TAG:互聯網 | 視頻會議 | 視頻直播 | 視頻直播軟體 | WebRTC |