更改输入设备后AudioKit exportAsynchronously失败

时间:2018-09-26 11:18:51

标签: macos audiokit

我需要具有一种功能,可以在程序运行时(在记录会话之间,而不是在记录过程中)即时更改输入设备以进行记录。 我想这是必须执行的代码。但是,当我尝试更改输入设备时,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 
    }
}

0 个答案:

没有答案