【问题标题】:I am not able to save video in camera roll我无法将视频保存在相机胶卷中
【发布时间】:2019-08-05 06:57:57
【问题描述】:

我的视频存储在 Firebase 存储中。 我正在获取该视频的下载网址。我正在使用下载网址将视频保存在相机胶卷中。

但我收到此错误:

"错误域=NSCocoaErrorDomain Code=-1 "(null)"

这是我的代码:

@objc func saveVideoToCameralRoll(vidUrl: URL?) {

        if FileManager.default.fileExists(atPath: self.localDir) {
            return
        }
        if let vidUrl = vidUrl {

            PHPhotoLibrary.shared().performChanges({
                PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: vidUrl)
            }) { saved, error in
                if saved {
                   print("Video can be saved in camera roll")
                }

                if error != nil {
                    print("Error while saving video. \(error?.localizedDescription)")
                }
            }
        }

我已在浏览器中检查了视频 URL,它是正确的。另外,我正在模拟器中运行此代码。 iPhone模拟器相机胶卷中不能保存视频吗?

【问题讨论】:

    标签: swift firebase firebase-storage


    【解决方案1】:

    PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: vidUrl) 需要本地文件 URL,而不是远程 Web URL。您还需要获得访问照片库的权限。

    您可能需要这样的东西:(使用图像的示例)

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let exampleURL = URL(string: "http://google.com")
            saveImageAtURL(url: exampleURL!)
        }
    
        private func saveImageAtURL(url: URL) {
            let session = URLSession.shared
            let task = session.dataTask(with: url) { data, response, error in
                guard let data = data,
                    error == nil,
                    let image = UIImage(data: data)else {
                    return
                }
    
                guard PHPhotoLibrary.authorizationStatus() == .authorized else {
                    return
                }
    
                PHPhotoLibrary.shared().performChanges({
                    PHAssetChangeRequest.creationRequestForAsset(from: image)
                })
            }
    
            task.resume()
        }
    }
    

    【讨论】:

    • 为什么要在代码中创建图像对象?我需要保存视频而不是图像。
    • 它是如何下载内容并将其保存到照片库的快速示例
    • 我试过你的代码。它不工作。该函数正在从第一个保护语句返回
    • 虽然 URL 实际上并没有指向图像,但请尝试使用您的 URL 并将视频数据写入文件,将文件 URL 传递到照片库代码
    猜你喜欢
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2016-05-01
    • 2015-01-06
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多