iOS获取视频首帧

获取视频首帧的两种方法

这里总结一下:

方法一:
使用MPMoviePlayerController的获取封面的方法:

+ (UIImage *)thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time {
    UIImage *thumbnailImage = nil;
    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
    moviePlayer.shouldAutoplay = NO;
    thumbnailImage = [moviePlayer thumbnailImageAtTime:time timeOption:MPMovieTimeOptionNearestKeyFrame];
    
    return thumbnailImage;
}

方法二:
使用AVAssetImageGenerator获取

+ (UIImage*) thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time {  
      
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];  
    NSParameterAssert(asset);  
    AVAssetImageGenerator *assetImageGenerator =[[AVAssetImageGenerator alloc] initWithAsset:asset];  
    assetImageGenerator.appliesPreferredTrackTransform = YES;  
    assetImageGenerator.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels;  
      
    CGImageRef thumbnailImageRef = NULL;  
    CFTimeInterval thumbnailImageTime = time;  
    NSError *thumbnailImageGenerationError = nil;  
    thumbnailImageRef = [assetImageGenerator copyCGImageAtTime:CMTimeMake(thumbnailImageTime, 60)actualTime:NULL error:&thumbnailImageGenerationError];  
      
    if(!thumbnailImageRef)  
    NSLog(@"thumbnailImageGenerationError %@",thumbnailImageGenerationError);  
      
    UIImage*thumbnailImage = thumbnailImageRef ? [[UIImage alloc]initWithCGImage: thumbnailImageRef] : nil;  
      
    return thumbnailImage;  
}

你可能感兴趣的:(iOS获取视频首帧)