2012-09-23 153 views
7

MPMoviePlayerController停止几秒钟后播放后停止播放, 这是我使用的代码:的MPMoviePlayerController几秒钟

NSString *urlAddress = @"http://67.159.28.74:8730"; 
NSURL *url = [NSURL URLWithString:urlAddress]; 

MPMoviePlayerController *player = [[MPMoviePlayerController alloc]initWithContentURL:url]; 
player.movieSourceType = MPMovieSourceTypeStreaming; 

player.view.hidden = NO; 
[self.view addSubview:player.view]; 
[player prepareToPlay]; 

if(player){ 
    [player play]; 
} 

错误即时得到控制台是:

2012-09-23 18:07:56.618 Reader[696:c07] [MPAVController] Autoplay: Disabling autoplay for pause 

2012-09-23 18:07:56.619 Reader[696:c07] [MPAVController] Autoplay: Disabling autoplay 

2012-09-23 18:07:56.638 Reader[696:c07] [MPAVController] Autoplay: Disabling autoplay for pause 

2012-09-23 18:07:56.638 Reader[696:c07] [MPAVController] Autoplay: Disabling autoplay 

2012-09-23 18:07:56.643 Reader[696:c07] [MPAVController] Autoplay: Enabling autoplay 

2012-09-23 18:07:56.645 Reader[696:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0 

2012-09-23 18:07:56.646 Reader[696:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up. 

2012-09-23 18:07:56.648 Reader[696:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0 

2012-09-23 18:07:56.648 Reader[696:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up. 

2012-09-23 18:07:56.650 Reader[696:c07] [MPAVController] Autoplay: Enabling autoplay 

2012-09-23 18:07:56.652 Reader[696:c07] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0 

2012-09-23 18:07:58.746 Reader[696:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0 

2012-09-23 18:07:58.746 Reader[696:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up. 

2012-09-23 18:07:58.747 Reader[696:c07] [MPAVController] Autoplay: _streamLikelyToKeepUp: 0 -> 1 

2012-09-23 18:07:58.748 Reader[696:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 1 

2012-09-23 18:07:58.748 Reader[696:c07] [MPAVController] Autoplay: Enabling autoplay` 
+0

喜,你正在使用哪个iOS? – AsifHabib

回答

1

你可以尝试在你实例化你的播放器后做到这一点: [player prepareToPlay]

更多的信息:iOS 6 streaming player com.apple.coremedia.networkbuffering bug

+0

不知道我在哪里设置广告[player prepareToPlay],我已经在我的代码中找到了。我应该在其他地方移动该方法还是添加一个额外的,不确定如何去做那 – Luna

+0

我在[玩家播放]后添加了[player prepareToPlay]方法,几秒钟后它仍然关闭 – Luna

+0

仍然没有运气,我看到有类似问题的其他帖子,但问题没有解决。 – Luna

9

解决它:

我把我的MPMoviePlayerController到属性:

//添加在头

@property (strong,nonatomic) MPMoviePlayerController *myPlayer; 

//添加在.m文件

- (IBAction)playStream:(id)sender { 
    NSString *urlAddress = @"http://67.159.28.74:8730"; 
    NSURL *url = [NSURL URLWithString:urlAddress]; 

    MPMoviePlayerController *player = [[MPMoviePlayerController alloc]initWithContentURL:url]; 
    [player prepareToPlay]; 
    //Remember you have to add MediaPlayer.framework to your project 
    /*[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlayBackDidFinish:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:player];*/ 

    player.movieSourceType = MPMovieSourceTypeStreaming; 



    player.view.hidden = YES; 

    self.myPlayer = player; 

    [self.view addSubview:self.myPlayer.view]; 


    if(player){ 
     [self.myPlayer play]; 
    } 
} 
1

试试这个很好用我在ios6

NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"ddd" ofType:@"mp4"]; 
NSLog(@"%@",resourcePath); 
NSURL *url = [NSURL fileURLWithPath:resourcePath]; 
NSLog(@"%@",url); 
MPMoviePlayerViewController *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; 
moviePlayer.view.frame = self.view.frame; 
moviePlayer.moviePlayer.shouldAutoplay=YES; 
moviePlayer.moviePlayer.controlStyle = MPMovieControlStyleNone; 
[moviePlayer.moviePlayer setFullscreen:YES animated:YES]; 
[self.view addSubview:moviePlayer.view]; 
[moviePlayer.moviePlayer play]; 
0

这是一个有趣的代码行,你错过了。

根据苹果的文档

“当你添加一个电影播放器​​的看法到应用的视图层次,一定要尺寸框架正确,如下所示:http://tinyurl.com/9wgv9wc

MPMoviePlayerController *player = 

    [[MPMoviePlayerController alloc] initWithContentURL: myURL]; 

[player prepareToPlay]; 

[player.view setFrame: myView.bounds]; // player's frame must match parent's 

[myView addSubview: player.view]; 

// ... 

[player play]; 

http://tinyurl.com/aeh9f84

0

解决方法是播放器必须是视图控制器的实例变量或属性 ie我们必须使用MPMoviePlayerController的实例

@property(nonatomic,strong)MPMoviePlayerController * myMovieController;

8

你必须设置一个类变量是这样的:

@property (nonatomic, retain) MPMoviePlayerController *moviePlayer; 

我的代码如下所示:

NSURL *theUrl = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"mp4"]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:theUrl]; 
[moviePlayer prepareToPlay]; 
[moviePlayer.view setFrame: self.view.bounds]; 
moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
[self.view addSubview: moviePlayer.view]; 
[moviePlayer play]; 

这工作适合我!

2

xCode 4.6.1它工作正常。

但我有xCode 5的这个问题!

但是这种解决方案是非常有帮助的:

“的解决方案是,玩家必须是一个实例变量或属性的视图控制器。即我们必须使用的MPMoviePlayerController

@属性(非原子,强)的MPMoviePlayerController * myMovieController的实例;”

感谢笔者非常

这是我的代码:

UIGraphicsBeginImageContext(CGSizeMake(1,1)); 

NSString *path = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"]; 
NSURL *videoURL = [NSURL fileURLWithPath:path]; 
self.moviePlayerView = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
[self.moviePlayerView prepareToPlay]; 
[self.moviePlayerView.view setFrame:CGRectMake(0, 0, 320, self.view.frame.size.height/2)]; 
self.moviePlayerView.view.backgroundColor = [UIColor clearColor]; 
[self.moviePlayerView setContentURL:videoURL]; 

self.moviePlayerView.movieSourceType = MPMovieSourceTypeFile; 
self.moviePlayerView.controlStyle = MPMovieControlStyleDefault; 
[self.view addSubview:self.moviePlayerView.view]; 
self.moviePlayerView.shouldAutoplay = NO; 
[self.moviePlayerView play]; 

UIGraphicsEndImageContext();