适用于Android的低延迟音频API?

Ric*_*ich 20 java audio mobile android

在Android设备上以最少的延迟播放同步音频有哪些选择?我是否会从罐装SDK中获得一些不错的东西,还是要求太多?该文档声称SoundPool类能够以相对较好的性能同时播放多个声音,但在模拟器和物理设备上运行一些测试后,它似乎相当弱.可能有一个技巧,或者我是否必须为更低级别的api做这种事情?我尝试使用单个声音池加载多个样本,我尝试了多个声音池,每个声音池管理一个样本.我正在预加载所有内容,因此当我尝试播放时,除了调用SoundPool.play()之外,我没有执行其他代码.

mat*_*tbh 6

许多人对Andriod的低延迟音频感兴趣.以下是我关注的话题:

  • 一个覆盖音频从今年的I/O大会相关的主题.
  • 有关支持NDK中低延迟音频的Android 问题.

这篇文章表明Android设备具有ALSA驱动程序(能够实现低延迟音频) - 但似乎低延迟功能不会通过NDK向应用程序公开.

我没有Android的直接经验,但从我所读到的,低延迟(小于<10ms左右)尚未成为现实.请发布相反的经验!


dlj*_*ava 6

Android 2.3现在支持对低延迟应用程序的本地访问音频API(通过OpenSL).

但是,并非所有硬件设备都具有低延迟音频功能配置文件.因此,通过在清单中指定以下内容,需要低延迟音频shouuld过滤器设备的应用程序在Android市场中不支持它:

<uses-feature android:name="android.hardware.audio.low_latency"/>
Run Code Online (Sandbox Code Playgroud)

  • 这是一种营销噱头 - 让某人认为"跟上苹果的步伐".它应该被称为"中等延迟".我不认为有太多的用例可以从50毫秒的延迟中受益.这对于正确的音频响应来说太慢了,对其他任何事情都是不必要的要求. (7认同)

Mus*_*sis 4

我没有任何 Android 经验,但我为 Windows Mobile 写过类似的东西。这些设备本身当然能够以低延迟(低于 25 毫秒)实时混合多个声音,尽管我所说的“多个”可能是 4 或 5 个(而不是 30 到 40)。然而,我只能通过编写自己的代码来令人满意地实现这一点,该代码在内部进行混合并访问低级音频播放 API 仅用于播放最终的混合输出。.Net Compact Framework 中播放声音的高级方法理论上可以实现复调,但实际上它们的效果很糟糕(有很多故障、卡顿和失真)。

我怀疑Android音频SDK也有同样的问题,所以你可能必须自己编写。