我正在尝试实例化 aPHLivePhoto
但每当我尝试保存构成实时照片的视频时,我都无法使其正常工作。
这是我编写的处理导出视频的一小段代码:
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
with Data
. 有一个PHAssetResource
类,但这仅有助于获取PHLivePhoto
不创建PHLivePhoto
.
所以我现在相信的可能的解决方案是:
- 弄清楚如何将视频保存为
URL
. - 尝试通过
Data
而不是URL
.