iOS无法在扬声器上播放并设置音频会话进行录制

时间:2014-03-19 11:11:55

标签: ios audio record playback

所需功能:1)插入时通过耳机播放音频,2)未插入耳机时通过扬声器播放音频,以及3)通过耳机或内置麦克风录制音频。

为了让它在扬声器和耳机上播放音频,我使用以下音频会话类型:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError];

然后创建一个音频播放器实例。这非常适合在插入耳机时播放音频,而在播放时不播放扬声器,直到我尝试录制。

录制时,我首先将音频会话设置为AVAudioSessionCategoryPlayAndRecord,然后尝试使用Novicane进行录制。有时这会成功,但有时候应用程序崩溃时没有堆栈跟踪或调试器指示,并且会出现AUIOClient_StartIO错误。

我在Google上搜索此错误表明我需要始终保持会话AVAudioSessionCategoryPlayAndRecord。这确实会导致AUIOClient_StartIO错误发生。

但每当我使用AVAudioSessionCategoryPlayAndRecord进行播放时,它就会开始播放内置式听筒而不是扬声器。

我知道我可以将音频输出通道覆盖到扬声器(例如https://stackoverflow.com/a/1064941/895876),但插入耳机后不会自动切换到耳机音频。

如何获得所有这三项功能?

1 个答案:

答案 0 :(得分:0)

您必须使用AUHAL设备将特定输入设备设置为默认输入,然后将其与AudioQueue连接。

查看this Apple tech。请注意,它可能对你有帮助..

如果不起作用,请使用AVAudioSession

尝试setPreferredInput:

根据我最近阅读的内容,这是我的后脑,我实际上没有尝试过,但知道其他人成功尝试了。

祝你好运。