c_b*_*oth 5 ios avaudioengine audiokit
我正在使用AudioKit开发一个音频应用程序,它涉及定期停止AudioKit,重新安排或替换AKNode子类链,然后重新启动AudioKit.这一直顺利进行,直到我尝试过AKMicrophone.
如果AKMicrophone在初始声音链中存在,即,当我第一次调用时AudioKit.start(,它可以正常工作.但是,如果我AKMicrophone在之前的调用之后的某个时刻进入声音链AudioKit.start(),则应用程序将在下一次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
Run Code Online (Sandbox Code Playgroud)
为了说明,以下代码顺利运行:
let mic = AKMicrophone()
if let input = AudioKit.inputDevice {
try! mic.setDevice(input)
}
AudioKit.output = mic
AudioKit.start()
Run Code Online (Sandbox Code Playgroud)
但是如果它之前被调用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()
Run Code Online (Sandbox Code Playgroud)
有什么方法可以避免这种情况吗?甚至帮助理解错误消息也会有所帮助.谢谢.
编辑:我注意到相同的行为AKStereoInput- 在相同条件下的相同错误消息
后
AudioKit.output = AKOscillator()
AudioKit.start()
Run Code Online (Sandbox Code Playgroud)
尝试;
do{
try AudioKit.stop()
try AudioKit.shutdown()
AudioKit.output = nil
}catch{
print(error)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |