0

最快”是指最低延迟

我知道的两种方法是:

  1. 使用 android.media.AudioTrack
  2. 将 OpenSL ES 与 NDK/C++ 一起使用

两者中,哪个更快?如果还有其他选择,请赐教。

更多细节:假设我的应用程序将播放倾向于原生硬件格式的声音。EG,如果本机播放采样率为 44.1KHz,我会给它一个 44.1K 的声音。如果原始采样率是 48KHz,我会给它一个 48KHz 的声音。不需要系统混合器或重新采样器。

4

1 回答 1

0

上次我检查 Android 源代码时,仅有的两个使用 Jellybean 中添加的低延迟路径的 API 是OpenSL ESSoundPool(也许ToneGenerator也是如此,但我想这在这里无关紧要)。

如果您有一堆静态声音,则使用 aSoundPool将是最方便的选择。对于实时生成的音频,您必须使用 OpenSL ES。

对于选择低延迟路径需要满足的条件列表,我建议您参考libaudioflingerlibwilhelm的源代码。简短摘要:使用原生采样率、单声道或立体声线性 PCM,没有效果。

于 2013-08-02T06:06:10.540 回答