我在开发 VoIP 应用程序。 AudioSession 的模式设置为 kAudioSessionMode_VoiceChat。
为了通话,我打开了一个子类型为 kAudioUnitSubType_VoiceProcessingIO 的 CoreAudio AudioUnit。一切正常。第一次通话后,我使用 AudioUnitUninitialize() 关闭 AudioUnit 并停用 Audio Session 。
然而,现在似乎音频设备没有正确释放:铃声音量很低,媒体播放器的音量比平时低。对于后续调用,我无法再激活 kAudioUnitSubType_VoiceProcessingIO。它可以使用 kAudioUnitSubType_RemoteIO 创建一个 AudioUnit,但通话的音量也非常低(接收器和扬声器)。
这首先发生在 iOS 5 上。对于 iOS 6 上的 iPhone 5,情况更糟(甚至更低的音量)。
有人看过吗?我需要做的不仅仅是 AudioUnitUninitialize() 来释放语音处理单元吗?
最佳答案
我找到了解决方案:我错误地使用了 AudioUnitUninitialize()
来释放使用 AudioComponentInstanceNew()
检索到的音频组件。正确的做法是使用 AudioComponentInstanceDispose()
。
关于iOS 5/6 : low volume after first usage of CoreAudio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12688883/