iOS截取视频某一帧图片(关键帧,AVAssetImageGenerator)
2024-10-11 12:58:10
获取第一帧图片
导入 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];
}
}];
最新文章
- 【java】jstack
- hdu-1856-More is better
- df,du,mount
- jquery中.attr('value')和.val()的区别
- several生命周期
- 【py登陆】python模拟登录
- request.getParameter与request.getAttribute()
- Android框架 加载图片 库 Picasso 的使用简介
- asp.net中导出Execl的方法
- zendstudio 出现failed to create the java machine转
- aspx页面状态管理Cookie和ViewState
- 一些嵌入式和FPGA相关模块的开源
- Maven学习总结——聚合与继承
- VS2008下OpenCV1.0的设置
- 对consistencygroup的一些研究和实践
- 使用SeekBar办Android调色板
- IntelliJ IDEA运行慢解决方法
- FeignClient注解及参数
- asp.net core 通过ajax调用后台方法(非api)
- c++ STL概述