如何从 LivePhoto 的视频资产中获取原始文件 URL,而无需在本地保存其资源? (iOS)

问题描述

搜索并找到了一些可以获得 LivePhoto 资产的视频资产/文件方法。但这些方法的作用如下:

  1. 他们以某种方式获得了 LivePhoto 资产的资源 (PHAssetResource)
  2. 从之前找到的资源中选择特定的视频资源 (PHAssetResource)。(例如:resource.type==PHAssetResourceTypePairedVideo
  3. 将资源数据保存到文件(!)
  4. 获取新创建的文件的 URL。

但是,我想知道的是,有什么方法可以获取原始存储文件 URL 的 URL,无需创建新文件

[对于其他类型的照片/视频,我可以获取原始存储文件的 URL。问题在于 LivePhoto 资产的视频。]

解决方法

我找到了一种直接获取文件原始URL的方法。无需将文件内容保存在新文件中。 (在 iOS12+ 上测试)

  1. 我们首先获取LivePhoto的相关图像URL文件。
asset.requestContentEditingInput(with: nil) { (editingInput,info) in
    if let input = editingInput,let imgUrl = input.fullSizeImageURL {
        // use imgUrl
    }
}
  1. 视频文件与图像文件存储在同一目录中。因此,我们使用 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
}