2016-01-23 82 views
1

我正在制作一个应用程序,该应用程序可以在服务器上传视频,并且我需要重新运行上传过程,如果用户关闭应用程序并稍后再打开它。iOS Swift 2 - 获取相机胶卷中的视频路径

后一个用户点击一个视频,这个功能被触发

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    let mediaType = info[UIImagePickerControllerMediaType] as! NSString 

    if mediaType == kUTTypeMovie { 
     let fileUrl = info[UIImagePickerControllerMediaURL] as! NSURL 

     // ... 
    } 

    self.performSegueWithIdentifier("someSegue", sender: self) 

} 

但我发现fileUrl指出了一些临时参照原始视频,并且即使视频是一样的总是不同的。

那么我怎样才能获得视频的真实路径,我可以保存到NSUserDefaults,所以当用户再次打开应用时,我可以再次访问视频。

+0

您使用什么组件上传视频? NSUrlSession? – Ludovic

回答

0

UIImagePicker会一直压缩一个视频并传递给您info[UIImagePickerControllerMediaURL]中给出的临时文件的NSURL - 无论您是否使用该临时文件,都有责任删除该临时文件。

如果要使用压缩版本,请将其移至文档文件夹并将路径保存到NSUserDefaults中。

如果您想要原始视频,请在info[UIImagePickerControllerReferenceURL]中获取NSURL。这是原始ALAsset的网址。然后,您需要使用PHImageManager().requestImageDataForAssetPHImageManager().requestExportSessionForVideo获取要上传的数据。

+0

是否必须删除info [UIImagePickerControllerMediaURL]上的视频?因为如果我保存该URL,应用程序关闭并再次打开后无法访问该URL,因此它似乎喜欢将其从tmp文件夹中删除。 – Stevik

+0

保存URL可能是一个不同的问题。自iOS8以来,每次运行都会得到与您的应用程序不同的绝对路径。因此,保存相对URL(我只保存文件的名称,因为我知道哪个文件夹保存了所有内容),然后在需要打开文件时重新构建一个新的绝对URL。 但是,如果文件对您很重要,请将它从tmp文件夹中移出。当设备存储空间不足时,iOS会在不告诉您的情况下删除tmp和缓存。听起来就像当你完成文件并完成上传时,你可以删除它。 –

相关问题