2016-12-31 2 views
0

DKImagePickerControllerを使用してギャラリーからビデオを選択し、そのサムネイルを表示しようとしています。理由は分かりませんが、画像を表示するのに10-15秒かかります。どんな助けもありがとうございます。ビデオサムネイルを表示するのに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 
    } 
} 

答えて

4

問題は、あなたがバックグラウンドスレッドでthumbnailForVideoAtURLを呼び出しているということですが。あなたはインターフェイスと話しているので、メインスレッドにいる必要があります。

tempDkAsset.fetchAVAssetWithCompleteBlock { (tempVideo, info) in 
    DispatchQueue.main.async { 
     tempImageView.image = self.thumbnailForVideoAtURL(tempVideo!) 
    } 
} 
+0

ブロックがバックグラウンドスレッドで実行されていることを完全に忘れています。ありがとう:) –

関連する問題