我需要具有一种功能,可以在程序运行时(在记录会话之间,而不是在记录过程中)即时更改输入设备以进行记录。 我想这是必须执行的代码。但是,当我尝试更改输入设备时,AKNodeRecorder不记录任何内容(持续时间始终为0),并且尝试在recorder.audioFile上调用exportAsynchronously后,我总是收到以下错误:
[中央] 54:错误:> avae> AVAudioFile.mm:37:AVAudioFileImpl:错误2003334207
试图更改几乎所有内容,但没有任何效果。这是更改输入设备的代码。
func setupRecordingChain(_ deviceIndex: Int = 0)
{
AudioKit.stop()
setupInputDevice(for: deviceIndex)
self.micMixer = AKMixer(self.mic)
self.micBooster = AKBooster(self.micMixer)
self.micBooster.gain = 0
do {
self.recorder = try AKNodeRecorder(node: self.micMixer)
}
catch {
//catch error
}
self.mainMixer = AKMixer(self.micBooster)
AudioKit.output = self.mainMixer
AudioKit.start()
}
private func setupInputDevice(for deviceIndex: Int)
{
guard let inputDevices = AudioKit.inputDevices else { return }
let inputDevice = inputDevices[deviceIndex]
do {
try self.mic.setDevice(inputDevice)
} catch {
//catch error
}
}