Attualmente sto visualizzando un video nella mia app e voglio che l'utente possa salvarlo nella sua galleria di dispositivi/album fotografico/rullino fotografico. qui è quello che sto facendo, ma il video non viene salvato nell'album:/Swift - Scarica un video dall'URL distante e salvalo in un album fotografico
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 anche prendere in considerazione questo:
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)
Ma ho l'errore "Impossibile creare dati da file (null) ". Il mio "assetChangeRequest" è nullo. Non capisco come il mio url è valido e quando vado a esso con un browser, scarica un file di tempo veloce.
Se qualcuno può aiutarmi, sarebbe apprezzato! Sto usando Swift e il targeting di iOS 8.0 min.
Se si desidera salvare un file a rullino fotografico, dare un'occhiata a classi PHPhotoLibrary e il metodo '' creationRequestForAssetFromVideoAtFileURL' di PHAssetChangeRequest' – Nimble
Nel doc qui: https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHAssetChangeRequest_Class/index.html#//apple_ref/occ/clm/PHAssetChangeRequest/creationRequestForAssetFromVideoAtFileURL, non lo faccio capire cos'è fileURL. –
'fileURL' è un collegamento a un file video. Hai provato a usare 'filePath' come' fileURL'? Potrebbe essere simile a questo 'PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL (NSURL (fileURLWithPath: filePath))' – Nimble