2014-10-03 1 views
1

Я пытаюсь читать несколько кадров из видео. Видео 640 x 480, но изображения, которые я получаю, всего 480 x 360. Есть ли способ получить изображения исходного размера?Как установить размер для AVAssetImageGenerator?

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    NSString * mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
    if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) 
     [self readMovieFrames:[info objectForKey:UIImagePickerControllerMediaURL]]; 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

- (void)readMovieFrames:(NSURL *)url 
{ 
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url]; 
    AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:playerItem.asset]; 
    imageGenerator.requestedTimeToleranceAfter = kCMTimeZero; 
    imageGenerator.requestedTimeToleranceBefore = kCMTimeZero; 
    imageGenerator.appliesPreferredTrackTransform = YES; 
    //… 
    CGImageRef imageRef = [imageGenerator copyCGImageAtTime:requestTime actualTime:&actualTime error:&error]; 
    UIImage *img = [UIImage imageWithCGImage:imageRef]; 
    UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil); 
    CGImageRelease(imageRef); 
} 

ответ

3

Либо использовать

imageGenerator.maximumSize = CGSizeZero; 

получить немасштабированного изображение или определить рамку из 640 х, соотношение сторон остается

imageGenerator.maximumSize = CGSizeMake(640, 640); 

Надежда, что помогает!

0
- (void)readMovieFrames:(NSURL *)url 
{ 
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url]; 
    AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:playerItem.asset]; 
imageGenerator.maximumSize = CGSizeMake(320, 239); 
// Add this line 
    imageGenerator.requestedTimeToleranceAfter = kCMTimeZero; 
    imageGenerator.requestedTimeToleranceBefore = kCMTimeZero; 
    imageGenerator.appliesPreferredTrackTransform = YES; 
    //… 
    CGImageRef imageRef = [imageGenerator copyCGImageAtTime:requestTime actualTime:&actualTime error:&error]; 
    UIImage *img = [UIImage imageWithCGImage:imageRef]; 
    UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil); 
    CGImageRelease(imageRef); 
} 
+0

thx, но с 'imageGenerator.maximumSize = CGSizeMake (640, 480);' добавлено, я все еще получаю только 480 x 360 изображений – Tom