我正在尝试实例化PHLivePhoto
,但每当我尝试保存构成实时照片的视频时,我都无法让它工作。
以下是我编写的一段代码片段,用于处理导出视频:
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
。我可能是错的,但我并没有找到一种方法来创建一个PHLivePhoto
Data
。有一个PHAssetResource
类,但这只会让PHLivePhoto
的数据文件无法创建PHLivePhoto
。
所以我现在相信的可能解决方案是:
URL
。Data
代替URL
创建实时照片。