parse docs ios swift parse.com save nsurl

ios - docs parse platform



Swift: guarde el video de NSURL en el rollo de la cámara del usuario (4)

Tengo un videoURL variable de tipo NSURL.

Si llamo a println(videoURL) devolvería algo como esto: http://files.parsetfss.com/d540f71f-video.mp4

Tengo un botón configurado que debería tomar este videoURL y guardar el video en el rollo de la cámara del usuario.

Lo mejor que he hecho es esto:

UISaveVideoAtPathToSavedPhotosAlbum(videoPath: String!, completionTarget: AnyObject!, completionSelector: Selector, contextInfo: UnsafeMutablePointer<Void>)

Aunque no estoy seguro de si esto funcionará o no, no puedo encontrar la manera de convertir videoFile:NSURL en un videoPath .

Cualquier ayuda es apreciada en esto.

Editar:

Lo siguiente no tiene éxito:

UISaveVideoAtPathToSavedPhotosAlbum(videoURL.relativePath, self, nil, nil)


obsoleto a partir de iOS 9

1: importar AssetsLibrary

import AssetsLibrary

2: use este código para guardar videos de la url a la biblioteca de la cámara.

ALAssetsLibrary().writeVideoAtPathToSavedPhotosAlbum(outputFileURL, completionBlock: nil)


La respuesta aceptada ya no funciona con Swift 3.0 y iOS 10.

Primero, debe configurar los siguientes permisos en el archivo plist de su aplicación:

Privacidad - Descripción de uso de la biblioteca de fotos

Proporcione una cadena que se presenta al usuario explicando por qué está solicitando el permiso.

A continuación, importar fotos:

import Photos

Finalmente, aquí está el código actualizado para 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) } }


Para guardar video de NSURL a la cámara del usuario

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) }

Referencia de :: https://www.raywenderlich.com/94404/play-record-merge-videos-ios-swift


AssetsLibrary está en desuso

1: importar fotos

import Photos

2: use este código para guardar videos de la url a la biblioteca de la cámara.

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

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) } }