webrtc開源項目音頻重采樣“不友好接口”的幾點總結


       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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM