Захват видео, а также изображений в iPhone - PullRequest
4 голосов
/ 26 мая 2011

Я использую ImagePickerController для захвата видео. Мне также нужно сохранить видео в качестве изображения.

Поэтому я выбрал AVCaptureSession для захвата изображений. Я не могу запустить AVCaptureSession, а также ImagePickerController. Поэтому мне нужно предоставить ImagePickerController в качестве входных данных для AVCaptureSession.

Но я не знаю, как это сделать. Пожалуйста, помогите мне .. и предложите мне правильный путь.

Ответы [ 4 ]

3 голосов
/ 26 мая 2011
2 голосов
/ 26 мая 2011

У меня была та же проблема .. Я работал над изображением и видео и использовал приведенный ниже код для захвата изображения:

- (void) snapImage: (id) sendern
{
    UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
    ipc.sourceType =  UIImagePickerControllerSourceTypeCamera;
    ipc.delegate = self;
    ipc.allowsImageEditing = YES;
    [self presentModalViewController:ipc animated:YES]; 

}

А для записи видео я использовал следующий код:

- (void) recordVideo: (id) sender
{
    UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
    ipc.sourceType =  UIImagePickerControllerSourceTypeCamera;
    ipc.delegate = self;
    ipc.allowsEditing = YES;
    ipc.videoQuality = UIImagePickerControllerQualityTypeMedium;
    ipc.videoMaximumDuration = 30.0f; // 30 seconds
    ipc.mediaTypes = [NSArray arrayWithObject:@"public.movie"];
    // ipc.mediaTypes = [NSArray arrayWithObjects:@"public.movie", @"public.image", nil];
    [self presentModalViewController:ipc animated:YES]; 
}

Надежда поможет вам обоим фрагментам кода.

1 голос
/ 22 февраля 2012
    - (IBAction) useCamera: (id)sender
    {
        if ([UIImagePickerController isSourceTypeAvailable:
             UIImagePickerControllerSourceTypeCamera])
        {
            UIImagePickerController *imagePicker =
            [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            imagePicker.sourceType =
            UIImagePickerControllerSourceTypeCamera;
            imagePicker.mediaTypes = [NSArray arrayWithObjects:
                                      (NSString *) kUTTypeImage,
                                      nil];
            imagePicker.allowsEditing = NO;
            [self presentModalViewController:imagePicker
                                    animated:YES];
            newMedia = YES;
        }
    }

-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self.popoverController dismissPopoverAnimated:true];

    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    [self dismissModalViewControllerAnimated:YES];
    if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) 
    {
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    imageView.image = image;
        if (newMedia)
            UIImageWriteToSavedPhotosAlbum(image, self,  
                                           @selector(image:finishedSavingWithError:contextInfo:),nil);
    }

}
-(void)image:(UIImage *)image
finishedSavingWithError:(NSError *)error
 contextInfo:(void *)contextInfo
{
    if (error) 
    {
        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle: @"Save failed"
                              message: @"Failed to save image"
                              delegate: self
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
        [alert show];

    }
}
0 голосов
/ 26 мая 2011

Документация Apple и пример кода, связанные с AVFoundation, содержат несколько ошибок.См. iOS 4. Съемка фотографий с предварительным просмотром в реальном времени с помощью AVFoundation для кода, который фактически захватывает изображения из предварительного просмотра.

...