用户授予我们访问其相机权限的权限后。我们希望获取数据并从应用内将其上传到我们的服务中。 有没有办法从文件中访问视频数据?打开视频文件的唯一方法是创建一个AVAsset。但这对我来说还不够。iOS Photo Library阅读权限
我知道断
func requestExportSessionForVideo(_ asset: PHAsset!,
options options: PHVideoRequestOptions!,
exportPreset exportPreset: String!,
resultHandler resultHandler: ((AVAssetExportSession!,
[NSObject : AnyObject]!) -> Void)!) -> PHImageRequestID
但在我来说,我只是想将视频上传到我们的服务,我不想做的事:
- 第一个副本的视频做导入我的本地应用数据
- 然后将该数据发送到我们的服务。
- 删除数据。
上面的这个方法使用了大量的额外的空间和时间,用户使用全部16GB的iPhone,它不能很好地工作。
确定这是我试过到目前为止使用URL
var anAcces = sourceURL?.startAccessingSecurityScopedResource
if !NSFileManager.defaultManager().fileExistsAtPath(sourceURL!.path!) {
NSLog("not exist")
}
var aFileCoordinator = NSFileCoordinator(filePresenter:nil)
var anError: NSError?
aFileCoordinator.coordinateReadingItemAtURL(sourceURL!, options:.ForUploading, error:&anError, byAccessor: { (newURL: NSURL!) -> Void in
var data = NSData(contentsOfURL: newURL)
})
if let unError = anError {
NSLog("Error \(unError)")
}
sourceURL?.stopAccessingSecurityScopedResource
这将记录如下:
2015-02-08 16:20:01.947 Cameo[15706:2288691] not exist
2015-02-08 16:20:01.991 Cameo[15706:2288691] Error Error Domain=NSCocoaErrorDomain Code=257 "The operation couldn’t be completed. (Cocoa error 257.)" UserInfo=0x170876480 {NSURL=file:///var/mobile/Media/DCIM/100APPLE/IMG_0155.MOV, NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0155.MOV, NSUnderlyingError=0x17005a9a0 "The operation couldn’t be completed. Operation not permitted"}
您应该可以从AVAsset获取URL,然后将其传递给您的上传者。自从我看了这个以来已经有一段时间了。看看我的问题/答案。我想有人建议了一些可能适合你的东西。 – 2015-02-08 19:33:40
我用我用来访问URL的代码更新了我的问题。我试过2种技术:NSFileManager和NSFileCoordinator – mvo 2015-02-08 21:30:10
请参阅http://stackoverflow.com/a/26144019/1050482 – 2015-02-09 13:12:11