如何解决如何将我的应用程序中的视频保存到 iOS 中的用户照片库中?
我的 iOS 应用允许用户拍照或录制视频,如果他们愿意,可以将其发送并保存到他们的相册中。我已经完成了所有工作,但我不知道如何保存视频。我已经用谷歌搜索过了,但我看到的大部分代码似乎已经过时了。我已经尝试了以下代码,但 Xcode 给了我错误,例如“在范围中找不到‘UTTypecopyPreferredTagWithClass’”等(我已经导入了 UniformTypeIdentifiers)。我也不太确定这段代码是否真的有任何作用。
// Write video to disk
guard let fileExtension = UTTypecopyPreferredTagWithClass(photoEditViewController.configuration.photoEditViewControllerOptions.outputimageFileFormatUTI,kUTTagClassFilenameExtension)?.takeRetainedValue() as String?,let filename = (ProcessInfo.processInfo.globallyUniqueString as Nsstring).appendingPathExtension(fileExtension) else {
return
}
let fileURL = URL(fileURLWithPath: (NstemporaryDirectory() as Nsstring).appendingPathComponent(filename))
try? data.write(to: fileURL,options: [.atomic])
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromImage(atFileURL: fileURL)
}) { _,_ in
// Delete video from disk
_ = try? FileManager.default.removeItem(at: fileURL)
}
这段代码可以改进吗,或者有什么更好的方法可以用来将视频保存到 iOS 的照片库中?
解决方法
尝试使用它在照片库中保存视频,参考Save video to camera roll
func requestAuthorization(completion: @escaping ()->Void) {
if PHPhotoLibrary.authorizationStatus() == .notDetermined {
PHPhotoLibrary.requestAuthorization { (status) in
DispatchQueue.main.async {
completion()
}
}
} else if PHPhotoLibrary.authorizationStatus() == .authorized{
completion()
}
}
func saveVideoToAlbum(_ outputURL: URL,_ completion: ((Error?) -> Void)?) {
requestAuthorization {
PHPhotoLibrary.shared().performChanges({
let request = PHAssetCreationRequest.forAsset()
request.addResource(with: .video,fileURL: outputURL,options: nil)
}) { (result,error) in
DispatchQueue.main.async {
if let error = error {
print(error.localizedDescription)
} else {
print("Saved successfully")
}
completion?(error)
}
}
}
}
函数使用:
self.saveVideoToAlbum(/* pass your final url to save */) { (error) in
//Do what you want
}
,
您可以使用 UISaveVideoAtPathToSavePhotosAlbum
将视频保存到图库
该函数将视频添加到用户相机相册指定路径中。
func UISaveVideoAtPathToSavedPhotosAlbum(_ videoPath: String,_ completionTarget: Any?,_ completionSelector: Selector?,_ contextInfo: UnsafeMutableRawPointer?)
在 VideoPath 中,插入要保存的视频的路径。
此外,您可以先使用函数 UIVideoAtPathCompatibleWithSavedPhotosAlbum(_:)
检查未保存的错误,看看视频是否可以存储在图库中。
有关详细信息,请参阅 apple developer site。
,提供的两个答案都很好。我选择 Hailey's 作为“正确”的,因为它非常适合简单地保存视频。对于将来遇到此帖子的任何人。您可以根据需要使用任何一种。 Schaheer 的代码处理请求许可和保存视频,如果您有路径,Hailey 的代码只会保存视频。我将上述两个答案结合起来,并将其与其他来源提供的示例代码结合使用。
对于使用 IMGLY 照片或视频编辑器 SDK 的其他人,我将很快发布我使用的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。