4

で動画を録画したいUIImagePickerController。私の問題は、メソッド [imagePickerController startVideoCapture];が常に0を返すことです。iOS5.1を実行しているiPhone4Sでアプリケーションをテストしています。誰かがこれで私を助けてくれませんか:

- (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");
}
4

4 に答える 4

2

間違っていなければ、「startVideoCapture」メソッドはブール値です

Appleのドキュメントから直接取得:

startVideoCapture

UIImagePickerControllerCameraDevice プロパティで指定されたカメラを使用してビデオ キャプチャを開始します。- (BOOL)startVideoCapture 戻り値

成功した場合は YES、失敗した場合は NO。このメソッドは、次のようなさまざまな理由で値 NO を返す場合があります。

Movie capture is already in progress

The device does not support movie capture

The device is out of disk space

討論

このメソッドをカスタム オーバーレイ ビューと組み合わせて使用​​して、プログラムによるムービーのキャプチャを開始します。インターフェイスを離れずに複数のムービーを撮影できますが、そのためにはデフォルトの画像ピッカー コントロールを非表示にする必要があります。

ムービーのキャプチャ中にこのメソッドを呼び出しても効果はありません。別のムービーをキャプチャする前に、stopVideoCapture メソッドを呼び出し、関連するデリゲート オブジェクトが imagePickerController:didFinishPickingMediaWithInfo: メッセージを受信するまで待機する必要があります。

画像ピッカーのソース タイプが UIImagePickerControllerSourceTypeCamera 以外の値に設定されている場合にこのメソッドを呼び出すと、NSInvalidArgumentException 例外がスローされます。

追加のオプションまたはムービー キャプチャのより詳細な制御が必要な場合は、AV Foundation フレームワークのムービー キャプチャ メソッドを使用します。AV Foundation フレームワークのリファレンスを参照してください。可用性

Available in iOS 4.0 and later.

UIImagePickerController.h stopVideoCapture で宣言

ビデオ キャプチャを停止します。- (void)stopVideoCapture ディスカッション

このメソッドを呼び出してビデオ キャプチャを停止した後、システムはイメージ ピッカー デリゲートの imagePickerController:didFinishPickingMediaWithInfo: メソッドを呼び出します。可用性

Available in iOS 4.0 and later.

UIImagePickerController.h で宣言

于 2012-11-28T21:00:17.297 に答える
1

私はまったく同じ問題を抱えていました。AndyV は正しく、ピッカーが提示されるまで録音は開始されません。スリープで遅延を導入しようと多くの時間を費やしましたが、最も簡単な解決策は、ピッカーを表示した後にタイマーを開始することです

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(startRecording) userInfo:nil repeats: NO]; 

それで ..

- (void)startRecording
{
    BOOL result = [picker startVideoCapture];
}
于 2014-12-19T10:31:31.343 に答える