2010-05-19 34 views
3

有什麼方法可以同步Android中音頻數據的捕獲和回放?如何同步AudioRecord和AudioTrack

我需要做一些信號處理(回聲消除等),需要在採樣級同步。

I.e.硬件捕捉音頻幀的時間很短,我需要高精度地通過揚聲器播放的相應幀。

任何幫助或暗示真的很感激。提前致謝。

-flesym

回答

1

我能得到迴音消除對我的Arm5(WM8650)處理器工作。下面是我採取的步驟:

  1. 我用JNI包裝Speex並在發送PCM幀到編碼器之前調用回聲處理例程。無論我嘗試過哪些Speex設置,都不會取消回聲。

  2. 由於Speex對播放和回聲幀之間的延遲非常敏感,我實現了一個隊列並將發送到AudioTrack的所有數據包排隊。隊列的大小應該大致等於內部AudioTrack緩衝區的大小。大致在AudioTrack從其內部緩衝區向聲卡發送數據包時,這種方式發送到echo_playback。這種方法消除了延遲,但回聲仍未取消

  3. 我用JNI封裝了WebRtc回聲消除部分,並在將數據包發送到編碼器之前調用了它的方法。回聲仍然存在,但圖書館顯然試圖取消它。

  4. 我應用了P2中描述的緩衝技術,它終於開始工作。雖然需要爲每個設備調整延遲。另請注意,WebRtc具有移動和完整版本的迴音消除功能。完整版顯着降低了處理器速度,應該只能在ARM7上運行。移動版本工作,但質量較差

我希望這會幫助某人。

相關問題