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

生成视频截图代码:

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()
                    }
                }

 这里遇到了问题,刚开始是直接用try!的,其实不建议用try!,如果遇到了错误程序会直接崩溃,所以改为了do{ try }catch{ },在错误处理中,如果遇到了错误,就直接指定一张图片。

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

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

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

 如果是CGImage转为UIImage则比较简单

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

 

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

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

}

 

以上

posted @ 2019-11-05 21:14  僧侣行书  阅读(632)  评论(0编辑  收藏  举报