How to record a video clip in ipad app and store it in documents folder

后端 未结 3 1351
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-15 19:42

I have training app i want that when user click recordVideo button camera should launch to record video, is there any way to do this in ipad app.I have done audio recording

相关标签:
3条回答
  • 2021-01-15 19:51

    Try this ::

    -(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
    {
        [self dismissViewControllerAnimated:NO completion:nil];
        NSString *type = [info objectForKey:UIImagePickerControllerMediaType];
    
        if ([type isEqualToString:(NSString *)kUTTypeVideo] || [type isEqualToString:(NSString *)kUTTypeMovie])
        {
            videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
    
            NSLog(@"found a video");
    
            // Code To give Name to video and store to DocumentDirectory //
    
            videoData = [[NSData dataWithContentsOfURL:videoURL] retain];
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDirectory = [paths objectAtIndex:0];
    
            NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
            [dateFormat setDateFormat:@"dd-MM-yyyy||HH:mm:SS"];
            NSDate *now = [[[NSDate alloc] init] autorelease];
            theDate = [dateFormat stringFromDate:now];
    
            NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Default Album"];
    
            if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
                [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil];
    
            NSString *videopath= [[[NSString alloc] initWithString:[NSString stringWithFormat:@"%@/%@.mov",documentsDirectory,theDate]] autorelease];
    
            BOOL success = [videoData writeToFile:videopath atomically:NO];
    
            NSLog(@"Successs:::: %@", success ? @"YES" : @"NO");
            NSLog(@"video path --> %@",videopath);
        }
    }
    

    Hopefully, It'll help you.

    Thanks.

    0 讨论(0)
  • 2021-01-15 19:51

    Just try it :

    -(void) imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info 
    {
        NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
        [self dismissModalViewControllerAnimated:NO];
        NSString *moviePath = [[info objectForKey: UIImagePickerControllerMediaURL] path];
        if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)){
            UISaveVideoAtPathToSavedPhotosAlbum (moviePath,self, @selector(video:didFinishSavingWithError:contextInfo:), nil);
                    }
    } 
    
    -(void)video:(NSString*)videoPath didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo {
     if (error) {
            [AJNotificationView showNoticeInView:self.view type:AJNotificationTypeRed title:@"Video Saving Failed" linedBackground:AJLinedBackgroundTypeAnimated hideAfter:1.0];
        }
        else{        
            NSURL *videoURl = [NSURL fileURLWithPath:videoPath];
            AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURl options:nil];
            AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc]  initWithAsset:asset];
            generate.appliesPreferredTrackTransform = YES;
            NSError *err = NULL;
            CMTime time = CMTimeMake(1, 60);
            CGImageRef imgRef = [generate copyCGImageAtTime:time actualTime:NULL error:&err];
    
    
    
    
    
      self.strUploadVideoURL = videoPath;
            [imgPhoto setImage:[[[UIImage alloc] initWithCGImage:imgRef] autorelease]];
            intWhenPushView = 2;
            btnShare.enabled = YES;
            btnFacebookShare.enabled = YES;
    
    
    
    CGImageRelease(imgRef);
        [generate release];
        [asset release];
        }
    }
    
    0 讨论(0)
  • 2021-01-15 20:13
    //for video..
    #import <MobileCoreServices/MobileCoreServices.h>
    #import <AVFoundation/AVFoundation.h>
    #import <MediaPlayer/Mediaplayer.h>
    
    #import <CoreMedia/CoreMedia.h>
    
    
    
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
    
        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
        {
            NSArray *mediaTypes = [NSArray arrayWithObject:(NSString*)kUTTypeMovie];
            picker.mediaTypes = mediaTypes ;
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;
            picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo ;
    
            [self presentModalViewController:picker animated:NO];
    
            [picker release];
        }
        else
        {
            UIAlertView *alt=[[UIAlertView alloc]initWithTitle:@"Error" message:@" Camera Facility is not available with this Device" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            [alt show];
            [alt release];
        }
    

    for saving into Document folder & it also save in photo Library

    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString* documentsDirectory = [paths objectAtIndex:0];
    
    
            //for video
            NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
            NSLog(@"video url-%@",videoURL);
    
            NSData *videoData = [NSData dataWithContentsOfURL:videoURL];
    
            NSString * videoName = [NSString stringWithFormat:@"student_%d_%d.mp4",stud_id,imgVidID];
    
            videoPath = [documentsDirectory stringByAppendingPathComponent:videoName];
    
            NSLog(@"video path-%@",videoPath);
    
            [videoData writeToFile:videoPath atomically:YES];
    
            NSString *sourcePath = [[info objectForKey:@"UIImagePickerControllerMediaURL"]relativePath];
    
            UISaveVideoAtPathToSavedPhotosAlbum(sourcePath,nil,nil,nil);
    
    }
    
    0 讨论(0)
提交回复
热议问题