如何使用低延迟的Android音频

时间:2011-12-07 23:33:52

标签: android audio latency

问题:

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

我尝试过旧的java(带有AudioRecord和AudioTrack)和#34; new" OpenSL ES。它们非常糟糕,使应用程序无法使用。The issue was well documented here. BTW,iOS API可以产生大约5-7毫秒的延迟。

寻找解决方法:

但我还是想尝试低延迟音频。 Something like this answer describes.

  

"但是,我只能通过写我的文章来满意地实现这一目标   自己的代码在内部进行混合并访问低级别   音频播放API仅用于播放最终的混合输出。该   在.Net Compact Framework中播放声音的更高级别的方法是   理论上能够复音,但在实践中他们的工作非常糟糕   (很多毛刺,口吃和扭曲)。"

这对Android有意义吗? An answer is discouraging.

所以我的问题。使用Android真的没有办法实现10毫秒的音频延迟吗?

老实说,我不希望很快就能找到解决方案,但只是希望一位伟大的思想能够解决这个问题。

3 个答案:

答案 0 :(得分:4)

android 4.1+具有低延迟音频api,应该会给你低于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/

答案 1 :(得分:3)

目前无法在不修改操作系统的情况下在Android设备上获得低延迟音频,即使这样,很多延迟也可能来自硬件实现,因此软件无法解决这个问题。这是令人遗憾的,因为Linux内核能够具有<5ms的音频延迟,并且许多ARM硬件具有良好的延迟。我有一个自定义Linux build running on an old Palm TX,实际上有相当不错的延迟。

答案 2 :(得分:3)

作为跟进从Android 6开始的android.hardware.audio.pro的功能承诺&lt; 20ms往返时间,我们希望这意味着<10ms单向。