【问题标题】:playing a video with MPMoviePlayerController while recording with AudioQueue在使用 AudioQueue 录制时使用 MPMoviePlayerController 播放视频
【发布时间】:2012-03-06 15:49:01
【问题描述】:

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

【问题讨论】:

    标签: iphone ios audio video audio-recording


    【解决方案1】:

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

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

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

    [yourMPMoviePlayerControllerInstance setUseApplicationAudioSession:NO];
    

    【讨论】:

    • [yourMPMoviePlayerControllerInstance setUseApplicationAudioSession:NO];如果我使用这条线,我的录音机就不会播放。
    猜你喜欢
    • 1970-01-01
    • 2013-07-08
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多