0

を使用してビデオを再生できMPMoviePlayerControllerます。このメソッドをrequestThumbnailImagesAtTimes使用すると、サムネイルを取得するために複数回の配列を入れることができますが、MPMoviePlayerThumbnailImageRequestDidFinishNotification今回の配列では最初から 1 つの画像しか取得できません。他の時間に要求された他の画像を配列で取得するにはどうすればよいですか?

私の中でviewDidLoad

[self.movieController requestThumbnailImagesAtTimes:self.timesArray timeOption:MPMovieTimeOptionExact];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerThumbnailImageRequestDidFinishNotification:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:self.movieController];

通知:

-(void)MPMoviePlayerThumbnailImageRequestDidFinishNotification: (NSNotification*)note
{

NSDictionary * userInfo = [note userInfo];
UIImage *image = (UIImage *)[userInfo objectForKey:MPMoviePlayerThumbnailImageKey];
if(image!=NULL)
    [self.trippingBalls setImage:image];

}
4

2 に答える 2

0

受け取った各 UIImage を配列に追加することで、これを解決しました。

MPMoviePlayerController の上に UIGestureRecognizer を追加したので、各タップ メソッドで、通知から受け取った UIImage を配列に追加しました。

タップ方法:

- (void)handleRollTap:(UITapGestureRecognizer *)sender
{
float time = [self.movieController currentPlaybackTime];
[self.timesMutableArray addObject:[NSNumber numberWithFloat:time]];
self.view.backgroundColor = [UIColor blueColor];

self.timesArrayToPass = [NSArray arrayWithArray:self.timesMutableArray];
[self.movieController requestThumbnailImagesAtTimes:self.timesArrayToPass timeOption:MPMovieTimeOptionExact];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerThumbnailImageRequestDidFinishNotification:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:self.movieController];

[self.images addObject:self.image];

NSLog(@"%@", self.images);
}

通知:

-(void)MPMoviePlayerThumbnailImageRequestDidFinishNotification: (NSNotification*)note
{
   NSDictionary * userInfo = [note userInfo];
self.image = (UIImage *)[userInfo objectForKey:MPMoviePlayerThumbnailImageKey];
    [self.imageView setImage:self.image];
}
于 2015-02-09T20:28:47.893 に答える