使用AVFoundation生成缩略图
2016-03-14 10:04
302 查看
步骤:
创建AVURLAsset对象(此类主要用于获取媒体信息,包括视频、声音等)。
根据AVURLAsset创建AVAssetImageGenerator对象。
使用AVAssetImageGenerator的copyCGImageAtTime::方法获得指定时间点的截图。
创建AVURLAsset对象(此类主要用于获取媒体信息,包括视频、声音等)。
根据AVURLAsset创建AVAssetImageGenerator对象。
使用AVAssetImageGenerator的copyCGImageAtTime::方法获得指定时间点的截图。
#import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //获取第13.0s的缩略图 [self thumbnailImageRequest:13.0]; } #pragma mark - 私有方法 /** * 取得本地文件路径 * * @return 文件路径 */ -(NSURL *)getFileUrl{ NSString *urlStr=[[NSBundle mainBundle] pathForResource:@"The New Look of OS X Yosemite.mp4" ofType:nil]; NSURL *url=[NSURL fileURLWithPath:urlStr]; return url; } /** * 取得网络文件路径 * * @return 文件路径 */ -(NSURL *)getNetworkUrl{ NSString *urlStr=@"http://192.168.1.161/The New Look of OS X Yosemite.mp4"; urlStr=[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url=[NSURL URLWithString:urlStr]; return url; } /** * 截取指定时间的视频缩略图 * * @param timeBySecond 时间点 */ -(void)thumbnailImageRequest:(CGFloat )timeBySecond{ //创建URL NSURL *url=[self getNetworkUrl]; //根据url创建AVURLAsset AVURLAsset *urlAsset=[AVURLAsset assetWithURL:url]; //根据AVURLAsset创建AVAssetImageGenerator AVAssetImageGenerator *imageGenerator=[AVAssetImageGenerator assetImageGeneratorWithAsset:urlAsset]; /*截图 * requestTime:缩略图创建时间 * actualTime:缩略图实际生成的时间 */ NSError *error=nil; CMTime time=CMTimeMakeWithSeconds(timeBySecond, 10);//CMTime是表示电影时间信息的结构体,第一个参数表示是视频第几秒,第二个参数表示每秒帧数.(如果要活的某一秒的第几帧可以使用CMTimeMake方法) CMTime actualTime; CGImageRef cgImage= [imageGenerator copyCGImageAtTime:time actualTime:&actualTime error:&error]; if(error){ NSLog(@"截取视频缩略图时发生错误,错误信息:%@",error.localizedDescription); return; } CMTimeShow(actualTime); UIImage *image=[UIImage imageWithCGImage:cgImage];//转化为UIImage //保存到相册 UIImageWriteToSavedPhotosAlbum(image,nil, nil, nil); CGImageRelease(cgImage); } @end
相关文章推荐
- 【转】JVM运行原理及JVM中的Stack和Heap的实现过程
- iOS开发进阶之 UIWebView
- Quake3游戏引擎中平方根相关算法
- 文件属性之stat(),fstat(),lstat(),chown(),fchown(),lchown()函数
- rename(),unlink(),getcwd(),chdir(),opendir(),readdir(),closedir()函数
- java系统高并发解决方案(转载)
- java程序设计基础_陈国君版第五版_第十一章习题
- getpwuid()函数,getpgrgid()函数()
- fork() 函数,vfork()函数
- 限制
- 无处不在的培训
- 北大生弑母,可怜之人必有可恨之处
- 小李拿奥斯卡奖之热点营销
- 房价又涨了
- 扁平化之管理
- 你真的会复盘吗?(2)
- 复盘
- 拜神
- 求存与求真
- 完整性思维--层次思维