zoukankan      html  css  js  c++  java
  • iOS截取视频某一帧图片(关键帧,AVAssetImageGenerator)

    获取第一帧图片

    导入 AVFoundation.Framework、CoreMedia.Framework

    实现代码例如以下:

    + (UIImage*) thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time {
        AVURLAsset *asset = [[[AVURLAsset alloc] initWithURL:videoURL options:nil] autorelease];
        NSParameterAssert(asset);
        AVAssetImageGenerator *assetImageGenerator = [[[AVAssetImageGenerator alloc] initWithAsset:asset] autorelease];
        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] autorelease] : nil; return thumbnailImage; }


    获取多帧图片的办法

    [mImageGenerator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:CMTimeMakeWithSeconds(time, NSEC_PER_SEC)]] completionHandler:
        ^(CMTime requestedTime, CGImageRef image, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error)
        {
     
            NSLog(@"actual got image at time:%f", CMTimeGetSeconds(actualTime));
            if (image)
            {
                [CATransaction begin];
                [CATransaction setDisableActions:YES];
                [layer setContents:(id)image];
     
                //UIImage *img = [UIImage imageWithCGImage:image];
                //UIImageWriteToSavedPhotosAlbum(img, self, nil, nil);
     
                [CATransaction commit];
            }
        }];
     


  • 相关阅读:
    APP测试的那些坑
    最全的测试工具以及测试需要掌握的工具
    接口测试的必要性
    jmeter-察看结果树-响应数据,中文显示乱码问题处理
    JMeter学习(一)工具简单介绍
    BZOJ1972: [Sdoi2010]猪国杀
    luoguP1311 选择客栈 题解(NOIP2011)
    luoguP1003 铺地毯 题解(NOIP2011)
    luoguP1081 开车旅行 题解(NOIP2012)
    luoguP3391[模板]文艺平衡树(Splay) 题解
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6911856.html
Copyright © 2011-2022 走看看