问题描述
我搜索并找到了一些可以获得 LivePhoto 资产的视频资产/文件的方法。但这些方法的作用如下:
- 他们以某种方式获得了 LivePhoto 资产的资源 (PHAssetResource)
- 从之前找到的资源中选择特定的视频资源 (PHAssetResource)。(例如:
resource.type==PHAssetResourceTypePairedVideo
) - 将资源数据保存到新文件(!)
- 获取新创建的文件的 URL。
但是,我想知道的是,有什么方法可以获取原始存储文件 URL 的 URL,无需创建新文件?
[对于其他类型的照片/视频,我可以获取原始存储文件的 URL。问题在于 LivePhoto 资产的视频。]
解决方法
我找到了一种直接获取文件原始URL的方法。无需将文件内容保存在新文件中。 (在 iOS12+ 上测试)
- 我们首先获取LivePhoto的相关图像的URL文件。
asset.requestContentEditingInput(with: nil) { (editingInput,info) in
if let input = editingInput,let imgUrl = input.fullSizeImageURL {
// use imgUrl
}
}
- 视频文件与图像文件存储在同一目录中。因此,我们使用 Image URL 但具有不同的扩展名来查找 LivePhoto 的 视频 文件。视频文件扩展名是 .mov 或 .MOV。
if let videoPath = (imagePath.deletingPathExtension as NSString).appendingPathExtension("MOV") {
let videoUrl = URL(fileURLWithPath: videoPath)
// check if file exist and use
// If MOV(Uppercase) extension file doesn't exist check for mov(lowercase) extension similarly
}