iOS14获取iCloud视频失败问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS14获取iCloud视频失败问题相关的知识,希望对你有一定的参考价值。
参考技术A 使用PHVideoRequestOptions的requestAVAssetForVideo方法获取云端视频,然后AVAssetExportSession进行压缩发现压缩失败,后来发现是获取云端视频出了问题。//PHVideoRequestOptions获取iCloud视频
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
options.version = PHVideoRequestOptionsVersionOriginal;
options.deliveryMode = PHVideoRequestOptionsDeliveryModeHighQualityFormat;
options.networkAccessAllowed = YES ;
其中,deliveryMode不能用PHVideoRequestOptionsDeliveryModeMediumQualityFormat和PHVideoRequestOptionsDeliveryModeFastFormat,不然可能获取不到云端视频,最好用PHVideoRequestOptionsDeliveryModeHighQualityFormat,保证能够获取到视频;networkAccessAllowed要记得设置为YES,否则也会获取不到云端视频。
//AVAssetExportSession压缩视频
AVAssetExportSession压缩视频的outputURL参数,注意要用[NSURLfileURLWithPath:@"path"]方法构造,不能用[NSURL URLWithString:@"path"]方法构造,否则会压缩失败!
ios swift图库库性能问题,一旦加载图像/视频列表,数据来自iCloud
【中文标题】ios swift图库库性能问题,一旦加载图像/视频列表,数据来自iCloud【英文标题】:Ios swift gallery library Performance issue, once loading image/Video list, the data is from ICloud 【发布时间】:2020-04-17 05:32:16 【问题描述】:我是 IOS 新手,我正在使用第三方库来集成我的多个图像/视频选择器。图书馆链接https://github.com/hyperoslo/Gallery
本地图像/视频显示速度足够快,但问题是一旦我使用 iCloud 包含 500 多张图像,几乎需要 1 分钟。第一次加载,是他们的任何解决方案减少或几乎消除加载时间。
这是我的代码快照,可能会有所帮助
class MyGalleryViewController: UIViewController, GalleryControllerDelegate,UITabBarControllerDelegate
let gallery = GalleryController()
override func viewDidLoad()
super.viewDidLoad()
openGallery()
private func openGallery()
gallery.delegate = self
gallery.modalPresentationStyle = .fullScreen
present(gallery, animated: true, completion: nil)
//Rest of galleryController function
提前非常感谢。
【问题讨论】:
【参考方案1】:您需要遵循以下步骤:
为 iCloud 上的图像获取 PHAsset PHAsset.fetchAssets(with: .image, options: PHFetchOptions())
// Images on iCloud will be included
请求资产图片
let imageRequestOptions = PHImageRequestOptions()
imageRequestOptions.deliveryMode = .opportunistic
imageRequestOptions.isNetworkAccessAllowed = true // allowing iCloud image downloaded from network
imageRequestOptions.progressHandler = progressHandler // progressHandler is outer callback, may be called multiple times
PHCachingImageManager.default().requestImage(for: asset)
在 PHAssetImageProgressHandler 中处理图片下载进度
let progressHandler: PHAssetImageProgressHandler = (progress, _, stop, _) in
cell.updateProgress(CGFloat(progress))
iCloud 镜像的关键:
-
PHImageRequestOptions.isNetworkAccessAllowed
PHImageRequestOptions.progressHandler
【讨论】:
感谢 Rango,快速回答,但我很困惑如何使用 Gallery 库配置“PHImageRequestOptions”? 有一个 PHImageRequestOptions()。检查库源文件的第 18 行“UIImageView+Extensions.swift”。您可以修改选项并添加progressHandler来自行处理下载进度。 谢谢,我一定会试试的。 :)以上是关于iOS14获取iCloud视频失败问题的主要内容,如果未能解决你的问题,请参考以下文章
ios swift图库库性能问题,一旦加载图像/视频列表,数据来自iCloud