-1

我正在尝试实例化 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. 我可能是错的,但我并没有真正找到一种方法来创建一个PHLivePhotowith Data. 有一个PHAssetResource类,但这仅有助于获取PHLivePhoto不创建PHLivePhoto.

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

  1. 弄清楚如何将视频保存为URL.
  2. 尝试通过Data而不是URL.
4

1 回答 1

1

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

于 2017-04-01T20:06:30.213 回答