我已经创建了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时看到的结果一致,但音频在第一种情况下恢复,而不是在第二种情况下恢复。
答案 0 :(得分:0)
显然,这是不可能的。如果你问我,似乎是一个错误。哦,好吧。
你好迈克尔,
感谢您与Apple开发者技术支持(DTS)联系。我们的 工程师已经审查了您的请求并得出结论 没有支持的方法来实现所需的功能 目前正在发货系统配置。
如果您希望Apple考虑为此添加支持 未来的功能,请通过提交增强请求 错误报告工具http://bugreport.apple.com。
虽然您最初因此遭到技术支持事件的指控 支持请求,我们已将更换事件分配给您 帐户。
感谢您抽出宝贵时间提交此报告。我们真的很感激 你帮助发现和隔离问题。
最诚挚的问候,
开发人员技术支持Apple全球开发人员关系