问题描述
我正在尝试通过 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
属性设置为 mediumQualityFormat
或 fastFormat
可能是导致您出现问题的原因正在经历。尝试使用自动或高质量,因为根据文档,这些是导出时唯一支持的模式。
let videoRequestOptions = PHVideoRequestOptions()
videoRequestOptions.deliveryMode = .highQualityFormat
videoRequestOptions.isNetworkAccessAllowed = true
PHImageManager.default().requestAVAsset(forVideo: asset,options: videoRequestOptions) { (asset,audioMix,info) in
// Use the returned asset
}