AVAssetReader 无法初始化?

问题描述

我正在尝试通过 AVAssetReader 和 AVAssetWriter 导出 iCloud 资产,但 AVAssetReader 无法使用该资产进行初始化。所有其他视频工作正常。只有 iCloud 共享相册视频会引起麻烦。 AVAssetReader 给我的错误是:

Error Domain=AVFoundationErrorDomain Code=-11800 "操作无法完成" UserInfo={NSLocalizedFailureReason=发生未知错误(-17507),NSLocalizedDescription=操作无法完成,NSUnderlyingError=0x2812d8ae0 {Error Domain=NSOsstatusErrorDomain代码=-17507 "(null)"}}

是否有任何原因要修复它或是否有其他替代方法

解决方法

使用 PHImageManager 请求资产时,将 deliveryMode 实例的 PHVideoRequestOptions 属性设置为 mediumQualityFormatfastFormat 可能是导致您出现问题的原因正在经历。尝试使用自动或高质量,因为根据文档,这些是导出时唯一支持的模式。

let videoRequestOptions = PHVideoRequestOptions()
videoRequestOptions.deliveryMode = .highQualityFormat
videoRequestOptions.isNetworkAccessAllowed = true

PHImageManager.default().requestAVAsset(forVideo: asset,options: videoRequestOptions) { (asset,audioMix,info) in
            // Use the returned asset 
        }