如何从视频URL获取NSData?

7

我正在尝试从UIImagePicker获取视频,并将其作为数据通过我的RestKit API发送。

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        let videoURL = info["UIImagePickerControllerReferenceURL"] as? NSURL

var movieData: NSData?
        do {
            movieData = try NSData(contentsOfURL: videoPath, options: .DataReadingMappedIfSafe)
        } catch {
            print(error)
            movieData = nil
            return
        }

// Multipart Form Request for RestKit POST goes here

        imagePickerController.dismissViewControllerAnimated(true, completion: nil)
    }

遇到以下错误:

错误领域=NSCocoaErrorDomain,代码=256,“无法打开文件“asset.MOV”。” UserInfo={NSURL=assets-library://asset/asset.MOV?id=B906AB1B-F311-47BA-8FE9-EE7AADDB7796&ext=MOV}


请注意,此错误信息指出无法打开名为“asset.MOV”的文件,并提供了有关该文件的详细信息。

可能是NSCocoaErrorDomain Code=256的重复问题。 - JAL
NSURL(fileURLWithPath: videoPath) - Leo Dabus
2个回答

5
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
            let videoURL = info["UIImagePickerControllerMediaURL"] as? NSURL
             do {
                let video = try NSData(contentsOfURL: videoPath, options: .DataReadingMappedIfSafe)
             } catch {
                print(error)
                return
             }
            imagePickerController.dismissViewControllerAnimated(true, completion: nil)
    }

2

这是我处理设备视频的方法:

@IBAction func addVideoFromDevice(_ sender: AnyObject) {
    let mediaUI = UIImagePickerController()
    mediaUI.sourceType = .savedPhotosAlbum
    mediaUI.mediaTypes = [kUTTypeMovie as NSString as String]
    mediaUI.allowsEditing = true
    mediaUI.delegate = self
    present(mediaUI, animated: true, completion: nil)
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    let mediaType = info[UIImagePickerControllerMediaType] as! NSString
    if mediaType == kUTTypeMovie {
        let videoURL = info[UIImagePickerControllerMediaURL] as! NSURL
        let avAsset = AVAsset(url: videoURL as URL) //>selected video
    } else{
        print("error @ mediaType-didFinishPickingMediaWithInfo")
    }
    dismiss(animated: true, completion: nil)
}

希望能帮到你:)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接