如何使用低延迟的Androidaudio

问题:

正如您可能听说过的,Android不提供低延迟audioAPI。 我的意思是低延迟的audio,你应该能够从麦克风获得audio信号,并播放声音,没有太多的时间间隔(例如,5-7毫秒)

我已经尝试了老的Java(与AudioRecord和AudioTrack)和“新的”OpenSL ES。 他们是可怕的,使应用程序无法使用。 这个问题在这里有很好的logging。 顺便说一句,iOS API可以产生大约5-7毫秒的延迟。

寻找解决方法:

但我正在尝试做低延迟audio。 像这样的答案描述。

“但是,我只能通过编写我自己的代码来完成这个工作,这个代码在内部进行了混音,并且只有在播放最终的混音输出时才访问低级audio播放API,在.Net中播放声音的高级方法小巧的框架在理论上是复音的能力,但实际上他们工作可怕(大量的小故障,口吃和扭曲)“。

这对Android有意义吗? 答案是令人沮丧的。

所以我的问题。 Android真的没有办法实现10毫秒的audio延迟?

说实话,我很快就不期待一个解决办法,只希望一个伟大的思想家能够回答这个问题。

Android 4.1+具有低延迟的audioAPI,应该给你低于10毫秒的延迟。 然而,价值因硬件而异(欢迎来到丰富多彩的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/

目前没有办法在没有修改操作系统的情况下在Android设备上获得低延迟audio,即使这样,很多延迟可能来自硬件实现,所以软件无法解决这个问题。 这很令人伤心,因为Linux内核的audio延迟时间小于5ms,而且大部分ARM硬件都有相当的延迟。 我有一个在旧的Palm TX上运行的自定义Linux版本 ,实际上有相当不错的延迟。

作为后续android.hardware.audio.pro开始在Android 6的function承诺往返时间<20ms,我们可以指望单向<10ms。