Android 音频延迟解决方法

8
所以,Android开发社区中任何值得一提的人都知道与Android中低延迟音频有关的3434问题。对于那些不知道的人,您可以在此处了解相关信息。http://code.google.com/p/android/issues/detail?id=3434 我正在寻找任何临时解决方案以用于我的个人项目。我听说过通过自己构建Android并修改NDK来公开NDK的私有接口。
我只需要一种访问低级alsa驱动程序的方法,这些驱动程序已经包含在标准2.2版本中。我希望能够直接将PCM发送到我的设备上的音频硬件。我不介意生成的应用程序无法在市场上分发,并且可能无法在除我的设备之外的任何设备上运行。
有人有任何有用的想法吗?
-Griff
编辑:我应该提到,我知道AudioTrack提供此功能,但我想要更低的延迟--AudioTrack大约为300ms,我希望在20-30ms左右。
2个回答

7

Griff,这正是问题所在,NDK不会改善已知的延迟问题(甚至有记录)。本地代码中的硬件抽象层目前正在增加延迟,因此问题不仅仅是访问低级驱动程序(顺便说一下,你不应该依赖于alsa驱动程序存在)。


1
呃,我本来希望不是这种情况。实际上,我曾经有机会在2011年GDC与Android团队交流,他们告诉我这并不完全是硬件问题,而是一种不容易解决的架构问题。 - Griffin
看看 @Ian Ni-Lewis 的评论 - 4.1 版本的情况正在变得越来越好。 - James Moore
我预测不会有架构方案的解决,因为谷歌并不关心这些冒充智能手机的数据挖掘设备的实际性能。 - Daniel Randall

1

Android: 声音API(确定性,低延迟) 很好地涵盖了权衡。太长不看:NDK可以为您提供轻微的好处,因为线程可以以更高的优先级运行,但在Jellybean之前,这种好处毫无意义,因为整个音频系统都是针对Java调优的。

运行4.1的Galaxy Nexus可以获得相当接近30毫秒的输出延迟。


太好了,一个特定的硬件设备会工作,但只是稍微好一点;这正在变成一个零和游戏。 - Daniel Randall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接