从PHPickerViewController xcode swift获得结果后如何压缩视频



我知道UIImagePickerController允许您在选择时压缩媒体内容。但是,我不知道如何使用PHPickerViewController来执行同样的操作。我如何在得到结果后压缩视频(didFinishPicking(,(这样我就可以减少上传和下载数据的时间(

我不认为PHPickerViewController能做到这一点,但根据您使用选择器的方式,还有其他方法可以做到:

  1. 如果您使用默认的选取器配置(即在不传递照片库的情况下创建PHPickerConfiguration,因此不需要请求权限(,则必须使用NSItemProvider。据我所知,唯一的选择可能是使用项目提供程序将视频保存到临时文件,并使用AVAssetExportSession将其转换为较低的分辨率/比特率(请参阅此处的一些示例:如何减少使用UIImagePickerController创建的视频的文件大小?(。

  2. 如果您使用带有明确传递的照片库的选择器,PHPickerResult将为您提供assetIdentifier,您可以使用它来获得相应的PHAsset。然后,使用PHImageManagerrequestAVAsset方法来获得所需质量的视频资产。不过,您仍然需要通过AVAssetExportSession导出AVAsset,但使用这种方法,磁盘上不会有(可能很大的(全分辨率临时文件。我最近正在开发一个使用这种技术的开源应用程序,你可以在这里找到一些例子:https://github.com/vadimbelyaev/TbilisiCleanups/blob/main/TbilisiCleanups/Services/MediaUploadService.swift

最新更新