webrtc是一個(gè)基于瀏覽器的開源實(shí)時(shí)通信開發(fā)庫(kù),我們可以通過簡(jiǎn)單的javacript語言實(shí)現(xiàn)在網(wǎng)頁上傳輸實(shí)時(shí)的音、視頻傳輸,webrtc支持的瀏覽器包括:谷歌chrome瀏覽器、firefox瀏覽器、Mozillia、Opera瀏覽器等,webrtc的出現(xiàn)為我們的網(wǎng)頁視頻會(huì)議的開發(fā)提供了一條捷徑。Webrtc是Google收購(gòu)著名的GIPS公司后推出的開源項(xiàng)目,其源代碼里面不僅公開了GIPS公司的語音引擎—VoiceEngine,還在這基礎(chǔ)上實(shí)現(xiàn)了面向?yàn)g覽器的音、視頻實(shí)時(shí)通信。對(duì)于這個(gè)重量級(jí)的開源項(xiàng)目,我們應(yīng)該怎樣充分利用它作為我們網(wǎng)絡(luò)視頻會(huì)議開發(fā)的參考呢?我們現(xiàn)在就列舉一下webrtc的主要功能及我們?nèi)绻褂眠@些功能。
1、 語音引擎
語音引擎是GIPS的語音通信的殺手锏,其主要是通過一系列的傳輸控制來達(dá)到在低帶寬下傳輸實(shí)時(shí)的語音,GIPS語音引擎有著廣泛的客戶群,如skype、QQ等語音都是采用GIPS的語言引擎。通過其語音引擎,不僅能傳輸質(zhì)量更高的語音,還能在丟包非常嚴(yán)重的網(wǎng)絡(luò)下傳輸實(shí)時(shí)的語音。我們應(yīng)該怎樣把語音引擎利用到我們的視頻會(huì)議開發(fā)當(dāng)中呢?首先我們需要知道webrtc的代碼是基于C++,因此我們的開發(fā)調(diào)用的接口最好是采用c++。另外語音引擎需要全部的模塊結(jié)合起來才能發(fā)揮最佳的作用,因此我們不能把語音引擎進(jìn)行分割,語音引擎需要整體運(yùn)行才可能充分發(fā)揮其作用。
2、 視頻引擎
webrtc的視頻引擎和語音引擎一樣,其不能進(jìn)行分割,如果我們使用的話,最好是整個(gè)視頻引擎一起使用。webrtc的視頻引擎從視頻采集、視頻壓縮、視頻傳輸、視頻顯示都已實(shí)現(xiàn)。在網(wǎng)絡(luò)視頻會(huì)議開發(fā)當(dāng)中,我們可以通過視頻引擎的接口來實(shí)現(xiàn)以上的功能。
3、 音頻處理模塊
webrtc的音頻處理模塊與語音引擎不同,其可以分成不同的獨(dú)立處理模塊,因此我們可以把這些模塊抽取出來作為我們的音頻處理模塊,其模塊主要包括:音頻采集、編解碼(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、音頻加密、語音文件處理、聲音處理(AEC、ANS、AGC等)、聲音輸出、音量控制、音視頻同步、網(wǎng)絡(luò)傳輸?shù)饶K。
4、 視頻處理模塊
視頻處理模塊同樣可以是分成不同的模塊,因此我們可以把它做為我們視頻會(huì)議系統(tǒng)的不同模塊,而這些模塊包括視頻采集、編解碼、視頻加密、流媒體文件、圖像處理、視頻顯示、網(wǎng)絡(luò)傳輸與數(shù)據(jù)控制等功能。
總結(jié),webrtc是一個(gè)完整、開源的音、視頻實(shí)時(shí)傳輸庫(kù),其一些模塊如:AEC、ANS、數(shù)據(jù)加密、音視頻同步等模塊非常值得我們?cè)诰W(wǎng)絡(luò)視頻會(huì)議開發(fā)中作為參考,從而提高視頻會(huì)議系統(tǒng)各模塊的處理效率。