0

Я могу воспроизводить видео с помощью MPMoviePlayerController. Метод requestThumbnailImagesAtTimes позволяет мне помещать массив из нескольких раз, чтобы получить миниатюру, но в MPMoviePlayerThumbnailImageRequestDidFinishNotification Я могу получить только одно изображение с первого раза в моем массиве времени. Как я могу получить другие изображения, запрошенные в другое время в моем массиве?Как получить больше одного уменьшенного изображения назад с запросомТамблицаImagesAtTimes

В моей viewDidLoad:

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

Извещение:

+0

Что вы видите, когда вы печатаете от информации о пользователе 'NSDictionary'? –

+0

@lindonfox я получить данные миниатюрного изображения для одного изображения (первого своевременного в моем массиве, который имеет несколько ключей времени): { MPMoviePlayerThumbnailImageKey = « размера {720, 1280} ориентации 0 шкала 1.000000 «; MPMoviePlayerThumbnailTimeKey = "1.4"; } –

+1

[этот метод] (https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/index.html#//apple_ref/occ/instm/MPMoviePlayerController/requestThumbnailImagesAtTimes:timeOption :) возможно быть тем, что вам нужно использовать. Извините, я раньше не занимался этим, но вам может потребоваться доступ к ним с помощью этого метода. –

ответ

0

может быть, это поможет вам ...

-(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 // Время в миллисекундах

0

Я решил это решить, добавив каждый полученный мной UIImage в массив.

Я добавил UIGestureRecognizer поверх своего MPMoviePlayerController, поэтому в каждом методе tap я добавил UIImage, полученный мной из моего уведомления, в свой массив.

метод Tap:

- (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]; 
} 
Смежные вопросы