webrtc音訊引擎總結

2021-07-05 21:59:28 字數 969 閱讀 5110

該篇文章將基於voice_engine模組對webrt音訊做個總結,但是不包括網路傳輸部分的細節介紹。關於webrtc的網路模組,將會在接下來的時間以單獨的網路模組介紹與大家分享。

voice_engine 引擎模組的**結構

include資料夾下的所有.h檔案,都是在呼叫webrtc音訊引擎的時候必須包含的標頭檔案。其中現在的版本沒有voe_file.h標頭檔案,我的這個版本本來沒有,早期的版本是有該標頭檔案滴,我加這個是為了解決新版的語音錄音儲存,因為公司要保持錄音檔案。

該模組除include下還有很多的檔案,不能一一介紹,有一定知識基礎的可以自行研究,下面我只介紹下學習瀏覽這些原始碼的方法。

我們知道在語音通話中有源和源的受體,源需要產生聲音,源要通過介質傳輸到受體,然後受體才能聽到聲音,所謂的webrtc引擎實際上解決的就是該問題。

1,源的產生,也是前面介紹的audio_device模組,由該模組從源採集資料,從而產生的數字音訊源;

2,源的處理-採集,由於直接採集的源資料,可能參雜著一些雜質,比如噪音,我們就需要對源資料進行處理,那麼相應的就有audio_processing等相關模組對採集的資料進行處理; 然後進行資料的壓縮,為傳輸做準備。

3,源的傳輸,網路的傳輸基本都是基於upd或者tcp進行資料傳輸,webrtc採用的是基於udp的rtp傳輸協議和rtcp傳輸控制協議進行傳輸;

基本根據上面的5步能完成整個音訊資料的互動。兩個人進行音訊會話,每個人完成一次1~5的步驟就可以進行一次時事通話了。

這裡重點提一下多人會話的情況:



webrtc音訊引擎之壓縮格式介紹

webrtc的音訊壓縮格式主要包含 g711 g722 ilbc isac opus。前兩個g系列的壓縮格式都是時代的產物,促進了音訊技術的發展。後面的三個有失真壓縮格式都是網際網路時代voip的產物,我在使用的時候沒感覺到他們之間的具體能帶來什麼差別,可能是沒有具體的比較吧,也不知道這三個誰優於誰...

webRTC 音訊類別

enum vadactivity enum speechtype webrtc 的回聲抵消 aec aecm 演算法主要包括以下幾個重要模組 1.回聲時延估計 2.nlms 歸一化最小均方自適應演算法 3.nlp 非線性濾波 4.cng 舒適雜訊產生 雙音多頻,由高頻群和 低頻群組成,高低頻群各包含...

WebRTC中音訊能量計算

webrtc中實現獲取音訊能量計算的方法是 獲取音訊資料最大的振幅 即絕對值最大 範圍是0 32767 然後再除以1000,得到0 32之間的數值。從陣列中獲取相應索引所對應的能量level等級。我們看下webrtc中level indicator.cc中對音訊level判斷的處理。namespac...