如果您的视频从iCloud下载并保存到本地,则需要先将其导出到应用程序沙盒内的临时文件夹中,然后再使用AVAssetExportSession导出。下面是一个示例代码:
let documentsDirectoryUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let temporaryFileName = "tempVideo.mp4"
let temporaryFileUrl = documentsDirectoryUrl.appendingPathComponent(temporaryFileName)
if let urlAsset = AVURLAsset(url: videoUrl), let exportSession = AVAssetExportSession(asset: urlAsset, presetName: AVAssetExportPresetHighestQuality) {
exportSession.outputFileType = AVFileType.mp4
exportSession.outputURL = temporaryFileUrl
exportSession.exportAsynchronously(completionHandler: {
switch exportSession.status {
case .completed:
//导出完成后,可以将临时文件转移到另一个位置,并删除临时文件。
//然后您可以使用导出的文件路径来进行进一步的操作。
case .failed, .cancelled:
print("Export failed: \(String(describing: exportSession.error))")
default:
break
}
})
}
在上面的代码中,我们首先将视频导出到临时文件夹中,然后在回调中检查AVAssetExportSession的状态。如果导出成功,我们可以将临时文件移动到另一个位置并删除它。之后,您就可以在应用程序中使用导出的视频文件。
注意:确保您有适当的访问iCloud文件的权限,并且将导出的文件保存在应用程序沙盒内的临时文件夹中。