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

本文共 1941 字,大约阅读时间需要 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(@"视频截取成功");}
 

转载地址:http://yzbxx.baihongyu.com/

你可能感兴趣的文章
有序的双链表
查看>>
程序员全国不同地区,微信(面试 招聘)群。
查看>>
【干货】界面控件DevExtreme视频教程大汇总!
查看>>
闭包 !if(){}.call()
查看>>
python MySQLdb安装和使用
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>