在解雇MPMoviePlayerViewController子类时,暂停的音乐不会恢复

时间:2014-02-10 18:56:19

标签: ios avfoundation

我已经创建了MPMoviePlayerViewController的子类,以便在我的视频播放时暂停正在播放的任何背景音频(例如Pandora,音乐应用),以便可以听到自己的音频。完成我的视频后,我希望暂停的音频能够继续播放。

我能够使用Apple提供的MoviePlayer示例代码和相关视频(m4v格式但没有音频)。但是,当我使用我需要播放的视频(这是mp4格式而 有音频)时,它不起作用,i。即视频播放完毕后,暂停的音乐不会恢复。请注意,MoviePlayer示例代码使用MPMoviePlayerController,而我更愿意使用MPMoviePlayerViewController,以便获得我想要的免费行为和控件。

当我使用我的MPMoviePlayerViewController子类时,在播放任一视频后,暂停的音频不会恢复。如果必须,我会去MPMoviePlayerController,但前提是我可以弄清楚如何播放所需的视频并在完成时恢复音乐!

这是我的MPMoviePlayerViewController子类:

#import "SACMoviePlayerViewController.h"
#import <AVFoundation/AVFoundation.h>

@implementation SACMoviePlayerViewController

-(void) viewWillAppear:(BOOL)animated
{
  if ([self isBeingPresented])
  {
    [self configureAudioSession];
  }
  [super viewWillAppear:animated];
}

-(void) viewWillDisappear:(BOOL)animated
{
  if ([self isBeingDismissed])
  {
    [self deactivateAudioSession];
  }
  [super viewWillDisappear:animated];
}

-(void) configureAudioSession
{
  NSError *error = nil;
  BOOL configured = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:0 error:&error];
  NSLog(@"Audio session %@", configured ? @"configured" : @"not configured");
  if (error != nil)
  {
    NSLog(@"Configuration error is %@", [error localizedDescription]);
  }
}

-(void) deactivateAudioSession
{
  NSError *error = nil;
  BOOL deactivated = [[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];
  NSLog(@"Audio session %@", deactivated ? @"deactivated" : @"not deactivated");
  if (error != nil)
  {
    NSLog(@"Deactivation error is %@", [error localizedDescription]);
  }
}

@end

当我使用此视图控制器播放没有音频的电影时,我在日志中看到以下内容:

2014-02-10 10:48:48.065 PlayMovie[39385:60b] Audio session configured
2014-02-10 10:49:11.196 PlayMovie[39385:60b] Audio session deactivated

当我播放电影时,我需要使用此视图控制器播放,我在日志中看到以下内容:

2014-02-10 10:49:17.882 PlayMovie[39385:60b] Audio session configured
2014-02-10 10:50:16.023 PlayMovie[39385:60b] Audio session not deactivated
2014-02-10 10:50:16.033 PlayMovie[39385:60b] Deactivation error is The operation couldn’t be completed. (OSStatus error 2003329396.)

这与我在直接使用MPMoviePlayerController时看到的结果一致,但音频在第一种情况下恢复,而不是在第二种情况下恢复。

1 个答案:

答案 0 :(得分:0)

显然,这是不可能的。如果你问我,似乎是一个错误。哦,好吧。

  

你好迈克尔,

     

感谢您与Apple开发者技术支持(DTS)联系。我们的   工程师已经审查了您的请求并得出结论   没有支持的方法来实现所需的功能   目前正在发货系统配置。

     

如果您希望Apple考虑为此添加支持   未来的功能,请通过提交增强请求   错误报告工具http://bugreport.apple.com

     

虽然您最初因此遭到技术支持事件的指控   支持请求,我们已将更换事件分配给您   帐户。

     

感谢您抽出宝贵时间提交此报告。我们真的很感激   你帮助发现和隔离问题。

     

最诚挚的问候,

     

开发人员技术支持Apple全球开发人员关系