我正在用AudioKit开发一个音频应用,其中包括定期停止AudioKit,重新排列或替换AKNode子类链,然后重新启动AudioKit。在我尝试使用AKMicrophone之前,它一直运行得很顺利。
如果在初始声音链中存在AKMicrophone,即当我第一次调用AudioKit.start(时),它工作得很好。但是,如果我在之前调用AudioKit.start()之后的某个时刻将AKMicrophone放入声音链中,应用程序将在下一次AudioKit.start()调用时崩溃,并产生以下错误消息:
...[avae] AVAudioEngine.mm:149:-[AVAudioEngine prepare]: Engine@0x1c0007170: could not initialize, error = -10875
...[mcmx] 338: input bus 0 sample rate is 0
...[avae] AVAEInternal.h:103:_AVAE_CheckNoErr: [AVAudioEngineGraph.mm:1266:Initialize:
(err = AUGraphParser::InitializeActiveNodesInOutputChain(ThisGraph, kOutputChainOptimizedTraversal, *GetOutputNode(), isOutputChainActive)): error -10875为了说明这一点,下面的代码运行得很流畅:
let mic = AKMicrophone()
if let input = AudioKit.inputDevice {
try! mic.setDevice(input)
}
AudioKit.output = mic
AudioKit.start()但是如果它前面是对AudioKit.start()的调用,它将崩溃:
AudioKit.output = AKOscillator()
AudioKit.start()
AudioKit.stop()
let mic = AKMicrophone()
if let input = AudioKit.inputDevice {
try! mic.setDevice(input)
}
AudioKit.output = mic
AudioKit.start()有什么方法可以避免这种情况吗?即使是帮助理解错误消息也会有所帮助。谢谢。
编辑:我注意到相同的行为AKStereoInput -相同的错误信息在相同的条件下
发布于 2019-04-26 06:37:31
之后
AudioKit.output = AKOscillator()
AudioKit.start()尝试;
do{
try AudioKit.stop()
try AudioKit.shutdown()
AudioKit.output = nil
}catch{
print(error)
}https://stackoverflow.com/questions/48576639
复制相似问题