-1
我试图实例化PHLivePhoto
,但每当我尝试保存构成实况照片的视频时,我都无法使其正常工作。如何将视频保存到Swift Playgrounds中的URL
这里有一个小的代码片段,我写的是处理出口视频:
public func exportFilteredVideo(to outputURL: URL, completion: @escaping (Void) -> Void) {
if FileManager.default.fileExists(atPath: outputURL.path) {
try? FileManager.default.removeItem(at: outputURL)
}
let export = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetMediumQuality)!
export.outputFileType = AVFileTypeQuickTimeMovie
export.outputURL = outputURL
export.videoComposition = generateComposition()
export.exportAsynchronously(completionHandler: completion)
}
这是当我尝试检索视频:
let destURL = url.deletingLastPathComponent().appendingPathComponent("Test.mov")
pixellationFilter.exportFilteredVideo(to: destURL) {
print(try! destURL.checkResourceIsReachable()) //An error is thrown! Why though, isn't the export completed?
}
目前,我怀疑是您可能无法写入指定的URL
。但是,我的理解是,无论何时我想创建PHLivePhoto
对象,我都需要将资源指定为URL
而不是Data
。如果这是可能的,我可以改为使用数据,而不是将其导出到URL
。我可能是错的,但我并没有真的找到一种方法来创建与Data
PHLivePhoto
。有一个PHAssetResource
类,但只有帮助获取PHLivePhoto
的数据文件不创建PHLivePhoto
。
所以我可能的解决方案,我相信在这一刻是:
- 图出来我如何可以将视频保存为
URL
。 - 尝试通过
Data
而不是URL
创建实时照片。
fileURL它就是数据所在的位置 –
@LeoDabus同意,但创建PHLivePhoto时,我需要使用此方法:request(使用资源文件URL:占位符Image:target尺寸:内容模式:结果处理:)'。正如你所看到的,它将'[URL]'作为参数而不是'Data'。 – Harish
@LeoDabus以下是相关文档:https://developer.apple.com/reference/photos/phlivephoto/1616434-request – Harish