[英]Why is PHImageRequestOptions.progressHandler never called?
[英]PHVideoRequestOptions' progressHandler not called
從iCloud加載視頻時,我希望更新UIProgressView的進度。 由於某種原因,不會調用progressHandler。 我已經嘗試過像在SamplePhotosApp (雖然會加載圖像)中完成的操作一樣,但是無法正常工作。
這是我用於選擇和請求視頻的代碼:
let videoRequestOptions = PHVideoRequestOptions()
videoRequestOptions.deliveryMode = .FastFormat
videoRequestOptions.version = .Original
videoRequestOptions.networkAccessAllowed = true
videoRequestOptions.progressHandler = { (progress, error, stop, info) in
dispatch_async(dispatch_get_main_queue(), {
print(progress)
self.progressView.progress = Float(progress)
})
}
PHImageManager.defaultManager().requestPlayerItemForVideo(asset, options: videoRequestOptions, resultHandler: {
result, info in
self.videoPlayer = AVPlayer(playerItem: result!)
})
該代碼甚至不會打印任何內容,因此看起來根本不會調用progressHandler塊。 我請求的視頻在iCloud中,因為如果將networkAccessAllowed設置為false,這將導致崩潰。
哪里出問題了?
一種解決方案是使用PHImageManager的requestAVAssetForVideo
而不是requestPlayerItemForVideo
。 之后,您可以使用得到的AVAsset創建一個新的AVPlayerItem。 這將與問題中使用的選項一起使用。
我認為這與視頻存儲在iCloud中的方式有關,因為它們可能不是iCloud中的AVPlayerItems。 這只是一個有根據的猜測,對於為什么其他方法無法正常工作,我沒有任何事實。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.