2016-06-20 5 views
1

Я воспроизвожу видео с сервера, используя AVPlayer.Захват изображений видео в iOS

AVPlayer *player = [AVPlayer playerWithURL:videoURL]; 
AVPlayerViewController *playerViewController = [AVPlayerViewController new]; 
playerViewController.player = player; 
[self presentViewController:playerViewController animated:YES completion:nil]; 

Теперь я хочу захватить несколько изображений, пока видео воспроизводится и сохраняет его. Как я могу это сделать ..?

+0

Вы хотите создать эскиз этого видео или нескольких изображений из видео? –

+0

Несколько изображений видео – remyr3my

ответ

0

Пожалуйста, используйте этот код, Вы можете получить миниатюру из видео с помощью этого

AVAsset *asset = [AVAsset assetWithURL:URl]; 
     AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset]; 
     imageGenerator.appliesPreferredTrackTransform=TRUE; 
     CMTime time = CMTimeMake(1, 1); 
     CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL]; 
     UIImage *thumbnail = [UIImage imageWithCGImage:imageRef]; 
     NSData *imagedata = [self compressImage:thumbnail]; 
     UIImage *imag = [UIImage imageWithData:imagedata];//this is image from video at time interval 1 second 

Вы можете получить несколько изображений, чтобы установить несколько TimeInterval

+0

Я пробовал, но не смог захватить изображения. – remyr3my

+0

can u ckeck thumbnail ничто или нет в отладке ?? –

+0

thumbnail не nil – remyr3my

0

Существует очень простой способ получить кадры из видео с помощью MPMoviePlayerController. Следующий код получает изображение в time:5

MPMoviePlayerController *movie = [[MPMoviePlayerController alloc] 
     initWithContentURL:[NSURL URLWithString:@"someVideo.mp4"]]; 
UIImage *singleFrameImage = [movie thumbnailImageAtTime:5 
     timeOption:MPMovieTimeOptionExact]; 

Для получения нескольких изображений из видео, после реализации может быть использовано.

1) Зарегистрируйтесь для уведомления, чтобы получать изображение при каждом запросе.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerThumbnailImageRequestDidFinishNotification:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:moviePlayer]; 

2) Инициализировать MPMoviePlayerController с изображениями, чтобы получить требуемое время в.

MPMoviePlayerController *movie = [[MPMoviePlayerController alloc] 
     initWithContentURL [NSURL URLWithString:@"someVideo.mp4"]]; 
NSNumber time1 = 15; 
NSNumber time2 = 16; 
NSNumber time3 = 17; 
NSArray *times = [NSArray arrayWithObjects:time1,time2,time3,nil]; 
[movie requestThumbnailImagesAtTimes:times timeOption:MPMovieTimeOptionExact]; 

3) Селектор получить изображение

-(void)MPMoviePlayerThumbnailImageRequestDidFinishNotification: (NSNotification*)note 
{ 
    NSDictionary * userInfo = [note userInfo]; 
    UIImage *image = (UIImage *)[userInfo objectForKey:MPMoviePlayerThumbnailImageKey]; 
} 
+0

Как я могу сделать это с помощью AVPlayer вместо MPMoviePlayer ..? – remyr3my

+0

есть ли какая-то конкретная необходимость в использовании AVPlayer? – Aamir

+0

Да, есть необходимость – remyr3my

Смежные вопросы