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

时间:2017-04-01 15:20:23

标签: swift url nsfilemanager swift-playground phlivephoto

我正在尝试实例化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

所以我现在相信的可能解决方案是:

  1. 了解如何将视频保存为URL
  2. 尝试通过Data代替URL创建实时照片。

1 个答案:

答案 0 :(得分:1)

fileURL它就是数据所在的位置。只需将数据写入module resolution process并将该文件URL传递给该方法即可。