首页 > 解决方案 > Swift,无需压缩即可加载图库的视频

问题描述

当您为用户提供使用之前在 iPhone 画廊中注册的视频的可能性时,UIImagePickerController无论原始分辨率如何,它都会被导入并压缩为 1280x720。是否有可能以原始质量获得原始视频UIImagePickerController

返回的 urlUIImagePickerController.InfoKey.mediaURL似乎是压缩文件的临时 url,因此无法获取原始文件。

标签: iosswiftuiimagepickercontroller

解决方案


对于这个问题,我可以想到两种方法。首先,有一个UIImagePickerController被调用的属性videoExportPreset。您可以将该属性设置为AVAssetExportPresetPassthrough.

videoExportPreset可用于指定视频的转码质量(通过 AVAssetExportPreset* 字符串)。如果该值为 nil(默认值),则 transcodeQuality 由 videoQuality 确定。如果源类型为 则无效 UIImagePickerControllerSourceTypeCamera

记得做import AVFoundation


第二种方法是实现自己的选择器,即使用PHAsset

例子:

 let fetchResult = PHAsset.fetchAssets(with: .video, options: nil)

 let videoRequestOptions = PHVideoRequestOptions()
 videoRequestOptions.version = .original

 fetchResult.enumerateObjects { (asset, index, _) in
     PHImageManager.default().requestAVAsset(forVideo: asset, options: videoRequestOptions) { (avAsset, audioMix, infoDic) in
         //----
     }
 }

推荐阅读