WebRTC(Web Real Time Communication)並不是Google原來自己的技術,在2010年,Google以大約6820萬美元收購了VoIP軟件
開發商Global IP Solutions公司,開源了WebRTC實時通信項目。
語音引擎是GIPS的語音通信的殺手鐧,其主要是通過一系列的傳輸控制來達到在低帶寬下傳輸實時的語音,GIPS語音引擎有着
廣泛的客戶群,比如skype、QQ等語音都是采用GIPS的語言引擎。通過其語音引擎,不僅能傳輸質量更高的語音,還能在丟包非常
嚴重的網絡下傳輸實時的語音。
音頻部分涉及:音頻編解碼、聲音加密、聲音處理、回聲消除(AEC)、AECM、自動增益(AGC)、降噪處理。今天試用了 一下聲
音處理部分的CResampler類,用得不是很爽。
1.僅限於單聲道和雙聲道的處理,對於多聲道音頻,需要自己前期做些預處理。
kResamplerSynchronous = 0x10, kResamplerSynchronousStereo = 0x20
2.同樣地:僅限於16bits的數據處理,需要自己添加8bits、32bits、浮點數處理。
int Push(const WebRtc_Word16* samplesIn, int lengthIn, WebRtc_Word16* samplesOut, int maxLen, int &outLen);
3.另外,為了實現快速重采樣算法,每次處理samplesIn的長度有所限制。不同重采樣因子下,對長度要求不一樣。
例如: if ((lengthIn % 80) != 0) return -1; // We can only handle blocks of 80 samples, Can be fixed, but I don't think it's needed
其次,每次處理的最大長度不能超過SHRTMAX。
4. 對於44.1kHz和22.1kHz,都做了簡化處理,當做44kHz和22kHz,減小處理每次處理數據量,加快運算速度,但是同時也
丟失了部分數據,降低了數據精度。
5.最后對分數級的重采樣都分為幾個步驟處理,減小每次處理的數據量,加快運算速率,簡化代碼量,對音頻音質不會產生影響。
總體上來說,這套重采樣代碼實現了重采樣的基本功能,主要優勢體現在速度上,同時依賴的庫和文件比較少。
6.不支持48k轉44.1kHz