是否可以在我的应用中自动访问iOS图库中的视频

时间:2016-08-29 02:52:13

标签: ios objective-c iphone

我想对来自iOS图库的视频进行后处理,向用户展示有关其捕获视频的一些信息。

使用UIImagePickerController,可以向用户显示文件选择器界面,用户可以在其中单独选择要在外部应用程序中处理的文件。

与此相反,是否可以“自动”访问iOS画廊中的视频“没有”用户手动选择?我打算从画廊处理视频文件-on,并向用户显示其图库中所有视频的数据。

我需要相关的API,但我还是找不到它。

如果我需要在我的应用文档目录中复制视频,我才能处理它。

2 个答案:

答案 0 :(得分:0)

从iOS 10开始,我们还需要在info.plist文件中提供照片库使用说明。应用程序用户将获得他/她希望应用程序访问他/她的图库内容的提示。如果没有,那么你就无法获得图库/视频。

答案 1 :(得分:-1)

Asset programming Guide

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    self.dismissViewControllerAnimated(true, completion: nil)

    if let referenceURL = info[UIImagePickerControllerReferenceURL] as? NSURL {
        let fetchResult = PHAsset.fetchAssetsWithALAssetURLs([referenceURL], options: nil)
        if let phAsset = fetchResult.firstObject as? PHAsset {
            PHImageManager.defaultManager().requestAVAssetForVideo(phAsset, options: PHVideoRequestOptions(), resultHandler: { (asset, audioMix, info) -> Void in
                if let asset = asset as? AVURLAsset {
                    let videoData = NSData(contentsOfURL: asset.URL)

                    // optionally, write the video to the temp directory
                    let videoPath = NSTemporaryDirectory() + "tmpMovie.MOV"
                    let videoURL = NSURL(fileURLWithPath: videoPath)
                    let writeResult = videoData?.writeToURL(videoURL, atomically: true)

                    if let writeResult = writeResult where writeResult {
                        print("success")
                    }
                    else {
                        print("failure")
                    }
                }
            })
        }
    }
}