【发布时间】:2013-07-26 08:20:31
【问题描述】:
我使用 OpenSL 在 Android 上录制和播放音频。您能否建议我如何测量延迟,以便找到最佳的音频配置(缓冲区、采样率)。
提前谢谢你!
【问题讨论】:
标签: android android-audiorecord opensl
我使用 OpenSL 在 Android 上录制和播放音频。您能否建议我如何测量延迟,以便找到最佳的音频配置(缓冲区、采样率)。
提前谢谢你!
【问题讨论】:
标签: android android-audiorecord opensl
这是我用来测量音频输出延迟的方法:
这种测量方式的好处是它很容易执行。缺点是您的结果也将包括触摸延迟。触摸事件以 60 Hz 的频率生成,这意味着除了音频输出延迟之外,您还可以获得大约 16 毫秒的额外延迟。这使得使用这种方法测量非常小的延迟差异几乎是不可能的。
更新:在 Google 的 Glenn Kasten 的留言板帖子中,他链接到了几个页面,这些页面描述了测量音频延迟的更准确方法。我想我可以在这里添加它们以供参考。 Here's the page 描述测量往返延迟,here's another page 描述仅测量输出延迟。
【讨论】:
你试过这个应用程序来测量它吗? https://play.google.com/store/apps/details?id=com.levien.audiobuffersize 该应用程序由来自 Google 的 Raph Levien 创建,他正在创建一个数据库,其结果位于 http://audiobuffersize.appspot.com/(如您所见,那里已经有很多结果)这是一个非常快速的测试,可以计算最佳缓冲区大小和样本您的设备的速率和实现的最低延迟。从那里我认为,如果很多用户上传他们的结果,我们将能够判断有多少/哪些设备已准备好低延迟音频...
【讨论】:
另一种很好的测试方法是使用通过 OpenSL|ES 提供的 LED 接口。使用它(并借助 LDR),您可以记录从 LED 亮起到发出声音之间的时间。
这是谷歌人员在为自己的设备执行此操作时使用的方法之一。他们深入探讨了这一点,以及更多关于 android 中低延迟音频的主题,in this video.
【讨论】:
添加到@Michael 的方法或找出输出延迟,如果您对往返延迟感兴趣,即录制播放。那么
1) 只需运行一个简单的音频环回应用程序(确保缓冲区大小和队列正确完成)。
2) 最好保持低音量以避免反馈回声,但回声应该仍然存在并且可以听到
3) 现在通过不同的麦克风 (PC) 录制输出并发出敲击声,例如打响指
4) 将音频从第二个麦克风 (PC) 导入 goldwave 或 audacity,并测量快照与设备播放快照之间的延迟
这将是您的往返延误
虽然回复晚了,希望对你有帮助
问候, 虾肉
【讨论】: