无法快速将视频保存到 Parse

Posted

技术标签:

【中文标题】无法快速将视频保存到 Parse【英文标题】:Can't save video to Parse in swift 【发布时间】:2015-12-30 03:49:02 【问题描述】:

我只是想让用户在应用程序中拍摄一段短视频,当视频被录制时,一旦用户使用UIImagePickerController点击“使用视频”,应用程序就会将其发送到 Parse 后端。

我可以将视频保存在本地 idFinishPickingMediaWithInfo

UISaveVideoAtPathToSavedPhotosAlbum(pathString!, self, nil, nil)

但我在网上找不到任何可以将视频保存到 Parse 的内容。

运行错误的行是

let videoFile:PFFile = PFFile(data: videoData)

带有错误处理程序 - Cannot convert value of type 'String?' to expected argument type 'NSData'

我认为它与上面的这一行有关导致错误:

let videoData = tempImage.relativePath

我找不到让它工作的代码。任何帮助都会令我惊叹!

@IBAction func recordAction(sender: AnyObject) 

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) 

    print("Camera Avilable")

    let imagePicker = UIImagePickerController()

        imagePicker.delegate = self
        imagePicker.sourceType = .Camera
        imagePicker.mediaTypes = [kUTTypeMovie as String]
        imagePicker.videoMaximumDuration = 180 // Perhaps reduce 180 to 120
        imagePicker.videoQuality = UIImagePickerControllerQualityType.TypeMedium
        imagePicker.allowsEditing = false

        imagePicker.showsCameraControls = true

        self.presentViewController(imagePicker, animated: true, completion: nil)

     else 

        print("Camera Unavailable")

    


func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 

    let tempImage = info[UIImagePickerControllerMediaURL] as! NSURL!
    let pathString = tempImage.relativePath
    self.dismissViewControllerAnimated(true, completion: nil)


    let videoData = tempImage.relativePath
    let videoFile:PFFile = PFFile(data: videoData)

    PFUser.currentUser()?.setObject(videoFile, forKey: "videoFile")
    PFUser.currentUser()?.saveInBackground()


【问题讨论】:

【参考方案1】:

让 videoData = NSData(contentsOfFile:tempImage.relativePath)

让 videoFile:PFFile = PFFile(name:"yourfilenamewithtype", data:videoData)

file.saveInBackgroundWithBlock((succeeded:Bool,error:NSError?)

//这里处理成功或失败。

,progressBlock:(percentDone: Int32) -> 无效

//在此处更新您的进度微调器。percentDone 将介于 0 和 100 之间。

)

yourfilenamewithtype like this,resume.txt

方法是尝试将文件制作成NSdata。

【讨论】:

输出显示现在保存成功,但我没有看到解析中保存的任何数据? ***.com/questions/34552158/…【参考方案2】:

我没有使用 Parse 的经验,但 documentation 表明 PFFile(data:) 构造函数确实需要文件的内容,并且您提供名称。您可能想使用PFFile(name: nil, contentsAtPath: pathString!)

请注意,您将pathStringvideoData 设置为相同的值,即路径而非数据。

更重要的是,请注意,如果您只是按照 RYANCOAL9999 的建议使用 NSData(contentsOfFile: pathString!) 加载文件,您会将整个视频文件放入 RAM。您可以使用NSData(contentsOfFile: pathString!, options: .DataReadingMappedIfSafe),但我认为最好将整个文件复制过程简单地委托给库。

【讨论】:

以上是关于无法快速将视频保存到 Parse的主要内容,如果未能解决你的问题,请参考以下文章

Swift:Parse 不会从 URL 加载视频

无法将视频保存到相机胶卷(目标 C)

从 Parse 下载后无法流式传输视频

快速视频到文档目录

从图像创建视频并保存到相册

pc端下载微博下载不了的视频