2011-12-07 148 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的单程。