我以另一种方式找到了解决方案。我使用的音频图由两个音频单元组成。数字混音器和输出音频单元。我创建了带有六个通道的混音器,这样我就可以同时演奏六种乐器。当用户创作音乐时,我会保存内容,在离线录制期间,我会将保存的乐器排序到混音器。
为了获得更好的性能,我将在加载新的音频或乐器文件时停止音频图。加载文件后,录制将再次恢复。
在混音器的输入播放功能中,根据输入的总线号,将音频包送入混音器。在输出音频单元的输入回放中,分配了一个新的缓冲区来存储混音器的输出。混音器输出是使用音频渲染功能创建的。由于我没有修改音频输入缓冲区,因此应用程序之外不会有声音。最后我有了一个离线录音机。
脚步
- 使用录制和播放模式创建音频会话
- 使用混音器和音频输出单元创建音频图。
- 配置混音器通道或输入总线编号(音频流的数量)。
- 为混音器和音频单元创建输入播放方法。
- 将源和目标音频格式配置到音频单元输入和输出总线。
- 使用目标格式创建音频文件(对于 AAC 编码检查 AAC 编码支持)。
- 获取音频文件并开发一种方法来为指定通道提供音频包。
- 在混音器的音频输入播放中配置音频文件获取。
- 在输出单元的音频输入播放中,使用音频渲染功能在新的音频缓冲区中获取混音器输出。将音频缓冲区存储到打开的音频文件中。
- 使用音频图停止录制暂停并使用音频图启动方法恢复录制。在此间隔期间配置新的声音文件获取。
- 最后停止录制并关闭音频文件。