我目前正在尝试最小化简单应用程序的音频延迟:
我在PC上有一个视频,我正在通过RTP将视频的音频传输到移动客户端.使用非常相似的缓冲算法,我可以在iOS上实现90ms的延迟,但在Android上可以实现±180ms的可怕延迟.
然而,在阅读了一下后,我发现了这篇文章,其中指出:
自Android 4.1/4.2以来,在某些设备中可以使用低延迟音频.
使用libpd可以实现低延迟音频,libpd是Android的纯数据库.
我有两个问题,与这两个陈述直接相关:
我在哪里可以找到有关Jellybean中新的低延迟音频的更多信息?这是我能找到的全部,但它缺乏具体的信息.如果这些更改对我来说是透明的,或者是否有一些新的类/ API调用我应该实现我注意到我的应用程序中的任何更改?我正在使用AudioTrack API,我甚至不确定它是否应该从这种改进中获益,或者我是否应该研究其他一些音频播放机制.
我应该考虑使用libpd吗?在我看来,这是我实现更低延迟的唯一机会,但由于我一直认为PD是一个音频合成实用程序,它是否真的适合于只从网络流中抓取帧并播放它们的项目?我不是在做任何合成.我跟踪错误的踪迹吗?
另外需要注意的是,在有人提到OpenSL ES之前,本文非常清楚地表明使用它时不应期望延迟有所改善:
"由于OpenSL ES是本机C API,调用OpenSL ES的非Dalvik应用程序线程没有与Dalvik相关的开销,例如垃圾收集暂停.但是,除此之外,使用OpenSL ES没有额外的性能优势.特别是,使用OpenSL ES不会导致比平台通常提供的更低的音频延迟,更高的调度优先级等."