2011-12-07 80 views
7

問題:如何使用Android音頻低延遲

正如你可能已經聽說過,Android不具有低延遲的音頻API提供。我的意思低延遲音頻是,你應該能夠從麥克風來獲取音頻信號並播放聲音能夠(例如,5-7毫秒)

我試過的舊Java之間,多少時間間隔(以AudioRecord和AudioTrack)和「新」OpenSL ES。它們很糟糕,使應用程序無法使用。 The issue was well documented here. BTW,iOS API可以產生大約5-7毫秒的延遲。

尋找解決方法:

但我想無論如何做低延遲音頻。 Something like this answer describes.

「不過,我只能寫我 自己的代碼,做了內部混合充分達到這一點,並訪問的低級別 音頻播放API只玩最終混合輸出, 更高在.Net精簡版框架中播放聲音的級別方法是理論上可以複音的 ,但實際上它們的工作非常可怕(大量小故障,口吃和失真)。「

是否爲Android這個有意義嗎? An answer is discouraging.

所以我的問題。 Android真的沒有辦法實現10毫秒的音頻延遲?

說實話,我不希望很快在一段時間的解決方案,但只希望一個偉大的心靈必須回答這個問題。

回答

3

目前還沒有辦法讓Android設備上的低延遲音頻,而無需修改操作系統,而且當時有很多的延遲可以來自硬件實現,所以軟件不能修復。這很讓人傷心,因爲Linux內核能夠很好地處理5ms的音頻延遲,而且大多數ARM硬件都有很好的延遲。我有一個自定義Linux build running on an old Palm TX,實際上有相當不錯的延遲。

4

android 4.1+具有低延遲音頻api,應該給你低於10ms的延遲。然而,這個數值因硬件而異(歡迎來到Android的豐富多樣的世界)。

還具有的「android.hardware.audio.low_latency」描述符可以用於缺乏低延遲支撐濾出設備。

退房http://www.youtube.com/watch?v=Yc8YrVc47TI&feature=player_de%20tailpage#t=1366s

這:http://createdigitalmusic.com/2012/07/android-high-performance-audio-in-4-1-and-what-it-means-plus-libpd-goodness-today/

3

爲後續的android.hardware.audio.pro的功能在Android中6個諾言開始< 20ms的往返時間,我們可以希望意味着< 10ms的單程。