我正在使用DKImagePickerController从图库中选择视频并尝试显示它的缩略图。不知道为什么,但它需要10-15秒来显示图像。任何帮助表示赞赏。
以下是代码:
tempDkAsset.fetchAVAssetWithCompleteBlock { (tempVideo, info) in
tempImageView.image = self.thumbnailForVideoAtURL(tempVideo!)
}
func thumbnailForVideoAtURL(_ asset : AVAsset) -> UIImage? {
let assetImageGenerator = AVAssetImageGenerator(asset: asset)
var time = asset.duration
time.value = min(time.value, 2)
do {
let imageRef = try assetImageGenerator.copyCGImage(at: time, actualTime: nil)
return UIImage(cgImage: imageRef)
} catch {
print("error")
return nil
}
}
答案 0 :(得分:4)
问题是您在后台线程上调用thumbnailForVideoAtURL
。你需要在主线程上,因为你正在与界面交谈。
tempDkAsset.fetchAVAssetWithCompleteBlock { (tempVideo, info) in
DispatchQueue.main.async {
tempImageView.image = self.thumbnailForVideoAtURL(tempVideo!)
}
}