iPhone OS 3.0上的录音错误kAudioQueueErr_CannotStart

时间:2009-07-04 03:22:15

标签: iphone objective-c audio

我正在研究几种不同的iphone应用程序,它们同时录制和播放声音。想想多轨混音...播放一个声音然后保存,然后在将下一个声音录制到另一个文件时听这个声音。我的机制是启动两个不同的音频队列,一个用于录制,另一个用于播放。

直到OS 3.0发布之前一直工作A-OK ...然而,从那时起,会发生以下情况:

如果我先启动录制队列,它应该可以正常启动,但是对于回放队列的AudioQueueStart调用会返回kAudioQueueErr_CannotStart。

如果我首先启动回放队列,它也可以正常启动,但对记录队列的AudioQueueStart调用会返回相同的错误,kAudioQueueErr_CannotStart。

任何人都有运气调试此错误?好像这两个队列可能正在踩着对方的记忆或其他东西?官方说明是:“音频队列遇到问题,无法启动。”不是很有帮助......

杰里米

2 个答案:

答案 0 :(得分:6)

这是一个陈词滥调的答案,但您是否使用音频会话API将音频类别设置为“播放和录制”?您必须执行此操作才能保留麦克风供应用程序使用。在3.0中对音频会话进行了一系列更改(创建obj-c便捷类AVAudioSession,并定义一些新类别),因此可能会对您进行更改可能会让您感到困扰。

顺便说一句,如果你不在coreaudio-api列表(lists.apple.com)上,你应该是。社区和Apple工程师真的很有帮助。

答案 1 :(得分:0)

也许我错了,但我觉得一次只能存在一个(活动?)音频队列。

您可能需要将输出音频队列切换到音频设备(远程IO) 而AudioQueues对播放来说有点蹩脚,因此音频单元不会受到伤害。

这个人设法做到了,并在blog post中讨论了它。