将视频资产保存到图库后检索

Posted

技术标签:

【中文标题】将视频资产保存到图库后检索【英文标题】:Retrieving Video Asset After Saving it to Gallery 【发布时间】:2019-11-08 15:50:58 【问题描述】:

我正在尝试将视频保存到图库,然后检索资产,在 ios 12 中它工作正常,现在在 ios 13 中测试它不再工作了。视频已正确保存,但检索到的资产不是正确的,而是库中的另一个。

phphotoLibrary.shared().performChanges(
    PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: filePath)
)  completed, error in
    if completed 
        let fetchOptions = PHFetchOptions()
        fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]

        let fetchResult = PHAsset.fetchAssets(with: .video, options: fetchOptions).lastObject
        GeneralUtils().shareVideoFacebook(fetchResult!, self)
    


【问题讨论】:

创建日期不是这样做的方法。如果您想在创建后访问资产,则不应丢弃创建请求的结果。 此外,视频可能仍在文件 url 中,所以当您仍然拥有它时,为什么还要从库中获取它? 问题是 FBSDK 想要一个 Asset URL 来分享视频,我把视频放在内部目录中 【参考方案1】:

我刚刚找到了解决这个问题的方法。您可以要求保存图像的本地标识符。

var id: String?
PHPhotoLibrary.shared().performChanges(
    let collection = PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: filePath)
    id = collection?.placeholderForCreatedAsset?.localIdentifier
)  completed, error in
    if completed 
        let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: [id!], options: .none).firstObject
        GeneralUtils().shareVideoFacebook(fetchResult!, self)
                            

【讨论】:

是的,我就是这么说的。创建请求返回一个值,但您将其丢弃。

以上是关于将视频资产保存到图库后检索的主要内容,如果未能解决你的问题,请参考以下文章

如何将视频保存到相机胶卷并获取资产 URL?

我只想将裁剪后的图像保存到图库中。但它保存了原始的完整图像。如何只保存裁剪的图像?

iOS:从网址下载视频并保存在图库中......?

使用适用于 Android 7.1.1 的 FileProvider 使用相机拍照后,我无法将文件保存到图库

如何从图库中选择图像并保存到 xamarin 中的 sql 数据库

从我的相机应用程序拍照后,图片未保存到图库