通视频URL截取第一帧图片

为了方便直接给UIImage加个类别,以后什么时候使用可以直接调用。

#import <UIKit/UIKit.h>

 

@interface UIImage (Video)

 

/**

 通过视频URL获取视频的第一帧图片

 

 @param videoURL 视频连接

 @return 第一帧图片

 */

+ (UIImage *)interceptFirstTimeVideoPicture:(NSURL *)videoURL;

 

@end

 

-----------------------------------分割线------------------------

#import "UIImage+Video.h"

#import <AVFoundation/AVFoundation.h>

 

@implementation UIImage (Video)

 

 

+ (UIImage *)interceptFirstTimeVideoPicture:(NSURL *)videoURL{

    

    // 根据视频的URL创建AVURLAsset

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

   

    // 根据AVURLAsset创建AVAssetImageGenerator对象

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

    

     gen.appliesPreferredTrackTransform = YES;

    

    // 定义获取0帧处的视频截图

    CMTime time = CMTimeMake(0, 10);

    

    NSError *error = nil;

    

    CMTime actualTime;

    

    // 获取time处的视频截图

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

    

    // CGImageRef转换为UIImage

    UIImage *thumb = [[UIImage alloc] initWithCGImage: image];

    

    CGImageRelease(image);

    

    return  thumb;

    

}

 

 

@end

 

注意点:

使用AVAssetImageGenerator这个类是要记得导入#import <AVFoundation/AVFoundation.h>头文件。

原文地址:https://www.cnblogs.com/huanghaipo/p/7061459.html