无法快速将视频保存到 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!)
。
请注意,您将pathString
和videoData
设置为相同的值,即路径而非数据。
更重要的是,请注意,如果您只是按照 RYANCOAL9999 的建议使用 NSData(contentsOfFile: pathString!)
加载文件,您会将整个视频文件放入 RAM。您可以使用NSData(contentsOfFile: pathString!, options: .DataReadingMappedIfSafe)
,但我认为最好将整个文件复制过程简单地委托给库。
【讨论】:
以上是关于无法快速将视频保存到 Parse的主要内容,如果未能解决你的问题,请参考以下文章