T R*_*ers 9 uiimagepickercontroller swift phasset
我的目标是使用AWSS3TransferUtility将原始分辨率的设备捕获的视频文件上传到S3。
用户使用来选择视频,UIImagePickerController但是,如果我传递info[UIImagePickerControllerMEDIAURL]给transferUtility,它将始终将视频降低到720p。如果我通过transferutility,info[UIImagePickerControllerREFERENCEURL]则会收到错误消息:
该操作无法完成。(com.amazonaws.AWSS3TransferUtilityErrorDomain错误4。)
找不到错误代码的说明,因此我假设这是权限错误,因为我没有通过Photos框架或PHAsset.fetch
REFURLCE URL-assets-library://asset/asset.mov?id = 5B99DC8E-B94E-4CBF-AFB8-7F82BC72FEE2&ext = mov
媒体URL-file:///private/var/mobile/Containers/Data/Application/76928AD7-F142-4CC9-9708-A58C8CAF8EE5/tmp/trim.82038B6A-222F-4B50-A937-A8C399B02A08.MOV
现在,我有了ReferenceURL,并且正在尝试获取PHAsset,以便可以将其复制到Documents Directory并将其URL从那里传递给TransferUtility,以解决AWSS3TransferUtilityErrorDomain错误4。
但是,现在不建议使用fetchAssets(withALAssetURLs:options :),因此无法使用ReferenceURL来获取资产;所有其他方法都是通过媒体类型等批量获取。有fetchAssets(withLocalIdentifiers:options :),但我不确定如何仅从URL获取PHAsset的本地标识符。
如果需要PHAsset选择的项目,可以直接从回调info中获取UIImagePickerController
let asset = info[.phAsset] as? PHAsset
Run Code Online (Sandbox Code Playgroud)
如果不存在,那么您在使用选择器之前没有请求授权,因此请执行以下操作
let status = PHPhotoLibrary.authorizationStatus()
if status == .notDetermined {
PHPhotoLibrary.requestAuthorization({status in
})
}
Run Code Online (Sandbox Code Playgroud)
注意:localIdentifier是 的属性PHObject,并且PHAsset是 的子类PHObject。
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |