将视频保存到图库并获取存储到图库的视频路径

Ank*_*pta 5 video uiimagepickercontroller ios swift photokit

我想保存从UIImagePickerController照片专辑中选择的视频.之后我需要获取保存路径的URL.我看到了一些已经存在的问题,这些问题ALAssetsLibrary现在已被弃用.例如:在图库中保存视频并存储视频路径

有人可以指导我使用Photo's framework并达到上述预期效果.如果我在任何地方都错了,请纠正我.

谢谢!!

Ank*_*pta 16

这对我很有用.

Swift 3.1 - >

PHPhotoLibrary.shared().performChanges({
            PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: url!)
}) { saved, error in
            if saved {
                let fetchOptions = PHFetchOptions()
                fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]

                // After uploading we fetch the PHAsset for most recent video and then get its current location url

                let fetchResult = PHAsset.fetchAssets(with: .video, options: fetchOptions).lastObject 
                PHImageManager().requestAVAsset(forVideo: fetchResult!, options: nil, resultHandler: { (avurlAsset, audioMix, dict) in
                    let newObj = avurlAsset as! AVURLAsset
                    print(newObj.url) 
                    // This is the URL we need now to access the video from gallery directly.
                    })
            }
}
Run Code Online (Sandbox Code Playgroud)


Sur*_*eet 7

首先,您需要在应用程序的plist文件中设置以下权限:

隐私 - 照片库使用说明

提供呈现给用户的字符串,说明您请求权限的原因.

下一个,

import photos

然后使用此代码存储视频

    PHPhotoLibrary.shared().performChanges({
        PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: fileURL)
    }) { saved, error in
        if saved {
            let fetchOptions = PHFetchOptions()
            fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

            let fetchResult = PHAsset.fetchAssets(with: .video, options: fetchOptions).firstObject
            // fetchResult is your latest video PHAsset
            // To fetch latest image  replace .video with .image
        }
    }
Run Code Online (Sandbox Code Playgroud)

要从PHAsset获取URL,请参阅此问题的答案