[英]Saving video file to photo gallery using Swift
我正在處理一部20秒的視頻。 我正要將該視頻保存到我的照片庫中。 視頻修剪成功后,我需要調用此函數,任何人都可以幫助我在Swift中轉換以下代碼。 我粘貼了兩個版本的代碼,是否有人可以識別我的錯誤?
目標C
-(void)writeVideoToPhotoLibrary:(NSURL*)aURL
{
NSURL *url = aURL;
NSData *data = [NSData dataWithContentsOfURL:url];
// Write it to cache directory
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"file.mov"];
[data writeToFile:path atomically:YES];
NSLog(@"Path:%@",path);
// After that use this path to save it to PhotoLibrary
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeVideoAtPathToSavedPhotosAlbum:[NSURL fileURLWithPath:path] completionBlock:^(NSURL *assetURL, NSError *error) {
if (error) {
NSLog(@"%@", error.description);
}else {
NSLog(@"Done :)");
}
}];
}
迅速
func SaveVideoToPhotoLibrary(outputFileURL: NSURL)
{
assetsLibrary = ALAssetsLibrary()
let videoURL = outputFileURL as NSURL?
if let library = assetsLibrary{
if let url = videoURL{
library.writeVideoAtPathToSavedPhotosAlbum(url,
completionBlock: {(url: NSURL!, error: NSError!) in
print(url)
if let theError = error{
print("Error happened while saving the video")
print("The error is = \(theError)")
} else {
print("no errors happened")
}
})
} else {
print("Could not find the video in the app bundle")
}
}
}
func saveToCameraRoll(URL: NSURL!) {
NSLog("srcURL: %@", URL)
var library: ALAssetsLibrary = ALAssetsLibrary()
var videoWriteCompletionBlock: ALAssetsLibraryWriteVideoCompletionBlock = {(newURL: NSURL!, error: NSError!) in
if (error != nil) {
NSLog("Error writing image with metadata to Photo Library: %@", error)
}
else {
NSLog("Wrote image with metadata to Photo Library %@", newURL.absoluteString!)
}
}
if library.videoAtPathIsCompatibleWithSavedPhotosAlbum(URL) {
library.writeVideoAtPathToSavedPhotosAlbum(URL, completionBlock: videoWriteCompletionBlock)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.