Je suis actuellement en train d'afficher une vidéo dans mon application et je veux que l'utilisateur puisse l'enregistrer dans sa galerie d'appareils/album photo/appareil photo. Ici, il est ce que je fais, mais la vidéo est pas enregistré dans l'album:/Swift - Télécharger une vidéo depuis une URL distante et l'enregistrer dans un album photo
func downloadVideo(videoImageUrl:String)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
//All stuff here
print("downloadVideo");
let url=NSURL(string: videoImageUrl);
let urlData=NSData(contentsOfURL: url!);
if((urlData) != nil)
{
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0];
let fileName = videoImageUrl; //.stringByDeletingPathExtension
let filePath="\(documentsPath)/\(fileName)";
//saving is done on main thread
dispatch_async(dispatch_get_main_queue(), {() -> Void in
urlData?.writeToFile(filePath, atomically: true);
print("videoSaved");
})
}
})
}
I'va aussi regarder dans ceci:
let url:NSURL = NSURL(string: fileURL)!;
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let assetChangeRequest = PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(url);
let assetPlaceHolder = assetChangeRequest!.placeholderForCreatedAsset;
let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection)
albumChangeRequest!.addAssets([assetPlaceHolder!])
}, completionHandler: saveVideoCallBack)
Mais je l'erreur « Impossible de créer données du fichier (null) ". Mon "assetChangeRequest" est nul. Je ne comprends pas car mon URL est valide et quand j'y vais avec un navigateur, il télécharge un fichier rapide.
Si quelqu'un peut m'aider, ce serait apprécié! J'utilise Swift et cible iOS 8.0 min.
Si vous souhaitez enregistrer un fichier à rouleau appareil photo, jetez un oeil à des classes PHPhotoLibrary et la méthode '' creationRequestForAssetFromVideoAtFileURL' de PHAssetChangeRequest' – Nimble
Dans le document ici: https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHAssetChangeRequest_Class/index.html#//apple_ref/occ/clm/PHAssetChangeRequest/creationRequestForAssetFromVideoAtFileURL, je ne sais pas comprendre ce qu'est fileURL. –
'fileURL' est un lien vers un fichier vidéo. Avez-vous essayé d'utiliser votre 'filePath' en tant que' fileURL'? Il peut ressembler à ceci: 'PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL (NSURL (fileURLWithPath: filePath))' ' – Nimble