是否有可能将嵌入在应用程序中的视频保存到相机胶卷中?如果可以,该怎么做?是使用相同的UIWriteImage方法吗?
假设您已经知道如何保存图像,您可以尝试使用以下代码:
-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if([mediaType isEqualToString:(NSString *)kUTTypeMovie]) {
//Save the video
NSURL *movieUrl = [info objectForKey:UIImagePickerControllerMediaURL];
UISaveVideoAtPathToSavedPhotosAlbum([movieUrl relativePath], self,@selector(movie:didFinishSavingWithError:contextInfo:), nil);
}
}
或者你可以尝试:
-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
if([mediaType isEqualToString:(NSString *)kUTTypeMovie]) {
NSURL *movieUrl = [info objectForKey:UIImagePickerControllerMediaURL];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeVideoAtPathToSavedPhotosAlbum:movieUrl completionBlock:^(NSURL *assetURL, NSError *error){
if(error) {
NSLog(@"CameraViewController: Error on saving movie : %@ {imagePickerController}", error);
}
else {
NSLog(@"URL: %@", assetURL);
}
}];
}
}
对于iOS 8及以上版本,请使用PHPhotoLibrary,ALAssetsLibrary已被弃用。
包括:
@import PhotosUI;
然后使用以下代码保存您的电影:
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^
{
[PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:<%Your Movie URL%>];
}
completionHandler:^(BOOL success, NSError *error)
{
if (success) {
NSLog(@"Movie saved to camera roll.");
}
else {
NSLog(@"Could not save movie to camera roll. Error: %@", error);
}
}];
UIImagePickerControllerMediaURL
,它看起来像这样:file:///private/var/mobile/Containers/Data/Application/A305CE7A-3959-479A-AE61-1BB184C3A679/tmp/83HDFS29__ABAG84H9-AA33-4137-AA2E-BE1JDHFBC41.MOV
我收到了这个错误:“操作无法完成。(Cocoa错误-1。)”
为错误对象的localizedDescription
。 - manonthemoon