[英]MPMoviePlayerPlaybackDidFinishNotification being called again in iPhone 4.3 simulator when setting contentURL
[英]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不同,后者无论如何都会播放视频。
托管用于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.