【发布时间】:2012-02-04 17:09:10
【问题描述】:
我想做这个非常简单的事情:从内存中播放 PCM 音频数据。
音频样本将来自声音合成算法、预加载的样本文件或其他任何东西。我的问题实际上是关于如何播放缓冲区,而不是如何用数据填充它们。
因此,我正在寻找重新实现旧的、已弃用的 AudioWrapper(基于 AudioUnits V1)的最佳方法,但我在 Apple Documentation 中找不到这样的 API将满足以下条件:
- 与 10.5 到 10.7 兼容。
- 在 ios 中可用。
- 不依赖第三方库。
- 面向未来(例如:不基于 Carbon,64 位...)。
我正在考虑使用 OpenAL,但它真的是最好的选择吗?我已经看到 negative opinions 了,它可能过于复杂和矫枉过正,并且可能会增加性能开销?
更糟糕的是,我可以有两个不同的实现 AudioWrapper,但如果可能的话,我真的很想避免每个系统都有一个版本(ios、10.5、10.6、10.7.. .)。此外,它将使用 C++。
编辑:我需要一个良好的延迟,系统必须在 20 毫秒内响应用户交互(缓冲区必须在 44KHz 的 128 到 512 个样本之间)
【问题讨论】:
-
OpenAL 增加了一些开销,而且设置时间比使用原生音频 API 更长,所以在 iOS 上我建议使用 AudioQueues 或 AVFoundation。
标签: ios macos audio core-audio openal