立即调用MPMoviePlayerPlaybackDidFinishNotification

我正在尝试使用以下代码播放video:

UIGraphicsBeginImageContext(CGSizeMake(1,1)); self.player = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"http://www.blablabla.org/app/video/v5_seq8_v2_360p.mp4"]]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishPlayback:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.player.moviePlayer]; [self presentMoviePlayerViewControllerAnimated:self.player]; UIGraphicsEndImageContext(); [self.player.moviePlayer prepareToPlay]; [self.player.moviePlayer play]; 

sel.player关闭并且立即调用didFinishPlayback:方法。 我从通知中检索错误,如下所示:

 NSLog(@"Error %@", notification.userInfo[@"error"]); 

它看起来如下:

 Domain=MediaPlayerErrorDomain Code=-11850 "Operation Stopped" 

但是当我在浏览器中打开url时,video开始播放没有任何问题。 导致此错误的原因是什么? 谢谢

我不知道为什么,但是在远程url中我意识到在过去的项目中你需要添加没有对象的观察者作为参考….如果你问我为什么,我不确定。 尝试添加nil作为对象的观察者…

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; 

如果video在桌面计算机上播放,而不是iOS(在应用程序内或在Safari中),则很可能是因为HTTP服务器不支持字节范围请求 。 如果HTTP服务器不支持字节范围请求,则iOS将不播放video。 这与OS X上的Safari不同,后者无论如何都会播放video。

从Safari Web内容文档 :

托管iOS媒体文件的HTTP服务器必须支持字节范围请求,iOS用于在媒体播放中执行随机访问。 (字节范围支持也称为内容范围或部分范围支持。)大多数(但不是全部)HTTP 1.1服务器已经支持字节范围请求。

此外,HTTP服务器必须提供有效的Content-Type标头(上面的URL也枚举有效的MIME类型)。 如果MIME类型无效或缺失,iOS将无法播放video。

尝试插入此:

 [[NSNotificationCenter defaultCenter] removeObserver: self.player name: MPMoviePlayerPlaybackDidFinishNotification object: self.player.moviePlayer]; 

之前

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishPlayback:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.player.moviePlayer];