Экспорт AudioKitАсинхронный сбой после изменения устройства ввода - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужно сделать возможность менять устройство ввода для записи на лету во время работы программы (между сеансами записи, а не в процессе записи).Вот код, который, я полагаю, должен сделать это.Но когда я пытаюсь изменить устройство ввода, AKNodeRecorder ничего не записывает (длительность всегда 0), и после попытки вызвать exportAsynchronously на рекордере .audioFile, я всегда получаю следующую ошибку:

[central] 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 
    }
}
...