微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将我的应用程序中的视频保存到 iOS 中的用户照片库中?

如何解决如何将我的应用程序中的视频保存到 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 举报,一经查实,本站将立刻删除。