zoukankan      html  css  js  c++  java
  • 获取视频缩略图之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];  // 缓存

            });

    提高技能如同提升自信心。
  • 相关阅读:
    shell预备知识
    php session和cookie
    php数据库访问抽象层PDO
    递归求斐波那契数
    SqlDataReader的使用
    DataAdapter与DataSet的使用
    CLR
    Android Studio javadoc 生成注释文档
    MySQL教程之concat以及group_concat的用法
    一文读懂MQTT协议
  • 原文地址:https://www.cnblogs.com/chims-liu-touch/p/8042669.html
Copyright © 2011-2022 走看看