How to save recorded video into photo album?

前端 未结 3 959
死守一世寂寞
死守一世寂寞 2020-11-30 09:38

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

if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) 
    {
         image = [info ob         


        
相关标签:
3条回答
  • 2020-11-30 09:58

    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);
    
    }
    
    0 讨论(0)
  • 2020-11-30 10:03
    - (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.

            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.

    0 讨论(0)
  • 2020-11-30 10:05

    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];
      }
    
    0 讨论(0)
提交回复
热议问题