错误域= NSCocoaErrorDomain代码= 257“无法打开文件”IMG_9807.MOV“,因为您无权查看它。” UserInfo = {NSFilePath = / var / mobile / Media / DCIM / 109APPLE / IMG_9807.MOV,NSUnderlyingError = 0x1c1e5fe00 {Error Domain = NSPOSIXErrorDomain Code = 1“不允许操作”
我正在将资产URL发送到其他控制器并尝试转换为数据
PHImageManager.default().requestAVAsset(forVideo: self.albumView.phAsset, options: options) { (video, audioMix, info) in
DispatchQueue.main.async {
let urlAsset = video as! AVURLAsset
self.dismiss(animated: false, completion: {
self.delegate?.fusumaVideoCompleted(withFileURL: urlAsset.url)
})
}
}
下面是将AVAssetUrl转换为数据的方法
do {
let data = try Data(contentsOf: product.videoURL, options: .mappedIfSafe)
return .upload(.multipart([MultipartFormData(provider: .data(data), name: "post[video]", fileName: "video.\(pathExtension)", mimeType: "video/\(pathExtension)")]))
} catch {
debugPrint(error)
}
答案 0 :(得分:1)
如错误告诉您,您无法通过其URL访问用户照片库中的视频文件以进行上传。您应该获取视频数据并上传。视频非常大,所以你不应该直接获取数据并将其保存在内存中;相反,将数据导出到 允许访问的位置的文件中,例如Temporary文件夹。
为此,您可以(例如)使用此方法:
https://developer.apple.com/documentation/photos/phassetresourcemanager/1616280-writedata
或者这个:
https://developer.apple.com/documentation/photos/phimagemanager/1616981-requestexportsession
如果您使用Mail应用程序通过电子邮件发送自己设备的照片库中的视频,您实际上会看到这种情况发生;导出视频时有一个进度条暂停,然后然后构建电子邮件。