我正在尝试为一个简单的应用程序最小化音频延迟:
我有一段视频在PC上,我通过RTP将视频的音频传输到移动客户端。使用非常相似的缓冲算法,我可以在iOS上实现90毫秒的延迟,但在Android上却可怕地达到了±180毫秒。
然而,在阅读了一些资料后,我找到了这篇文章,其中提到:
某些设备从Android 4.1/4.2开始支持低延迟音频。
使用libpd,即Pure Data库 for Android可以实现低延迟音频。
我有两个问题,与这两个声明直接相关:
在Jellybean中,我在哪里可以找到更多关于新的低延迟音频的信息?这是我能找到的所有信息,但具体信息非常缺乏。这些变化对我来说应该是透明的,还是我需要实现一些新的类/API调用才能注意到应用程序中的任何变化?我正在使用AudioTrack API,我甚至不确定它是否应从此改进中受益,或者我是否应该寻找其他机制来进行音频播放。
我应该考虑使用libpd吗?在我看来,这似乎是我实现更低延迟的唯一机会,但由于我一直认为PD是一种音频合成工具,所以它真的适用于仅从网络流中抓取帧并播放它们的项目吗?我实际上没有进行任何合成。我是否走错了路?
作为补充说明,在有人提到OpenSL ES之前,这篇文章非常清楚地表明,不应该期望使用它会有延迟方面的改进:
"由于OpenSL ES是本机C API,调用OpenSL ES的非Dalvik应用程序线程没有Dalvik相关开销,如垃圾回收暂停。但是,除此之外,使用OpenSL ES没有其他性能优势。特别地,使用OpenSL ES不会比平台通常提供的具有更低的音频延迟、更高的调度优先级等等。"