我正在开发一个应用程序,它需要使用MPMoviePlayerController从URL播放视频,同时使用麦克风的AudioQueue获取音频样本以进一步分析它们。
问题是我无法录制视频何时开始播放(以及完成时)。只需音频采样停止。相反,如果我禁用视频播放,录音进展顺利。 我已经尝试使用属性kAudioSessionProperty_OverrideCategoryMixWithOthers设置AudioSession但没有成功(它返回错误)。此外,我认为在使用AudioQueue时,在AudioSession中设置属性是无用的。即使为MPMoviePlayerController设置useApplicationAudioSession = NO也不会提供任何帮助。
在此创建播放器的核心代码:
audioManager = [[AudioController alloc] init];
//setting AudioQueue: audio buffer, sample rate, format ID (PCM), bits per channel
audioManager.delegate = self;
[audioManager startAudioRecording]; //starts recording with AudioQueue
self.playerVC = [[[MPMoviePlayerController alloc] init] autorelease];
layerVC.view.frame = self.viewPlayer.bounds;
[self.viewPlayer addSubview:playerVC.view];
playerVC.useApplicationAudioSession = YES; //if NO nothing changes
[playerVC setContentURL:[NSURL URLWithString:@"http://www......."]];
[playerVC prepareToPlay];
[playerVC play];
答案 0 :(得分:2)
你是正确的方式。 首先,将kAudioSessionProperty_OverrideCategoryMixWithOther设置为true。这将允许您的应用声音与其他应用的声音混合。
UInt32 allowMixing = true;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing);
之后,您需要将MPMoviePlayerController设置为不使用您应用的AudioSession:
[yourMPMoviePlayerControllerInstance setUseApplicationAudioSession:NO];