swift 打开相册选择的视频的url无法获取准确的地址
时间: 2023-12-06 08:44:24 浏览: 46
在 Swift 中打开相册选择视频,可以使用 `UIImagePickerController` 来实现。
在用户选择视频之后,可以通过 `UIImagePickerControllerDelegate` 中的 `imagePickerController(_:didFinishPickingMediaWithInfo:)` 方法获取视频的信息。其中包含了视频的 URL,可以通过 `info[.mediaURL]` 来获取。
不过需要注意的是,获取到的 URL 并不一定是准确的地址,可能是一个相册中的占位符地址。如果需要获取准确的地址,可以使用 `PHAsset` 来获取。
具体代码示例如下:
```swift
import Photos
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let mediaType = info[.mediaType] as? String,
mediaType == kUTTypeMovie as String,
let url = info[.mediaURL] as? URL else {
return
}
// 获取 PHAsset
let fetchResult = PHAsset.fetchAssets(withALAssetURLs: [url], options: nil)
if let asset = fetchResult.firstObject {
PHImageManager.default().requestAVAsset(forVideo: asset, options: nil) { (avAsset, _, _) in
if let avAsset = avAsset as? AVURLAsset {
// 获取准确的地址
let videoUrl = avAsset.url
// 处理视频地址
// ...
}
}
}
}
```
在这个示例中,首先获取到了用户选择的视频的 URL,然后通过 `PHAsset.fetchAssets(withALAssetURLs:options:)` 方法获取了 PHAsset 对象。接着,使用 `PHImageManager.default().requestAVAsset(forVideo:options:completionHandler:)` 方法获取 AVAsset 对象,并将其转换为 AVURLAsset 对象,最终获取到了准确的视频地址。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)