UIImagePickerController - 将录制的视频保存到相机滚动错误

时间:2017-11-25 08:39:15

标签: ios swift phphotolibrary

我正在尝试使用UIImagePickerController保存使用相机录制的视频。我尝试过两种不同的方式,两种方式都没有用。

首次尝试:

if let pathURL = info["UIImagePickerControllerMediaURL"] as! URL?, mediaType == kUTTypeMovie {
    PHPhotoLibrary.shared().performChanges({
        PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: pathURL)
    }, completionHandler: { (isSuccessfull, error) in
        if error != nil {
            // ERROR
            // error.localizedDescription value below
            // "The operation couldn’t be completed. (Cocoa error -1.)"
        } else if isSuccessfull {
            // SUCCESS
        }
    })
}

在那次尝试中,我总是收到错误"The operation couldn’t be completed. (Cocoa error -1.)"

第二次尝试:

if let filePath = info["UIImagePickerControllerMediaURL"] as! NSURL,
   let stringPath = filePath.path {
    UISaveVideoAtPathToSavedPhotosAlbum(stringPath, self, #selector(Controller.videoSaved(videoPath:didFinishSavingWithError:contextInfo:)), nil)
}

这也不起作用......回调,错误为零,但视频未保存到相机胶卷中。此外,当我使用UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(stringPath)时,此方法也会一直返回false。我无法理解为什么录制的视频与保存不兼容。

我真的不知道我做错了什么。我错过了什么? plist中的配置?

以下是info["UIImagePickerControllerMediaURL"]的价值:     file:///private/var/mobile/Containers/Data/Application/2B9BE04A-17B3-49CE-B4BA-C45F183E9A64/tmp/837294779101__C4825AFE-8140-420F-ACD0-64623C7A4753.MOV

对于使用相机拍摄的照片,PHPhotoLibrary方法效果非常好......这只是无法保存的视频。

1 个答案:

答案 0 :(得分:0)

不确定100%,但我相信它对我不起作用,因为我只是在我的API请求成功后才保存视频。我的假设是路径URL是临时的,并且生命周期很短。当我将它传递给另一个控制器并进行API调用时,它不起作用。但是如果我直接在UIImagePickerViewController的委托方法中保存视频,那么它可以正常工作。