iOS Swift 2 - 获取相机胶卷中的视频路径
我正在制作一个应用程序,该应用程序可以在服务器上传视频,并且我需要重新运行上传过程,如果用户关闭应用程序并稍后再打开它。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,所以当用户再次打开应用时,我可以再次访问视频。
UIImagePicker会一直压缩一个视频并传递给您info[UIImagePickerControllerMediaURL]
中给出的临时文件的NSURL - 无论您是否使用该临时文件,都有责任删除该临时文件。
如果要使用压缩版本,请将其移至文档文件夹并将路径保存到NSUserDefaults中。
如果您想要原始视频,请在info[UIImagePickerControllerReferenceURL]
中获取NSURL。这是原始ALAsset的网址。然后,您需要使用PHImageManager().requestImageDataForAsset
或PHImageManager().requestExportSessionForVideo
获取要上传的数据。
是否必须删除info [UIImagePickerControllerMediaURL]上的视频?因为如果我保存该URL,应用程序关闭并再次打开后无法访问该URL,因此它似乎喜欢将其从tmp文件夹中删除。 – Stevik
保存URL可能是一个不同的问题。自iOS8以来,每次运行都会得到与您的应用程序不同的绝对路径。因此,保存相对URL(我只保存文件的名称,因为我知道哪个文件夹保存了所有内容),然后在需要打开文件时重新构建一个新的绝对URL。 但是,如果文件对您很重要,请将它从tmp文件夹中移出。当设备存储空间不足时,iOS会在不告诉您的情况下删除tmp和缓存。听起来就像当你完成文件并完成上传时,你可以删除它。 –
您使用什么组件上传视频? NSUrlSession? – Ludovic