zoukankan      html  css  js  c++  java
  • iOS获取本地沙盒视频封面图片(含swift实现)

    最近做了个小应用,有涉及到本地视频播放及列表显示。

    其中一个知识点就是获取本地存储视频,用来界面中的封面显示。

    记录如下:

    //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: 10, preferredTimescale: 50), actualTime: nil)
                return UIImage(cgImage: cgimgref)           
                
                
            }catch{
                return UIImage(named: "screenVideo")!
            }
            
        }

    参数是本地url,可以根据需求自行更改参数等,这里只给个参考。

  • 相关阅读:
    spring mvc常用配置
    spring data redis使用1——连接的创建
    spring session使用小记
    log4j2使用入门(一)
    com.google.common.eventbus.EventBus介绍
    使用java远程调试技术监控代码运行
    阿里云数加平台——数据同步任务调度及管理
    阿里云数加平台——BI报表使用概述和总结
    解决因block的损坏而导致hdfs启动后进入安全模式
    iOS 6 自动布局入门
  • 原文地址:https://www.cnblogs.com/yajunLi/p/5864816.html
Copyright © 2011-2022 走看看