我在使用iOS音频框架创建一个简单的应用程序时遇到了一些麻烦。我想通过麦克风录制音频,并在录制时将其播放回用户。
我已经尝试了每个音频框架层(AVFoundation,Audio Queue API和RemoteIO),但只发现了旧的文档和破坏的示例。这似乎是AVFoundation应该处理的简单请求,但我已经探索了以下内容其他SO问题,仍然发现自己盘旋了几个小时才能掌握这个问题。以下是我的评论:
我还下载并审核了Apple的SpeakHere和AurioTouch示例项目。我保证不会在没有谷歌搜索和挣扎的情况下发布。您可以看到"record audio and playback iOS simultaneously"返回许多过时和非工作的示例。我知道自己和社区可以真正受益于音频部分中的一些更新的文档和示例。对于这么简单的任务,RemoteIO似乎太先进了。再次感谢您的帮助和考虑。
答案 0 :(得分:5)
执行此操作的适当方法是通过AudioUnit API,即使它似乎应该由更高级别的API处理。
我使用AudioUnit写了一个小demo app。您可以自由尝试我们并根据您的目的进行修改。该演示应用程序会录制音频并同时播放,但建议您使用耳机查看效果。
答案 1 :(得分:0)
RemoteIO音频单元是以低延迟播放录制内容的唯一方法。 RemoteIO是低延迟的,因为它在一个单独的专用实时线程中运行音频回调,这就是它快速的原因,也是为什么代码更复杂的原因。所有其他iOS音频API都构建在RemoteIO之上,因此增加了延迟。
您还需要配置应用程序的音频会话API,以使用适当的音频会话类型请求低延迟。前台应用程序可以在大多数iOS设备上请求并获得低至5.6毫秒的音频输入和输出延迟。