AVAudioSession setCategory无法正常工作

我有一个video捕捉应用程序,我希望能够在录制音频+video时播放背景音乐。

如果我在didFinishLaunchingWithOptions中将AVAudioSession类别设置为AVAudioSession我可以完成此操作。 但是,每当相机的视图进入或退出前景时,这会导致音频出现故障,并且显然无法摆脱: https : //forums.developer.apple.com/message/74778#74778

如果只是在我开始/停止录制video时发生故障,我可以忍受故障,但这意味着我需要在按下按钮时将AVAudioSession类别从Ambient更改为AVAudioSession ,这似乎也是不可能的。

如何更改AVAudioSession类别?

我试过这个:

 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil]; 

但录制开始时背景音乐停止。

以下post: AVCaptureSession和背景音频iOS 7

我尝试停用会话然后设置类别:

 AVAudioSession *session = [AVAudioSession sharedInstance]; [session setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error]; [session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error:nil]; [session setActive:YES error:&error]; 

我也尝试在停用会话后侦听AVAudioSessionRouteChangeNotification并在该处理程序中设置类别。 但是当应用程序开始录制时,背景音乐总是会关闭。

为什么我不能更改AVAudioSession类别?

请尝试此类别

AVAudioSessionCategoryMultiRoute

或检查两个类别AVAudioSessionCategoryPlayAndRecord | AVAudioSessionCategoryRecord