iOS 获取视频的某一帧

/ 0评 / 0

iOS中使用AVAssetImageGenerator就可以获取你想要的任意一个视频帧,看看:

/**
 获取视频的某一帧
 @param timeBySecond 某一帧时间
 @param urlString 视频URL
 @return 帧图片
 */
+ (UIImage *)thumbnailImageRequest:(CGFloat)timeBySecond andUrl:(NSString *)urlString{
    //创建url
    NSURL *url = [NSURL fileURLWithPath:urlString];
    //根据url创建AVURLAsset
    AVURLAsset *urlAsset = [AVURLAsset assetWithURL:url];
    //根据AVURLAsset创建AVAssetImageGenerator
    AVAssetImageGenerator *imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:urlAsset];
    /*截图
     * requestTime:缩略图创建时间
     * actualTime:缩略图实际生成的时间
     */
    NSError *error=nil;
    //CMTime是表示电影时间信息的结构体,第一个参数表示是视频第几秒,第二个参数表示每秒帧数.(如果要活的某一秒的第几帧可以使用CMTimeMake方法)
    //CMTime time = CMTimeMakeWithSeconds(timeBySecond, 25);
    CMTime time = CMTimeMake(timeBySecond, 60);
    CMTime actualTime;
    CGImageRef cgImage = [imageGenerator copyCGImageAtTime:time actualTime:&actualTime error:&error];
    
    if (error) {
        SRQLog(@"截取视频缩略图时发生错误,错误信息:%@",error.localizedDescription);
        return nil;
    }
    
    CMTimeShow(actualTime);
    //转化为UIImage
    return [UIImage imageWithCGImage:cgImage];
}

评论已关闭。