2011-10-19 20 views
0

在我viewDidLoad方法,我有以下行:为什么这条线块我的应用程序

NSString *path1 = [[NSBundle mainBundle] pathForResource:@"video1" ofType:@"mp4"]; 
    NSString *path2 = [[NSBundle mainBundle] pathForResource:@"video2" ofType:@"mp4"]; 

    MPMoviePlayerController *videoPlayer1 = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path1]]; 
    MPMoviePlayerController *videoPlayer2 = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path2]]; 

    UIImage *thumbnail1 = [videoPlayer1 thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 
    UIImage *thumbnail2 = [videoPlayer2 thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 

在这种状态下我的应用程序被阻止时,这个类是accessed.If我删除了这两条线它的伟大工程:

UIImage *thumbnail1 = [videoPlayer1 thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 
    UIImage *thumbnail2 = [videoPlayer2 thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 

它只是fine.So我工作的iOS 4和我有videos.What可能是错的感谢

编辑:?我有这个在我的控制台:Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray removeObjectAtIndex:]: index 1 beyond bounds [0 .. 0]'

+0

我不认为你的异常链接到发布的代码(没有涉及可变数组)。你应该检查你的路径和视频播放器不是零。另请注意,尽管您可以创建多个MPMoviePlayerController对象并在界面中显示其视图,但一次只有一个电影播放器​​可以播放其电影。 – jbat100

+0

但我没有播放任何这些电影。我只是想从视频中获取thumbnailImageAtTime图片。 – adrian

回答

1

MPMoviePlayerController API是异步的,我不相信它会在你加载电影之前得到缩略图。您可以注册MPMoviePlayerLoadStateDidChangeNotification通知,并检查moviePlayer loadState是否为MPMovieLoadStatePlayable。小心负载状态是一个位掩码,所以使用按位运算符:

if (moviePlayer.loadState & MPMovieLoadStatePlayable) 
    // get the thumbnail 

if (moviePlayer.loadState == MPMovieLoadStatePlayable) 
    // get the thumbnail 

或者你可以使用

- (void)requestThumbnailImagesAtTimes:(NSArray *)playbackTimes timeOption:(MPMovieTimeOption)option 

方法,你会得到MPMoviePlayerThumbnailImageRequestDidFinishNotification通知时缩略图已准备就绪。

相关问题