如何将视频保存到 Swift Playgrounds 中的 URL
Posted
技术标签:
【中文标题】如何将视频保存到 Swift Playgrounds 中的 URL【英文标题】:How to save a video to a URL in Swift Playgrounds 【发布时间】:2017-04-01 15:20:22 【问题描述】:我正在尝试实例化 PHLivePhoto
,但每当我尝试保存构成实时照片的视频时,我都无法正常工作。
这是我编写的用于处理导出视频的小代码 sn-p:
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
。我可能是错的,但我并没有真正找到用Data
创建PHLivePhoto
的方法。有一个PHAssetResource
类,但这仅有助于获取PHLivePhoto
的数据文件,而不是创建PHLivePhoto
。
所以我现在认为我可能的解决方案是:
-
弄清楚如何将视频保存为
URL
。
尝试通过Data
而不是URL
创建实时照片。
【问题讨论】:
文件URL就是数据所在的位置 @LeoDabus 同意,但是在创建PHLivePhoto
时我需要使用这种方法:request(withResourceFileURLs:placeholderImage:targetSize:contentMode:resultHandler:)
。如您所见,它使用[URL]
作为参数,而不是Data
。
@LeoDabus 以下是相关文档:developer.apple.com/reference/photos/phlivephoto/…
明白:),那我就用 FileManger。如果有效,我会尽快通知您。
@LeoDabus 成功了!非常感谢你。我认为捆绑网址应该可以工作,但临时目录可以工作。如果您愿意,可以回答,我会标记为已接受。
【参考方案1】:
fileURL 就是数据所在的位置。只需将数据写入temporary folder 并将该文件 url 传递给该方法。
【讨论】:
以上是关于如何将视频保存到 Swift Playgrounds 中的 URL的主要内容,如果未能解决你的问题,请参考以下文章
如何将本地 HTML 文件导入到我的 Swift Playground Live View?
将图像添加到 swift Playground [iPad]
如何将视频保存到 Swift Playgrounds 中的 URL