繁体   English   中英

立即调用MPMoviePlayerPlaybackDidFinishNotification

[英]MPMoviePlayerPlaybackDidFinishNotification is called immediately

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

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时,视频开始播放,没有任何问题。 导致此错误的原因是什么? 谢谢

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

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

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

Safari Web内容文档中

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

另外,HTTP服务器必须提供有效的Content-Type标头(上面的URL还会枚举有效的MIME类型)。 如果MIME类型无效或丢失,iOS将不会播放视频。

尝试插入以下内容:

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

之前

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM