从ReferenceURL获取PHAasset: fetchAssets(withALAssetURLs:options:) DEPRECATED。

问题描述 投票:10回答:1

我的目标是使用AWSS3TransferUtility将原始分辨率设备捕获的视频文件上传到S3。

用户选择一个视频,使用 UIImagePickerController 然而,如果我通过 info[UIImagePickerControllerMEDIAURL] 到transferUtility,它总是减少视频到720p。如果我通过transferutility info[UIImagePickerControllerREFERENCEURL] 我得到一个错误。

该操作无法完成。 (com.amazonaws.AWSS3TransferUtilityErrorDomain错误4。)

找不到对错误代码的解释,所以我认为这是一个 权限 错误,因为我没有通过 照片 架构或 PHAsset.fetch

  • 参考网址 -assets-library:/assetasset.mov?id=5B99DC8E-B94E-4CBF-AFB8-7F82BC72FEE2&ext=mov。

  • 媒体网址 -file:/privatevarmobileContainersDataApplication76928AD7-F142-4CC9-9708-A58C8CAF8EE5tmptrim.82038B6A-222F-4B50-A937-A8C399B02A08.MOV。

现在,我有了ReferenceURL,并试图获取PHAsset,以便将其复制到Documents目录,并从那里将它的URL传递给TransferUtility,以绕过 AWSS3TransferUtilityErrorDomain错误4。.

然而, fetchAssets(withALAssetURLs:options:)现在已经不适用了。 所以我无法通过ReferenceURL来获取资产,其他方法都是通过媒体类型等批量获取。有一个 fetchAssets(withLocalIdentifiers:options:) 但我不知道如何仅仅从URL中获取PHAsset的本地标识符,我的目标是使用AWSS3TransferUtility上传原始分辨率设备捕获的视频文件到S3。

swift uiimagepickercontroller phasset
1个回答
1
投票

如果你需要 PHAsset 所选项目的,您可以直接从 infoUIImagePickerController 回调

let asset = info[.phAsset] as? PHAsset

如果它不在那里,那么你就没有申请授权。之前 使用picker,所以这样做

let status = PHPhotoLibrary.authorizationStatus()

if status == .notDetermined  {
    PHPhotoLibrary.requestAuthorization({status in

    })
}

注。localIdentifier 是一个属性 PHObjectPHAsset 的一个子类。PHObject.

© www.soinside.com 2019 - 2024. All rights reserved.