如何将视频路径转换为NSData

时间:2016-09-20 10:13:40

标签: ios iphone swift uiimagepickercontroller nsdata

我使用DKImagePicker从图库中提取多个视频。能够获取视频但无法转换为NSData。并且还从服务器接收错误。

Error Domain=NSCocoaErrorDomain Code=257 "The file “IMG_0040.MOV” couldn’t be opened because you don’t have permission to view it." UserInfo={NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0040.MOV, NSUnderlyingError=0x172e5f6b0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

可能未正确转换为NSData或可能是其他问题。 到目前为止我尝试的是:

let videoURL = User.sharedInstance.arrRoomGalleryVideos.objectAtIndex(index) as? NSURL
            var movieData: NSData?
            do {
                let video = try NSData(contentsOfURL: videoURL!, options: .DataReadingMappedIfSafe)
                print("video", video)
                multipartFormData.appendBodyPart(data: video, name: "video_path[]", fileName: strVidName, mimeType: "mp4")
            } catch {
                print(error)
                return
            }

请指导。提前谢谢。

1 个答案:

答案 0 :(得分:1)

当您从委托方法获取文件路径时,您应立即将文件复制到Documents或任何其他位置。因为最初的文件被放入私人文件夹,这是我理解的临时文件。因此,当您的第3方工具完成处理并存储到文件中时 - 它在某些时候变得无法访问。 因此,在使用copyItemAtPath:toPath:或类似的东西复制它之后 - 您可以通过从新路径读取NSData来获取NSData。

来自DKImagePicker git我发现方法:writeAVToFile(path:presetName:completeBlock:)可能有帮助。看here

相关问题