iOS 获取视频截图 以及 CMTimeMakeWithSeconds 与 CMTimeMake的区别

//获取网络视频的缩略图

  • (UIImage *)getThumbnailImageFromVideoURL:(NSURL *)URL time:(NSTimeInterval )videoTime{

    if (!URL) return nil;

    UIImage *shotImage;

    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:URL options:nil];

    AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];

    gen.appliesPreferredTrackTransform = YES;
    //videoTime 截视频中第几秒的屏
    CMTime time = CMTimeMakeWithSeconds(videoTime, 600);

    NSError *error = nil;

    CMTime actualTime;

    CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];

    shotImage = [[UIImage alloc] initWithCGImage:image];

    CGImageRelease(image);

    return shotImage;
    }

//获取本地视频缩略图

  • (UIImage *)getThumbnailImageFromFilePath:(NSString *)videoPath time:(NSTimeInterval )videoTime {

    if (!videoPath) {
    return nil;
    }
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[[NSURL alloc] initFileURLWithPath:videoPath] options:nil];
    AVAssetImageGenerator *assetImageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    assetImageGenerator.appliesPreferredTrackTransform = YES;
    assetImageGenerator.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels;

    CGImageRef thumbnailImageRef = NULL;
    CFTimeInterval thumbnailImageTime = videoTime;
    thumbnailImageRef = [assetImageGenerator copyCGImageAtTime:CMTimeMake(thumbnailImageTime, 600)
    actualTime:NULL error:nil];
    if (!thumbnailImageRef) {
    return nil;
    }

    UIImage *thumbnailImage = [[UIImage alloc] initWithCGImage:thumbnailImageRef];

    CFRelease(thumbnailImageRef);

    return thumbnailImage;

}

摘抄自:https://www.jianshu.com/p/6b6ffe0e4981
测试视频地址:http://static.tripbe.com/videofiles/20121214/9533522808.f4v.mp4

你可能感兴趣的:(iOS 获取视频截图 以及 CMTimeMakeWithSeconds 与 CMTimeMake的区别)