2013-10-05 4 views
1

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

if ([type isEqualToString:(NSString *)kUTTypeVideo] || [type isEqualToString:(NSString *)kUTTypeMovie]) 
{  
    NSURL*videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; 

    NSLog(@"found a video"); 

    videoData = [[NSData dataWithContentsOfURL:videoURL] retain]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormat setDateFormat:@"dd-MM-yyyy_HH:mm:SS"]; 
    NSDate *now = [[[NSDate alloc] init] autorelease]; 
    NSDate* theDate = [dateFormat stringFromDate:now]; 

    NSString*myDate=[dateFormat stringFromDate:theDate]; 
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Default Album"]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) 
     [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil];   

    NSString*[email protected]"test";  

    NSString*testUser=[test stringByReplacingOccurrencesOfString:@" " withString:@""]; 

    videopath= [[[NSString alloc] initWithString:[NSString stringWithFormat:@"%@/%@.mov",documentsDirectory,testUser]] autorelease];   


    BOOL success = [videoData writeToFile:videopath atomically:NO];  


    NSLog(@"Successs:::: %@", success ? @"YES" : @"NO"); 
    NSLog(@"video path --> %@",videopath); 


    NSURL *movieURL = [NSURL fileURLWithPath:videopath]; 
    AVURLAsset *avUrl = [AVURLAsset assetWithURL:movieURL]; 
    CMTime time = [avUrl duration]; 
    int seconds = ceil(time.value/time.timescale); 

// durationTime=[NSString stringWithFormat:@"%d",seconds]; 

// insertTime=[NSString stringWithFormat:@"%d",seconds];  


    NSString*messageA=[NSString stringWithFormat:@"You have recorded video of duration of %d seconds ",seconds];  

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:messageA 
                delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alert show]; 


    NSDate* date = [NSDate date]; 
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"yyyy-MM-dd HH:MM:SS"]; 
    //[formatter setDateFormat:@"MM-dd-yyyy"]; 

    NSString* str = [formatter stringFromDate:date]; 

ответ

3

Попробуйте это:

#import<AssetsLibrary/AssetsLibrary.h> 
#import<AVFoundation/AVFoundation.h> 
#import <AudioToolbox/AudioToolbox.h> 
#import <CoreMedia/CoreMedia.h> 
#import <MediaPlayer/MediaPlayer.h> 

//create thumbnail from video 


    AVAsset *asset = [AVAsset assetWithURL:url];// url= give your url video here 
    AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset]; 
    CMTime time = CMTimeMake(1, 5);//it will create the thumbnail after the 5 sec of video 
    CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL]; 
    UIImage *thumbnail = [UIImage imageWithCGImage:imageRef]; 
cell.backGround.image=thumbnail;// whichever imageview you want give this image 

это поможет вам.

+0

он работал для меня спасибо –

0

добавьте, что MPMoviePlayerController (см. Ниже) является гораздо более быстрым вариантом. Код выше занимает хорошие 5-10 секунд, чтобы создать миниатюру, а также вы можете показать в UIImageView

NSURL *videoURL = [NSURL fileURLWithPath:url]; 

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 

     UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 

     //Player autoplays audio on init 
     [player stop]; 
     [player release]; 
+0

также использовать этот метод, я нашел ... MPMoviePlayerController thumbnailImageAtTime : timeOption – nivritgupta

+0

устарел на iOS 9 – SpaceDog

-1
#import <AVFoundation/AVFoundation.h> 

-(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 = 1000; //Time in milliseconds 
    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; 
} 
+0

Этот метод работает. –

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