2014-07-18 20 views
0

我使用Phonegap的實現來使用視頻捕捉,並且似乎無法使startVideoCapture正常工作。當談到Objective C我是一個新手,所以我很抱歉如果我離開這裏。聽起來像startVideoCapture主要是爲自定義用戶界面。有什麼我可以做自動開始視頻錄製(因爲我從另一個動作開始視頻界面)。這裏有一個鏈接到完整的文件:UIImagePickerController startVideoCapture與本機控件?

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]; 
    } 
} 

回答

2

我的問題是不使用startVideoRecording的,它是當:

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

希望這可以幫助別人。

感謝,

史蒂夫

相關問題