Android AudioTrack 播放延迟

标签 android audio audiotrack

我正在尝试使用 AudioTrack 播放原始声音数据Android 中的类,我使用 write方法,但我注意到在 write 方法返回和播放实际声音之间存在延迟,为简单起见,让我们使用 AudioRecord类为以下psedu代码:

//init AudioTrack
//init AudioRecord
while(true){
    byte [] buffer = new byte[1000];
    int read = audioRecord(buffer,0,1000);
    audioTrack.write(buffer,0,read);
}

我希望得到 read / sample rate 的延迟。秒,但实际声音是在大约 0.5 秒之后播放的,我真的需要以最小的延迟播放音频,所以有没有人解释正在发生的事情,是否有任何可用的解决方案,或者我应该接受这个作为这是硬件问题吗?

最佳答案

我假设您的目标是提出一些交互式音频解决方案(即播放声音以响应某些用户操作),因为在这种情况下,低延迟确实很重要。

在 Android 上,要实现最低延迟,您需要使用 Open SL ES API,该 API 可通过 NDK 用于 native (C++) 代码。唯一可以实现低延迟的 Java 端机制是 SoundPool类,但它对您可以播放的声音类型有限制。

如需更多信息,请参阅 the page on high-performance audio ,并查看这个 SO 答案:Low-latency audio playback on Android

关于Android AudioTrack 播放延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40321253/

相关文章:

actionscript-3 - 如何在AS3中缓存音频流数据并访问它

audio - 在 ffmpeg 中混合音轨的文件上添加另一个音频

android - 在 AudioTrack 上播放非阻塞数据

android - AudioTrack 中的错误

android - 你如何在Android上记录一个int?

android - 通过我的应用程序安装apk

android - 有什么方法可以检测图像是从 picasso 的缓存中加载的吗?

python - 没有下载模块可以在 Python 中使用 MP3 处理声音?

android - 如何同时播放多个 ogg 或 mp3 ..?

java - 在操作栏上按 "back"时 Android 应用程序崩溃