xcode 如何将录制的视频保存到相册?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/9991332/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 23:52:08  来源:igfitidea点击:

How to save recorded video into photo album?

iphoneiosxcode

提问by Shreedhar

Following code is to save image took from camera into photo album.

以下代码是将相机拍摄的图像保存到相册中。

if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) 
    {
         image = [info objectForKey:UIImagePickerControllerEditedImage];
        UIImageWriteToSavedPhotosAlbum(image, self,
                                       @selector(image:finishedSavingWithError:contextInfo:),
                                       nil);
    }

How to save Recoded video into photoAlbum?

如何将重新编码的视频保存到相册中?

回答by Akshay Aher

Check Below code...

检查下面的代码...

   - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{



    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
       if ([mediaType isEqualToString:@"public.movie"]){        
               // Saving the video / // Get the new unique filename 
               NSString *sourcePath = [[info objectForKey:@"UIImagePickerControllerMediaURL"]relativePath]; 
                  UISaveVideoAtPathToSavedPhotosAlbum(sourcePath,nil,nil,nil);

}

回答by jkr

- (void)saveMovieToCameraRoll
{
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    [library writeVideoAtPathToSavedPhotosAlbum:movieURL
                                completionBlock:^(NSURL     *assetURL, NSError *error) {
                                    if (error)
                                        [self     showError:error];
                                    else
                                        [self     removeFile:movieURL];

                                        dispatch_async(movieWritingQueue, ^{
                                            recordingWillBeStopped = NO;
                                            self.recording = NO;

                                            [self.delegate recordingDidStop];
                                    });
                                }];
    [library release];
}

This is the code snippet from apple example rosywriter. Sould work.

这是来自苹果示例 rosywriter 的代码片段。行得通。

        movieURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), @"Movie.MOV"]];
        [movieURL retain];

The above lines to create file and path for the video.

以上几行为视频创建文件和路径。

- (void) startRecording
{
    dispatch_async(movieWritingQueue, ^{

        if ( recordingWillBeStarted || self.recording )
            return;

        recordingWillBeStarted = YES;

        // recordingDidStart is called from     captureOutput:didOutputSampleBuffer:fromConnection: once the asset writer is setup
        [self.delegate recordingWillStart];

        // Remove the file if one with the same name already exists
        [self removeFile:movieURL];

        // Create an asset writer
        NSError *error;
        assetWriter = [[AVAssetWriter alloc] initWithURL:movieURL fileType:(NSString *)kUTTypeQuickTimeMovie error:&error];
        if (error)
            [self showError:error];
    }); 
}

This function is used to start recording video into that movieURL file using avassetwriter.

此函数用于使用 avassetwriter 开始将视频录制到该 movieURL 文件中。

回答by Anand

Try below code

试试下面的代码

- (void)saveVideo:(NSURL *)videoUrl {
    NSData *videoData = [NSData dataWithContentsOfURL:videoUrl];
    [videoData writeToFile:@"YOUR_PATH_HERE" atomically:YES];
  }    

  - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
      NSString *type = [mediaDict objectForKey:UIImagePickerControllerMediaType];

      if ([type isEqualToString:(NSString *)kUTTypeVideo] || 
          [type isEqualToString:(NSString *)kUTTypeMovie]) { // movie != video
          NSURL *videoURL [mediaDict objectForKey:UIImagePickerControllerMediaURL];
          [self saveVideo:videoUrl];
      }

  }


or you can try this also Saving the video to the documents directory is as follows

或者你也可以试试这个 将视频保存到文档目录如下

   - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {


  NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];

  NSData *videoData = [NSData dataWithContentsOfURL:videoURL];
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDirectory = [paths objectAtIndex:0];
  NSString *tempPath = [documentsDirectory stringByAppendingFormat:@"/vid1.mp4"];

  BOOL success = [videoData writeToFile:tempPath atomically:NO];


  [picker dismissModalViewControllerAnimated:YES];
  }