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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容