项目需求要获取多个视频的第十秒截图
百度了一个方法
// 获取视频第一帧
- (UIImage*) getVideoPreViewImage:(NSURL *)path
{
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:path options:nil];
AVAssetImageGenerator *assetGen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
assetGen.appliesPreferredTrackTransform = YES;
CMTime time = CMTimeMakeWithSeconds(0.0, 600);
NSError *error = nil;
CMTime actualTime;
CGImageRef image = [assetGen copyCGImageAtTime:time actualTime:&actualTime error:&error];
UIImage *videoImage = [[UIImage alloc] initWithCGImage:image];
CGImageRelease(image);
return videoImage;
}
想当然地把CMTime time = CMTimeMakeWithSeconds(0.0, 600);
改成CMTime time = CMTimeMakeWithSeconds(10.0, 600);
发现效率很低
废了很多时间去做优化,开线程,回主线程刷界面,巴拉巴拉
之后查阅了七牛开发文档之后,才发现,七牛给了获取视频截图的接口,
用文件地址 + vframe/jpg/offset/0 就是取 0秒的截图 。 后边0是秒的单位
瞬间XXXXX
[imageView sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@?vframe/jpg/offset/10",model.url]]];
这样就OK了!!
小白总结,欢迎打脸指正
网友评论