我遇到了一个问题...也许有人碰到类似的东西:我有一个使用MPMoviePlayerController的应用程序,并且过去工作得很好。 尝试使用iPhone 5 Simulator使用新的Xcode 4.2编译和运行它,MPMoviePlayerController在我加载电影时不发送通知。看起来无法正确检测视频文件。 代码看起来或多或少(简化代码):
// First I'm initializing the player with a URL from a file
MPMoviePlayerController *player;
player = [[MPMoviePlayerController alloc] init];
player.shouldAutoplay = NO;
NSURL *url = [NSURL fileURLWithPath:path];
player.contentURL = url;
// Then I'm adding an observer in order to wait for the player to find movie duration
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(durationAvailable:)
在上面之后,我正在等待一个循环来通知被调用,等待大约10秒,在此期间我正在调用运行循环。 使用相同的代码,相同的Xcode 4.2版本,但使用iPhone 4.3模拟器,大约一秒后,通知被调用,我可以读取播放器的持续时间。但是,当在iPhone 5 Simulator上运行完全相同的代码时,通知函数永远不会被调用,如果我尝试读取电影持续时间后它包含0。
有什么想法吗?
谢谢, 爱丽儿
答案 0 :(得分:0)
好的,我设法找到问题的解决方法。 显然,在添加观察者之后添加此行可以解决问题:
[player pause];
看起来如果你不以某种方式“激活”播放器,通知将不会被触发。在我的情况下,我只是想在没有开始播放的情况下获得电影持续时间的通知,并且它在iOS5之前的版本中运行良好,但看起来他们改变了行为。无论如何,上面的一行解决了这个问题。
爱丽儿
答案 1 :(得分:0)
尝试此MPMoviePlayerPlaybackStateDidChangeNotification:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(stop)
name:MPMoviePlayerPlaybackStateDidChangeNotification
object:nil];