ios - PHVideoRequestOptions 的 progressHandler 未调用

标签 ios swift icloud photosframework

当我从 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 block 。我请求的视频在 iCloud 中,因为如果 networkAccessAllowed 设置为 false,这会崩溃。

问题出在哪里?

最佳答案

一种解决方案是使用 PHImageManager 的 requestAVAssetForVideo 而不是 requestPlayerItemForVideo。之后,您可以使用您获得的 AVAsset 创建一个新的 AVPlayerItem。这将与问题中使用的选项一起使用。

我认为这与视频在 iCloud 中的存储方式有关,因为它们可能不是 iCloud 中的 AVPlayerItems。这只是一个有根据的猜测,我不知道为什么其他方法不能正常工作。

关于ios - PHVideoRequestOptions 的 progressHandler 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34962522/

相关文章:

ios - 无法从核心数据中获取特定列

ios - 模态呈现的 UIPopoverController 在 iOS 5 中不起作用

ios - 当给定 iOS 风景照片时 CGImage 不旋转

ios - 如何计算当前日期并将其显示给每个 UITableViewCell

ios - “Couldn' t send a valid signature”错误在没有iCloud账户的情况下使用CloudKit

ios - 核心数据和 iCloud

ios - 没有这样的模块 'FBSDKLoginKit' Xcode 9

ios - 在 Webview 中加载不同的 URL

ios - 通过 segue 传递数据库数据

ios - 核心数据、NSOrderedSet 和 iCloud