簡體   English   中英

未調用PHVideoRequestOptions的progressHandler

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM