首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加AKMicrophone时崩溃

添加AKMicrophone时崩溃
EN

Stack Overflow用户
提问于 2018-02-02 14:07:45
回答 1查看 388关注 0票数 5

我正在用AudioKit开发一个音频应用,其中包括定期停止AudioKit,重新排列或替换AKNode子类链,然后重新启动AudioKit。在我尝试使用AKMicrophone之前,它一直运行得很顺利。

如果在初始声音链中存在AKMicrophone,即当我第一次调用AudioKit.start(时),它工作得很好。但是,如果我在之前调用AudioKit.start()之后的某个时刻将AKMicrophone放入声音链中,应用程序将在下一次AudioKit.start()调用时崩溃,并产生以下错误消息:

代码语言:javascript
复制
...[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

为了说明这一点,下面的代码运行得很流畅:

代码语言:javascript
复制
    let mic = AKMicrophone()
    if let input = AudioKit.inputDevice {
        try! mic.setDevice(input)
    }
    AudioKit.output = mic
    AudioKit.start()

但是如果它前面是对AudioKit.start()的调用,它将崩溃:

代码语言:javascript
复制
    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 -相同的错误信息在相同的条件下

EN

回答 1

Stack Overflow用户

发布于 2019-04-26 06:37:31

之后

代码语言:javascript
复制
AudioKit.output = AKOscillator()
AudioKit.start()

尝试;

代码语言:javascript
复制
do{
   try AudioKit.stop()
   try AudioKit.shutdown()
   AudioKit.output = nil
}catch{
   print(error)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48576639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档