2017-04-01 50 views
-1

我试图实例化PHLivePhoto,但每当我尝试保存构成实况照片的视频时,我都无法使其正常工作。如何将视频保存到Swift Playgrounds中的URL

这里有一个小的代码片段,我写的是处理出口视频:

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。我可能是错的,但我并没有真的找到一种方法来创建与DataPHLivePhoto。有一个PHAssetResource类,但只有帮助获取PHLivePhoto的数据文件不创建PHLivePhoto

所以我可能的解决方案,我相信在这一刻是:

  1. 图出来我如何可以将视频保存为URL
  2. 尝试通过Data而不是URL创建实时照片。
+0

fileURL它就是数据所在的位置 –

+0

@LeoDabus同意,但创建PHLivePhoto时,我需要使用此方法:request(使用资源文件URL:占位符Image:target尺寸:内容模式:结果处理:)'。正如你所看到的,它将'[URL]'作为参数而不是'Data'。 – Harish

+0

@LeoDabus以下是相关文档:https://developer.apple.com/reference/photos/phlivephoto/1616434-request – Harish

回答

1

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