使用AudioQueue录制时,使用MPMoviePlayerController播放视频

时间:2012-02-15 09:48:50

标签: iphone ios audio video audio-recording

我正在开发一个应用程序,它需要使用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];

1 个答案:

答案 0 :(得分:2)

你是正确的方式。 首先,将kAudioSessionProperty_OverrideCategoryMixWithOther设置为true。这将允许您的应用声音与其他应用的声音混合。

UInt32 allowMixing = true;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing);

之后,您需要将MPMoviePlayerController设置为不使用您应用的AudioSession:

[yourMPMoviePlayerControllerInstance setUseApplicationAudioSession:NO];