在后台播放MPMoviePlayerController音频流

时间:2014-08-28 04:40:52

标签: ios objective-c xcode mpmovieplayercontroller avaudiosession

所以我有这个应用程序在哪里播放视频,当你退出应用程序时,我希望用户继续收听视频的音频。我使用MPMoviePlayerController播放视频,它在应用程序中工作得非常好。我在播放视频之前也设置了AVAudioSession并且没有错误。

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

我还设置了plist背景模式音频。但是当关闭应用程序时,带有音频的视频都会停止播放。我还导入了AVFoundation框架。

4 个答案:

答案 0 :(得分:0)

只需在.plsit文件

中将Application does not run in background设置为NO即可

答案 1 :(得分:0)

您需要在plist file.i.e中进行一些更改。

1)将所需的背景模式设置为App播放音频

2)设置应用程序不在后台运行到YES。

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

然后,您需要在AppDelegate中编写这么多代码

现在,您可以在手机屏幕锁定或进入后台时轻松运行音频。

答案 2 :(得分:0)

这段代码对我有用,首先你必须给你的应用程序权限,以便继续在后台播放音乐(在你的.plis中),之后转到所希望的类并实现这段代码,首先是导入和方法播放音乐。

#import <MediaPlayer/MPNowPlayingInfoCenter.h>
#import <MediaPlayer/MPMediaItem.h>
#import <AVFoundation/AVFoundation.h>

---- o ----

-(void) playMusic{

     [[AVAudioSession sharedInstance] setDelegate: self];

     NSError *myErr;

     // Initialize the AVAudioSession here.
    if (![[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&myErr]) {
       // Handle the error here.
       NSLog(@"Audio Session error %@, %@", myErr, [myErr userInfo]);
    }else{
       // Since there were no errors initializing the session, we'll allow       begin receiving remote control events
       [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    }

    //initialize our audio player
    audioPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://www.cocoanetics.com/files/Cocoanetics_031.mp3"]];

    [audioPlayer setShouldAutoplay:NO];
    [audioPlayer setControlStyle: MPMovieControlStyleEmbedded];
    audioPlayer.view.hidden = YES;

    [audioPlayer prepareToPlay];

    [audioPlayer play];
}//end playmusic

答案 3 :(得分:0)

您需要在功能中启用后台模式。

As shown in figure checkmark the modes you want in background