因此,任何在Android开发社区中值钱的人都知道有关Android中低延迟音频的问题3434。对于那些不这样做的人,你可以在这里自学。 http://code.google.com/p/android/issues/detail?id=3434
我正在为我的个人项目寻找任何类型的临时解决方法。我已经听说通过滚动你自己的android构建和修改NDK来告诉NDK的私有接口。
我只需要一种方法来访问已经与标准2.2版本打包在一起的低级别alsa驱动程序。我希望能够将PCM直接发送到我设备上的音频硬件。我不关心生成的应用程序不会在市场上分发,并且可能不会与我的任何其他设备一起运行。
有人有任何有用的想法吗?
-Griff
编辑:我应该提一下,我知道AudioTrack提供了这个功能,但我希望延迟更低 - AudioTrack大约需要300毫秒,我想大约20-30毫秒。答案 0 :(得分:7)
Griff,这就是问题所在,NDK不会改善已知的延迟问题(甚至可以记录)。本机代码中的硬件抽象层目前正在增加延迟,因此它不仅仅是访问低级驱动程序(顺便说一下,你不应该依赖alsa驱动程序)。
答案 1 :(得分:1)
Android: sound API (deterministic, low latency)很好地弥补了这些权衡。 TL; DR:NDK为您带来了一个小小的好处,因为线程可以以更高的优先级运行,但这种好处在Jellybean之前毫无意义,因为整个音频系统都是针对Java调整的。
运行4.1的Galaxy Nexus可以获得相当接近30毫秒的输出延迟。