在 iOS 14 中,Apple 引入PHPickerViewController
了用户有权访问所有照片库视频或选定视频的权限。在第一种情况下,当我们为所有视频提供权限时,我们能够从照片库中获取视频并将其转换为视频数据以将其发送到后端服务器。
但是在第二种情况下,当用户提供对所选视频的权限时,在这种情况下,我们能够从照片库中获取视频,但无法将其转换为来自本地视频 url 的数据。那时数据总是为零。
我们使用下面的代码从照片库 url 中检索视频并将其转换为数据。
// MARK: PHPickerViewControllerDelegate Methods
extension PhotoPickerVC: PHPickerViewControllerDelegate {
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
// Always dismiss the picker first
dismiss(animated: true)
if !results.isEmpty {
guard let itemProvider = results.first?.itemProvider else { return }
itemProvider.loadItem(forTypeIdentifier: "public.movie", options: nil) { [weak self] (fileURL, _) in
DispatchQueue.main.async {
guard let videoURL = fileURL as? URL, let _ = self else { return }
do {
//mediaURL video loading
print(videoURL)
let VideoData = try Data(contentsOf: videoURL, options: Data.ReadingOptions.alwaysMapped)
print(VideoData)
} catch _ {
print("Received nil VideoData")
}
}
}
}
}
}