- 首页 > it技术 > >
生成视频截图|生成视频截图 计算时间差
#pragma mark - WechatShortVideoDelegate代理方法-(void)finishWechatShortVideoCapture:(NSURL *)filePath{
//已经取得视频的url路径 然后只需要获取获取它的封面图既可
//创建视频资源
AVAsset *asset = [AVAsset assetWithURL:filePath];
//使用视频 资源创建一个图片生成器
AVAssetImageGenerator *imgeGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset];
//视频专用的时间//preferredTimeScale: 每秒多少帧
CMTime time = CMTimeMakeWithSeconds(0.0,asset.duration.timescale);
//时间
NSValue *timeValue = https://www.it610.com/article/[NSValue valueWithCMTime:time];
//生成该时间对应图片
NSTimeInterval statTime = CFAbsoluteTimeGetCurrent();
[imgeGenerator generateCGImagesAsynchronouslyForTimes:@[timeValue] completionHandler:^(CMTime requestedTime, CGImageRef_Nullable image, CMTime actualTime, AVAssetImageGeneratorResult result, NSError * _Nullable error) {HPLog(@"%@", [NSThread currentThread]);
// 在bock中转换为UIImage,然后异步赋值
UIImage *uiImage = [UIImage imageWithCGImage:image];
dispatch_async(dispatch_get_main_queue(), ^{NSTimeInterval endTime = CFAbsoluteTimeGetCurrent();
#pragma mark - 一般认为耗时 <2 是连续点击 不上传服务器点击停止在上传HPLog(@"耗时:%lf",endTime - statTime);
HPLog(@"封面图%@",uiImage);
HPLog(@"视频路径:%@",filePath.path);
[self addVideoConentWith:uiImage OrPostImageUrlString:nil videoUrlString:filePath];
});
}];
}
推荐阅读