将应用内视频保存到相册?

3

是否有可能将嵌入在应用程序中的视频保存到相机胶卷中?如果可以,该怎么做?是使用相同的UIWriteImage方法吗?


@EmilioPelaez 我知道如何将UIImage写入相机胶卷,只需要使用UIImageWriteToSavedPhotosAlbum方法即可,但这仅适用于UIImages。 - user717452
2个回答

11

假设您已经知道如何保存图像,您可以尝试使用以下代码:

-(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);
        }
    }];
  }
}

3

对于iOS 8及以上版本,请使用PHPhotoLibraryALAssetsLibrary已被弃用。

包括:

@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);
     }
 }];

1
帮帮忙...我尝试了很多方法。这个答案似乎是最优雅的,但我真的无法在我的设备上使其工作。 对于电影URL,我正在传递UIImagePicker字典值: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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接