iOS获取本地沙盒视频封面图片(含swift实现)
2024-10-21 13:25:45
最近做了个小应用,有涉及到本地视频播放及列表显示。
其中一个知识点就是获取本地存储视频,用来界面中的封面显示。
记录如下:
//videoURL:本地视频路径 time:用来控制视频播放的时间点图片截取
-(UIImage*) thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time { AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
NSParameterAssert(asset);
AVAssetImageGenerator *assetImageGenerator =[[AVAssetImageGenerator alloc] initWithAsset:asset];
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] : nil; return thumbnailImage;
}
获得的Image直接显示即可。
如果想获取网络图片,只要替换NSURL方式即可。
[NSURL URLWithString:@"network url"]
.PS:
swift实现:
/// 获取本地video的封面截图
///
/// - Parameter url: <#url description#>
/// - Returns: <#return value description#>
func getVideoFengMian(url:String) -> UIImage {
if url.isEmpty {
//默认封面图
return UIImage(named: "screenVideo")!
}
let aset = AVURLAsset(url: URL(fileURLWithPath: url), options: nil)
let assetImg = AVAssetImageGenerator(asset: aset)
assetImg.appliesPreferredTrackTransform = true
assetImg.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels
do{
let cgimgref = try assetImg.copyCGImage(at: CMTime(seconds: , preferredTimescale: ), actualTime: nil)
return UIImage(cgImage: cgimgref) }catch{
return UIImage(named: "screenVideo")!
} }
参数是本地url,可以根据需求自行更改参数等,这里只给个参考。
最新文章
- JSON.stringify()和JSON.parse()
- Tomcat并发数优化,修改service.xml性能调优 增加最大并发连接数
- 构建自己的PHP框架--抽象框架的内容
- Java-马士兵设计模式学习笔记-责任链模式-处理数据
- 矩阵-DirectX与OpenGL的不同
- JasperReport原理解析之(一)
- php类的属性
- 【HDOJ】4513 吉哥系列故事——完美队形II
- 登陆验证AuthorizeAttribute
- Python学习—框架篇之初识Django
- Tomcat manager页面报403
- python中的find、rfind、index、rindex
- SaltStack入门到精通第一篇:安装SaltStack
- winform截屏
- maven 之dependencyManagement 和 pluginManagement
- [代码][deque容器练习]打分案例
- [leetcode]141. Linked List Cycle判断链表是否有环
- 【题解】彩色树 51nod 1868 虚树 树上dp
- Leetcode Copy List with Random Pointer(面试题推荐)
- 绝对详细!Nginx基本配置、性能优化指南