同时录制和播放音频的问题

Problems Recording and Playing Back Audio Simultaneously

我在使用 iOS 音频框架创建简单应用程序时遇到了一些问题。我想通过麦克风录制音频并在录制时播放给用户。

我已经尝试了每个音频框架层(AVFoundation、Audio Queue API 和 RemoteIO),但只找到了旧文档并且损坏了 examples.It 似乎是 AVFoundation 应该的一个简单请求handle,但我已经探索了以下其他 SO 问题,但仍然发现自己盘旋了几个小时才能掌握这个问题。以下是我的评论:

我还下载并查看了 SpeakHere and AurioTouch sample projects from Apple. I promise I wouldn't post up without hours of googling and struggling. You can see "record audio and playback iOS simultaneously" returns 许多过时的和无效的 examples.I 我自己和社区确实可以从中的一些更新文档和示例中受益音频部分。对于这样一个简单的任务,RemoteIO 似乎太高级了。再次感谢您的帮助和考虑。

执行此操作的适当方法是通过 AudioUnit API,尽管这似乎是应该由更高级别的 API 处理的常见场景。

我用 AudioUnit 写了一个小 demo app。您可以自由试用我们的产品并根据您的目的对其进行修改。演示应用程序确实录制音频并同时播放,但建议使用耳朵phone查看效果。

RemoteIO 音频单元是以低延迟回放正在录制的内容的唯一方法。 RemoteIO 是低延迟的,因为它在单独的专用实时线程中运行音频回调,这就是它速度快的原因,但也是编码有点复杂的原因。所有其他 iOS 音频 API 都构建在 RemoteIO 之上,因此增加了延迟。

您还需要配置应用的音频会话 API,以请求低延迟和适当的音频会话类型。大多数情况下,在大多数 iOS 设备上,前台应用可以请求并获得低至 5.6 毫秒的音频输入和输出延迟。