簡體   English   中英

Webrtc Aecm適用於Android

[英]Webrtc Aecm for Android

我正在為Android開發一個Sip客戶端,我想從webrtc實現Aecm模塊,但我不知道如何正確執行。 我有2個可運行的類,一個用於AndroidRecord(麥克風),一個用於AudioTrack(揚聲器),所以我不知道如何以及在何處調用該api:

int32_t WebRtcAec_BufferFarend(void *aecInst, const int16_t *farend, int16_t nrOfSamples);
int32_t WebRtcAec_Process(void *aecInst, const int16_t *nearend, const int16_t *nearendH, int16_t *out, int16_t *outH, int16_t nrOfSamples, int16_t msInSndCardBuf, int32_t skew);

BufferFarend是AudioTrack緩沖區嗎? 並且將要寫入AudioRecord的緩沖區必須傳遞到“ WebRtcAec_Process”?

WebRtcAec_BufferFarend():

這用於向webRTC aecm提供播放的幀。 您只需要將播放的幀和樣本數放在該幀上即可。

WebRtcAec_Process():

這用於從捕獲的數據中消除回聲。 此功能基本上將MIC捕獲的數據與上一個插入的播放幀進行比較。

現在的主要問題是從哪里比較數據。 為此,該功能有偏差。 它指定數據的比較矩或尾長。 如果計算成功,您將獲得良好的結果。

對於實時:

實時很難測量出良好的偏斜。 因為傳入和播放的數據不會彼此同步。 在那里,您必須考慮接收音頻數據后播放幀以及在MIC中捕獲數據的時間。 另外,您還必須測量PC /設備的播放延遲。 您還應該考慮比較幀的逐塊(ms)數據,以獲得回聲消除的良好結果。 最好使用至少10 ms的塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM