【问题标题】:AVAudioEngine crashes when plug headphones in or out插入或拔出耳机时 AVAudioEngine 崩溃
【发布时间】:2014-12-30 22:28:03
【问题描述】:

我正在我的 iPhone6 Plus 上测试我的audioApp,它在插入或拔出耳机后崩溃。 AVAudioEngine, AVAudioMixer, AVAudioPlayerNode 在我的应用程序中使用。

在没有耳机的情况下启动应用程序可以从 iPhone 扬声器播放声音。

使用耳机启动应用可以播放耳机的声音。

错误发生在以下情况。 在没有耳机的情况下启动应用程序并从扬声器播放声音。然后,如果我连接耳机,则耳机没有声音。之后拔下耳机时,即使是扬声器也没有声音。当我触摸屏幕时,audioApp 崩溃。

与使用耳机启动应用程序并拔出耳机相同。

如何解决此错误? 非常感谢您的建议。

这是我收到的错误消息。

Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'required condition is false: _engine->IsRunning()'
*** First throw call stack:
(0x184d61e48 0x1954a80e4 0x184d61d08 0x1836d26c0 0x1836fa328 0x1836f975c 0x1000d03c0 0x1000d0728 0x1895450f8 0x18952e22c 0x189544a94 0x189544720 0x18953dc74 0x18951138c 0x1897b01b4 0x18950f8f4 0x184d1a0e8 0x184d1938c 0x184d1743c 0x184c451f4 0x18ddd35a4 0x189576784 0x1000d5614 0x1000d5654 0x195b16a08)
libc++abi.dylib: terminating with uncaught exception of type NSException

【问题讨论】:

    标签: swift


    【解决方案1】:

    您需要注册AVAudioEngineConfigurationChangeNotification 通知并执行必要的步骤来更新输出节点。

    【讨论】:

    • 工作,谢谢!我还使用this link 如何在打开/关闭耳机时更改标签文本。
    • 那么更新输出节点的必要步骤是什么?我正在使用 mainMixer 节点,根本不使用引擎的输出节点。但是当我插入耳机时,引擎没有启动。
    • 如果你刚刚插入了一个新的输出节点,你需要将它连接到你的 mainMixer 节点。
    • @Allen 你能在这里发布一些示例代码吗?除了主混音器单例之外,我没有任何其他输出节点,所以我真的不明白应该做什么重新连接。我看到了Apple's example here 并重新连接了 AVAudioPlayerNode 实例,但它根本没有帮助。
    • @noir_eagle 情况因您的代码而异。这个概念是删除所有内容并根据新更改将它们连接起来。因此,该过程可能类似于这样: for (node in nodes ) { [engine disconnectNodeOutput: node]; AVAudioMixerNode *mainMixer = [引擎 mainMixerNode]; [引擎连接:节点到:mainMixer 格式:格式]; }
    猜你喜欢
    • 2016-06-10
    • 2013-05-01
    • 1970-01-01
    • 2011-04-17
    • 2013-01-07
    • 2017-11-22
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多