如何从UIImagePickerController获取1080p视频?

时间:2016-06-15 15:10:46

标签: ios objective-c swift video

当我使用UIImagePickerController导入1080p视频时,请问它的大小是多少,它报告的仅为720p。

以下是我打开图像搜索器的方法:

    let picker = UIImagePickerController()
    picker.sourceType = .PhotoLibrary
    picker.videoQuality = .TypeHigh
    picker.allowsEditing = false
    picker.delegate = self
    picker.modalPresentationStyle = .Popover
    picker.popoverPresentationController?.sourceView = self.view
    picker.popoverPresentationController?.sourceRect = self.findButton.frame
    picker.mediaTypes = [kUTTypeMovie as String]
    self.navigationController?.presentViewController(picker, animated: true, completion: nil)

然后,当用户选择图像时:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

    let readMovieURL = info[UIImagePickerControllerMediaURL]
    // ...
}

后来我问大小:(这个位在Objective-c中)

NSDictionary *options = @{AVURLAssetPreferPreciseDurationAndTimingKey:@YES};
AVURLAsset *readMovieAsset = [[AVURLAsset alloc] initWithURL:readMovieURL options:options];

AVAssetTrack * track = [[asset tracksWithMediaType:AVMediaTypeVideo] firstObject];

// Why is it 720p?
CGSize size = track.naturalSize;

如何让用户从他们的库中选择1080p视频,然后以全分辨率使用它?

1 个答案:

答案 0 :(得分:0)

问题在于使用UIImagePickerControllerMediaURL。这特别指的是处理过的(压缩的)视频。切换到以下内容可以获得完整的1080p视频:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

    // Reference URL instead
    let readMovieURL = info[UIImagePickerControllerReferenceURL]
}

我不知道如何防止选择器首先完成压缩过程。