Как вернуть более одного миниатюрного изображения с запросом ThumbnailImagesAtTimes
Я могу воспроизвести видео, используя MPMoviePlayerController
, Метод requestThumbnailImagesAtTimes
позвольте мне поместить в массив несколько раз, чтобы получить эскиз, но в MPMoviePlayerThumbnailImageRequestDidFinishNotification
Я могу вернуть только одно изображение с первого раза в моем массиве времен. Как я могу получить другие изображения, запрошенные в другое время в моем массиве?
В моем 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];
}
2 ответа
Я решил эту проблему, добавив каждый полученный UIImage в массив.
Я добавил UIGestureRecognizer поверх моего MPMoviePlayerController, поэтому при каждом методе касания я добавлял 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];
}
Может быть, это поможет вам...
-(UIImage *)generateThumbImage : (NSString *)filepath
{
NSURL *url = [NSURL fileURLWithPath:filepath];
AVAsset *asset = [AVAsset assetWithURL:url];
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
CMTime time = [asset duration];
time.value = 0;
CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL];
UIImage *thumbnail = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef); // CGImageRef won't be released by ARC
return thumbnail;
}
time.value = 1000 // Время в миллисекундах