UIImagePickerController 不会录制视频

Coc*_*tch 5 cocoa-touch objective-c uiimagepickercontroller ios ios5

我想用 录制视频UIImagePickerController。我的问题是该方法 [imagePickerController startVideoCapture];总是返回 0。我正在使用运行 iOS 5.1 的 iPhone 4S 测试该应用程序。有人可以帮我解决这个问题吗:

- (IBAction)playButtonPushed:(id)sender
{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
    {
        UIView *videoView = self.videoViewController.view;
        UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] >init];
        imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
        imagePickerController.mediaTypes = [[NSArray alloc] initWithObjects: (NSString >*)kUTTypeMovie, nil];
        imagePickerController.showsCameraControls = NO;
        imagePickerController.toolbarHidden = NO;
        imagePickerController.wantsFullScreenLayout = YES;
        imagePickerController.allowsEditing = YES;
        imagePickerController.videoQuality = UIImagePickerControllerQualityTypeMedium;
        imagePickerController.videoMaximumDuration = 30;
        [imagePickerController startVideoCapture];
        imagePickerController.cameraViewTransform = > CGAffineTransformScale(self.imagePickerViewController.cameraViewTransform, CAMERA_TRANSFORM,  CAMERA_TRANSFORM);
        imagePickerController.delegate = self;

        [self.imagePickerViewController setCameraOverlayView:videoView];
        NSLog(@"%s videoCapture: %d", __PRETTY_FUNCTION__, [imagePickerController > startVideoCapture]
              );
        [self presentModalViewController:imagePickerViewController animated:YES];
    }
}


 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSLog(@"didFinishPickingMediaWithInfo");
    NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
    NSData *videoData = [NSData dataWithContentsOfURL:videoURL];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    NSLog(@"Cancel");
}
Run Code Online (Sandbox Code Playgroud)

nfo*_*gia 2

如果我没记错的话,“startVideoCapture”方法是一个布尔值

\n\n

直接取自苹果文档:

\n\n

开始视频捕捉

\n\n

使用 UIImagePickerControllerCameraDevice 属性指定的相机开始视频捕获。\n- (BOOL)startVideoCapture\n返回值

\n\n

YES 表示成功,NO 表示失败。此方法可能会因各种原因返回 NO 值,其中包括:

\n\n
Movie capture is already in progress\n\nThe device does not support movie capture\n\nThe device is out of disk space\n
Run Code Online (Sandbox Code Playgroud)\n\n

讨论

\n\n

将此方法与自定义覆盖视图结合使用来启动电影的编程捕获。您可以在不离开界面的情况下拍摄多部影片,但要做到这一点需要您隐藏默认的图像选择器控件。

\n\n

在拍摄影片时调用此方法没有任何效果。您必须调用 stopVideoCapture 方法,然后等待关联的委托对象收到 imagePickerController:didFinishPickingMediaWithInfo: 消息,然后才能捕获另一部电影。

\n\n

当图像选择器的源类型设置为 UIImagePickerControllerSourceTypeCamera 以外的值时调用此方法会导致引发 NSInvalidArgumentException 异常。

\n\n

如果您需要其他选项或对影片捕获进行更多控制,请使用 AV Foundation 框架中的影片捕获方法。请参阅 AV Foundation 框架参考。\n可用性

\n\n
Available in iOS 4.0 and later.\n
Run Code Online (Sandbox Code Playgroud)\n\n

在\nUIImagePickerController.h\nstopVideoCapture 中声明

\n\n

停止视频捕获。\n- (void)stopVideoCapture\n讨论

\n\n

调用该方法停止视频采集后,系统会调用图片选择器 delegate\xe2\x80\x99s imagePickerController:didFinishPickingMediaWithInfo: 方法。\n可用性

\n\n
Available in iOS 4.0 and later.\n
Run Code Online (Sandbox Code Playgroud)\n\n

在\nUIImagePickerController.h 中声明

\n