提取MPMoviePlayerViewController音频以继续在后台收听

时间:2014-06-05 14:59:24

标签: ios audio mpmovieplayercontroller avaudiosession

首先,我几天来一直在搜索我的问题的解决方案(包括这里)。我发现了一些涉及同一问题的主题,但它们根本没有解决我的问题。

我正在开发一款应用程序,可播放存储在应用程序中的mp4视频以及mp4在线视频。

我正在使用MPMoviePlayerViewController播放视频,并且当我在应用程序时工作正常,但当我按下主页按钮(背景)时出现问题。声音停止,我的目标是在我不在应用程序时(当Iphone被锁定或我在后台时)继续收听视频音频。

我已经配置了选项以继续在plist文件中监听背景中的音频,并尝试创建音频会话但没有任何作用。

我在搜索中发现当你不在应用程序中苹果不允许继续播放视频时为了达到这个目的,你必须做一些事情,比如分离音频并在没有视频的情况下继续播放,然后,当用户回到应用程序,从音频时刻恢复视频,但我找不到有关此方法的更多信息。

我已经创建了一个示例项目来尝试不同的事情,目前我的代码就是这样:

小时。文件:

#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
#import <AVFoundation/AVFoundation.h>

@interface ViewController : UIViewController 

@property (strong, nonatomic) MPMoviePlayerController *moviePlayer;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (strong, nonatomic) AVAudioSession *audioPlayer;




@end

米。档案

-(void)playVideo {

NSString *urlStr = [[NSBundle mainBundle] pathForResource:@"video"
                                                   ofType:@"mp4"];
NSURL *url = [NSURL fileURLWithPath:urlStr];
_moviePlayer= [[MPMoviePlayerController alloc] initWithContentURL:url];

[self.view addSubview:_moviePlayer.view];
int posTitulo = (int) roundf(self.titleLabel.frame.origin.y);
int altTitulo = (int) roundf(self.titleLabel.frame.size.height);
int anchTitulo = (int) roundf(self.titleLabel.frame.size.width);
_moviePlayer.view.frame = CGRectMake(0,posTitulo+altTitulo, anchTitulo, anchTitulo *         0.65);
[_moviePlayer play];

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

NSError *activationError = nil;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:&activationError];
[audioSession setActive:YES error:&activationError];


}

如果某人取得了类似的成绩,我将非常感谢他的帮助。

非常感谢

1 个答案:

答案 0 :(得分:0)

我终于解决了它。

我使用了AVPlayer而不是MPMoviePlayerController,这个&#34;指南&#34;来自苹果开发者网站:

https://developer.apple.com/library/ios/qa/qa1668/_index.html