如何将视频保存到 Swift Playgrounds 中的 URL

How to save a video to a URL in Swift Playgrounds

我正在尝试实例化 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。我可能是错的,但我并没有真正找到一种方法来创建 PHLivePhotoData。有一个 PHAssetResource class 但这只会帮助获取 PHLivePhoto 的数据文件而不是创建 PHLivePhoto.

所以我认为目前可能的解决方案是:

  1. 弄清楚如何将视频另存为 URL
  2. 尝试通过 Data 而不是 URL 创建实时照片。

fileURL 就是数据所在的位置。只需将数据写入 temporary folder 并将该文件 url 传递给该方法。