使用iOS中的Photos Framework将video保存到自定义相册

我想使用Photos Framework将使用自定义相机拍摄的video保存到Photos Library中的NewAlbum 。 我找到了一些答案,但他们提到了ALAssetsLibrary的使用,现在已经弃用了。

如果您需要更多详细信息,请告诉我,如果我错过了某些内容,请纠正我。 谢谢

我不确定如何从Video对象创建PHAsset ,但是当你可以实现这一点时,

我找到了一个解决方案从video创建PHAsset :

代码块1:

 PhotoLibrary.shared().performChanges({ let createAssetRequest = PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(/*Your url here*/) placeholder = createAssetRequest.placeholderForCreatedAsset identifier = placeholder.localIdentifier }, completionHandler: { success, error in /* Fetch Asset with the identifier here after that, add the PHAsset into an album */ newAsset = PHAsset.fetchAssets(withLocalIdentifiers: [identifier], options: nil).firstObject } 

您可以使用以下代码段添加PHAsset

代码块2:

 PhotoLibrary.shared().performChanges({ guard let addAssetRequest = PHAssetCollectionChangeRequest(for: /*your specific album here as PHAssetCollection*/) else { return } addAssetRequest.addAssets([newAsset] as NSArray) }, completionHandler: { success, error in //handle error or stuff you want to do after that here }) 

编辑用于创建PHAssetCollection

在这种情况下,我在performChanges(_:,completionHandler:)闭包中创建了performChanges(_:,completionHandler:)并将其放入该函数的@escaping闭包中。

 PHPhotoLibrary.shared().performChanges({ let createRequest = PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: name) placeHolderIdentifier = createRequest.placeholderForCreatedAssetCollection.localIdentifier }, completionHandler: { success, error in if success { var createdCollection: PHAssetCollection? = nil if placeHolderIdentifier != nil { createdCollection = PHAssetCollection.fetchAssetCollections(withLocalIdentifiers: [placeHolderIdentifier!], options: nil).firstObject } completion(success, createdCollection as? T) } else { LogError("\(error)") completion(success, nil) } })