swift 获取网络视频生成视频截图

匿名 (未验证) 提交于 2019-12-03 00:17:01

生成视频截图代码:

DispatchQueue.global().async {                     //获取网络视频                     let url = self.videoImgUrlData[i]                     let videoURL = URL(string: url)                     let avAsset = AVURLAsset.init(url: videoURL!, options: nil)                     ///生成视频截图                     let generator = AVAssetImageGenerator(asset: avAsset)                     generator.appliesPreferredTrackTransform = true                     generator.apertureMode = AVAssetImageGenerator.ApertureMode.encodedPixels                     let time = CMTimeMakeWithSeconds(0.0, preferredTimescale: 600)                     var actualTime:CMTime = CMTimeMake(value: 10, timescale: 10)                     var imageRef:CGImage?                     var imageUIs:UIImage?                     do{                         imageRef = try generator.copyCGImage(at: time, actualTime: &actualTime)                         if let cgimage = imageRef{                             imageUIs = UIImage(cgImage: imageRef!)                         }                         print("应该数据请求成功了\(imageRef)")                      }catch let err as NSError{                         imageUIs = UIImage(named: "cover.jpg")                         print("出现错误!\(err)")                     }                     //在主线程中显示截图                     DispatchQueue.main.async {                         self.videoImgData.append(imageUIs!)                         self.reloadData()                     }                 } 

还有一点是关于CGImage与UIImage之间的转换:

如果是UIImage转为CGImage用到了强转,一般这里会遇到错误,其他的方法尚未找到

//imageRef是CGImage imageRef = UIImage(named: "cover.jpg") as! CGImage 

//imageRef是CGImage let imageUIs = UIImage(cgImage: imageRef!) 

由于我写的项目是把视频截图放在collectionview里,所以,在以下函数里设置cell数目的时候,设置为视频截图的数目,不然会出现数组越界。当然,也可以有其他的处理方法。

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {  } 

以上

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!