如何使用 AVAudioEngine 同时录制多个麦克风

问题描述

我想同时录制来自多个麦克风的音频(Macbook 内置麦克风 + 连接的外部麦克风)。

然而,AVAudioEngine 只有一个 inputNode。是否可以创建和附加代表特定输入设备的其他节点?

解决方法

您可以进入 Audio Midi Setup.app 创建一个包含要从中记录的两个设备的聚合设备,然后将该聚合设备设置为默认输入。

点击输入节点将为您提供包含从两个设备录制的音频的缓冲区,作为奖励,音频将同步!

手动聚合设置也可以通过 Core Audio 完成。

或者,您可以简单地使用 Core Audio 的 RemoteIO AudioUnit 从两个单独的设备进行录音。在这种情况下,您将负责时间戳匹配。这两种方法各有利弊。我自己的反模式是编写一个 AVAudioEngine 解决方案,然后将其替换为 Core Audio。

aggregate device containing two devices,set as default input