【问题标题】:UIImagePickerController startVideoCapture with native controls?UIImagePickerController startVideoCapture 与本机控件?
【发布时间】:2014-07-18 18:18:57
【问题描述】:

我正在使用 Phonegap 的实现来使用视频捕获,但似乎无法让 startVideoCapture 工作。当谈到Objective C时,我是个新手,所以如果我在这里离开基地,我很抱歉。听起来 startVideoCapture 主要用于自定义 UI。我可以做些什么来自动开始视频录制(因为我是从另一个动作开始视频界面)。这是完整文件的链接:

https://github.com/apache/cordova-plugin-media-capture/blob/master/src/ios/CDVCapture.m

谢谢,

史蒂夫

- (void)captureVideo:(CDVInvokedUrlCommand*)command
{
    NSString* callbackId = command.callbackId;
    NSDictionary* options = [command.arguments objectAtIndex:0];
    NSLog(@"hereeeee");
    if ([options isKindOfClass:[NSNull class]]) {
        options = [NSDictionary dictionary];
    }

    // options could contain limit, duration and mode
    // taking more than one video (limit) is only supported if provide own controls via cameraOverlayView property
    NSNumber* duration = [options objectForKey:@"duration"];
    NSString* mediaType = nil;

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        // there is a camera, it is available, make sure it can do movies
        pickerController = [[CDVImagePicker alloc] init];

        NSArray* types = nil;
        if ([UIImagePickerController respondsToSelector:@selector(availableMediaTypesForSourceType:)]) {
            types = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
            // NSLog(@"MediaTypes: %@", [types description]);

            if ([types containsObject:(NSString*)kUTTypeMovie]) {
                mediaType = (NSString*)kUTTypeMovie;
            } else if ([types containsObject:(NSString*)kUTTypeVideo]) {
                mediaType = (NSString*)kUTTypeVideo;
            }
        }
    }
    if (!mediaType) {
        // don't have video camera return error
        NSLog(@"Capture.captureVideo: video mode not available.");
        CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageToErrorObject:CAPTURE_NOT_SUPPORTED];
        [self.commandDelegate sendPluginResult:result callbackId:callbackId];
        pickerController = nil;
    } else {
        pickerController.delegate = self;
        pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
        pickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
        pickerController.allowsEditing = NO;
        // iOS 3.0
        pickerController.mediaTypes = [NSArray arrayWithObjects:mediaType, nil];

        if ([mediaType isEqualToString:(NSString*)kUTTypeMovie]) {
            if (duration) {
                pickerController.videoMaximumDuration = [duration doubleValue];
            }
            // NSLog(@"pickerController.videoMaximumDuration = %f", pickerController.videoMaximumDuration);
        }

        // iOS 4.0
        if ([pickerController respondsToSelector:@selector(cameraCaptureMode)]) {
            pickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;
            // pickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;
            // pickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear;
            // pickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto;
        }
        // CDVImagePicker specific property
        pickerController.callbackId = callbackId;

        SEL selector = NSSelectorFromString(@"presentViewController:animated:completion:");
        if ([self.viewController respondsToSelector:selector]) {
            [self.viewController presentViewController:pickerController animated:YES completion:nil];
        } else {
            // deprecated as of iOS >= 6.0
            [self.viewController presentModalViewController:pickerController animated:YES];
        }
        // Auto start capture
        [pickerController startVideoCapture];
    }
}

【问题讨论】:

    标签: ios objective-c cordova uiimagepickercontroller


    【解决方案1】:

    我的问题不是使用 startVideoRecording,而是在以下情况下:

            [self.viewController presentViewController:pickerController animated:YES completion:^(){
                [pickerController startVideoCapture];
            }];
    

    希望这对其他人有所帮助。

    谢谢,

    史蒂夫

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      相关资源
      最近更新 更多