Swift: save video from NSURL to user camera roll Swift: save video from NSURL to user camera roll ios ios

Swift: save video from NSURL to user camera roll


AssetsLibrary is deprecated

1: import Photos

import Photos

2: Use this code to save video from url to camera library.

PHPhotoLibrary.sharedPhotoLibrary().performChanges({             PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(nsUrlToYourVideo)         }) { saved, error in             if saved {                 let alertController = UIAlertController(title: "Your video was successfully saved", message: nil, preferredStyle: .Alert)                  let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil)                 alertController.addAction(defaultAction)                 self.presentViewController(alertController, animated: true, completion: nil)             }         }

Swift 3 & Swift 4

PHPhotoLibrary.shared().performChanges({    PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: urlToYourVideo)}) { saved, error in    if saved {        let alertController = UIAlertController(title: "Your video was successfully saved", message: nil, preferredStyle: .alert)        let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)        alertController.addAction(defaultAction)        self.present(alertController, animated: true, completion: nil)    }}


The accepted answer no longer works with Swift 3.0 & iOS 10.

First, you need to set the following permission in your app's plist file:

Privacy - Photo Library Usage Description

Provide a string that is presented to the user explaining why you are requesting the permission.

Next, import photos:

import Photos

Finally, here is the updated code for Swift 3.0:

PHPhotoLibrary.shared().performChanges({    PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: fileURL)}) { saved, error in    if saved {        let alertController = UIAlertController(title: "Your video was successfully saved", message: nil, preferredStyle: .alert)        let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)        alertController.addAction(defaultAction)        self.present(alertController, animated: true, completion: nil)    }}


To save video from NSURL to user camera roll

func video(videoPath: NSString, didFinishSavingWithError error: NSError?, contextInfo info: AnyObject)  {    if let _ = error {       print("Error,Video failed to save")    }else{       print("Successfully,Video was saved")    }}func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {    if let conversationField = self.conversation {      if (mediaType?.isEqual((kUTTypeMovie as NSString) as String))!        {            let theVideoURL: URL? = (info[UIImagePickerControllerMediaURL] as? URL)            if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum((theVideoURL?.path)!))            {                UISaveVideoAtPathToSavedPhotosAlbum((theVideoURL?.path)!, self, #selector(ConversationDetailsViewController.video(videoPath:didFinishSavingWithError:contextInfo:)), nil)            }      }   self.dismiss(animated: true, completion: nil)}

Reference from:: https://www.raywenderlich.com/94404/play-record-merge-videos-ios-swift