博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS截取视频缩略图的两种方法
阅读量:4654 次
发布时间:2019-06-09

本文共 1996 字,大约阅读时间需要 6 分钟。

前言: 看完了,在实际应用中有时候须要获取视频的缩略图,我们来看看怎样截取指定时间内的视频缩略图。

一  使用MPMoviePlayerController自带的方法

- (void)requestThumbnailImagesAtTimes:(NSArray *)playbackTimes timeOption:(MPMovieTimeOption)option NS_AVAILABLE_IOS(3_2);

/** *  视频截图 */- (void)getMovieThumImage{   [self.moviePlayer requestThumbnailImagesAtTimes:@[@(1.0),@(5.0)] //设置截图时间点 1s和5s的时候                                        timeOption:MPMovieTimeOptionNearestKeyFrame];}
[[NSNotificationCenter defaultCenter] addObserver:self                                             selector:@selector(thumImageGet:)                                                 name:MPMoviePlayerThumbnailImageRequestDidFinishNotification   //视频缩略图截取成功时调用                                               object:nil];
/** *  截图完毕,每截取一张,会调取一次 * *  @param noti <#noti description#> */- (void)thumImageGet:(NSNotification *)noti{    UIImage *thumImage = [[noti userInfo] objectForKey:MPMoviePlayerThumbnailImageKey];    UIImageWriteToSavedPhotosAlbum(thumImage, nil, nil, nil);}
二 使用AVAssetImageGenerator

  1. 创建AVURLAsset对象(此类主要用于获取媒体信息,包含视频、声音等)。 
  2. 依据AVURLAsset创建AVAssetImageGenerator对象。

     

  3. 使用AVAssetImageGenerator的copyCGImageAtTime::方法获得指定时间点的截图。

#import 
- (void)assetGetThumImage:(CGFloat)second{    AVURLAsset *urlSet = [AVURLAsset assetWithURL:[self url]];    AVAssetImageGenerator *imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:urlSet];        NSError *error = nil;    CMTime time = CMTimeMake(second,10);//缩略图创建时间 CMTime是表示电影时间信息的结构体,第一个參数表示是视频第几秒,第二个參数表示每秒帧数.(假设要活的某一秒的第几帧能够使用CMTimeMake方法)    CMTime actucalTime; //缩略图实际生成的时间    CGImageRef cgImage = [imageGenerator copyCGImageAtTime:time actualTime:&actucalTime error:&error];    if (error) {        NSLog(@"截取视频图片失败:%@",error.localizedDescription);    }    CMTimeShow(actucalTime);    UIImage *image = [UIImage imageWithCGImage:cgImage];    UIImageWriteToSavedPhotosAlbum(image,nil, nil,nil);    CGImageRelease(cgImage);        NSLog(@"视频截取成功");}
 

转载于:https://www.cnblogs.com/mengfanrong/p/5268578.html

你可能感兴趣的文章
使用Struts2标签遍历集合
查看>>
angular.isUndefined()
查看>>
第一次软件工程作业(改进版)
查看>>
网络流24题-飞行员配对方案问题
查看>>
Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
查看>>
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
Some configure
查看>>
流量调整和限流技术 【转载】
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>
2.抽取代码(BaseActivity)
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>