目前知道的三种方法可以保存视频至本地相册:
方法一:iOS3 之后一直可以使用,兼容性极强;
方法二:支持 iOS9 以前,在 iOS9 之后被弃用;
方法二:在 iOS8 之后可以使用,一直沿用至今。
1、UIKIT_EXTERN 全局方法
BOOL videoCompatible = UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(item.savePath);
//检查视频能否保存至相册
if (videoCompatible) {
UISaveVideoAtPathToSavedPhotosAlbum(item.savePath, self,
@selector(video:didFinishSavingWithError:contextInfo:), nil);
} else {
NSLog(@"该视频无法保存至相册");
}
- (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
if (error) {
NSLog(@"保存视频失败:%@", error);
} else {
NSLog(@"保存视频成功");
}
}
2、ALAssetsLibrary(iOS 9 废弃)
//#import <AssetsLibrary/AssetsLibrary.h>
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeVideoAtPathToSavedPhotosAlbum:[NSURL fileURLWithPath:item.savePath]
completionBlock:^(NSURL *assetURL, NSError *error) {
if (error) {
NSLog(@"Save video fail:%@",error);
} else {
NSLog(@"Save video succeed.");
}
}];
3、PHPhotoLibrary(iOS 8 支持)
//#import <Photos/Photos.h>
PHPhotoLibrary *photoLibrary = [PHPhotoLibrary sharedPhotoLibrary];
[photoLibrary performChanges:^{
[PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:[NSURL
fileURLWithPath:item.savePath]];
} completionHandler:^(BOOL success, NSError * _Nullable error) {
if (success) {
NSLog(@"已将视频保存至相册");
} else {
NSLog(@"未能保存视频到相册");
}
}];
网友评论