获取视频缩略图之AVAssetImageGenerator

Posted 象棋中的象棋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取视频缩略图之AVAssetImageGenerator相关的知识,希望对你有一定的参考价值。

将之前的获取视频帧的方法回顾总结一下:

方式一:获取相关帧集

 AVURLAsset *urlSet = [[AVURLAsset alloc]initWithURL:url options:nil];

    AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc]initWithAsset:urlSet];

    generator.appliesPreferredTrackTransform = YES;

    NSLog(@"generator = %@",generator);

    CMTime time = CMTimeMake(1, 30);

    AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef image, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){

        UIImage *thumbImg = [UIImage imageWithCGImage:image];

        if (result == AVAssetImageGeneratorSucceeded) {//成功即显示

            dispatch_async(dispatch_get_main_queue(), ^{

                cell.imageView.image = thumbImg;

                cell.tags = 1;

            });

        }

    };

    generator.maximumSize = CGSizeMake(200, 200);

    [generator generateCGImagesAsynchronouslyForTimes:

     [NSArray arrayWithObject:[NSValue valueWithCMTime:time]] completionHandler:handler];

 

方式二:得到某时刻帧特征图片       容易获取失败

    AVAsset *urlSet = [AVAsset assetWithURL:url];

    AVAssetImageGenerator *gener = [[AVAssetImageGenerator alloc]initWithAsset:urlSet];

    CMTime actualTime;

    CGImageRef imageRef = [gener copyCGImageAtTime:CMTimeMakeWithSeconds(1, 10) actualTime:&actualTime error:nil];

    CMTimeShow(actualTime);

/////这里的nserror需判断是否为nil,不为nil返回

        NSString *key = [_cameraFilesArr[indexPath.row] componentsSeparatedByString:@"."][0];

        dispatch_async(dispatch_get_main_queue(), ^{

            UIImage *thumbImg = [UIImage imageWithCGImage:imageRef];

            cell.imageView.image = thumbImg;

            [_imgCache setObject:thumbImg forKey:key];  // 缓存

        });

以上是关于获取视频缩略图之AVAssetImageGenerator的主要内容,如果未能解决你的问题,请参考以下文章

C#获取本地视频的缩略图的方法都有哪些?

ios获取本地视频第一帧,缩略图

javaCV 视频工具—截取视频缩略图获取视频属性

MPMoviePlayerController 从流式视频中获取缩略图?

如何从嵌入式视频中获取缩略图?

如何从 facebook 获取其他人或页面视频缩略图?