2013-06-28 11 views
7

AVCaptureVideoPreviewLayerを使用して、ライブビデオを渡し、openGLシェーダをリアルタイムで適用します。 フロントカメラを使用している場合、ビデオはミラーリングされています。シェーダを適用する前に、ミラーリングを解除します。AVCaptureVideoPreviewLayerフロントカメラは、OpenGLシェーダに渡す前にピクセルバッファを反転します。

誰か助けてもらえますか?

追加:フロントカメラに切り替えるためのコード:

-(void)showFrontCamera{ 
    NSLog(@"inside showFrontCamera"); 
    [captureSession removeInput:videoInput]; 
    // Grab the front-facing camera 
    AVCaptureDevice *backFacingCamera = nil; 
    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 
    for (AVCaptureDevice *device in devices) { 
     if ([device position] == AVCaptureDevicePositionFront) { 
      backFacingCamera = device; 
     } 
    } 
    // Add the video input 
    NSError *error = nil; 
    videoInput = [[[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error] autorelease]; 

    if ([captureSession canAddInput:videoInput]) { 
     [captureSession addInput:videoInput]; 
    } 

} 
+0

あなたは、のような、より多くの詳細を提供することができますコードスニペットどこでカメラを切り替えるのですか?そして、後ろのカメラに戻ったとき何が起きていますか?それはまだ鏡像ですか? –

+0

こんにちはファーリ、フロントカメラに切り替えるコードを追加しました。問題は、フロントカメラのビデオが鏡映されていることです。これはポートレートモードでは問題ありませんが、カメラを回転させるとビデオが反転して上下逆になります。例えば。人の顔が180°回転します。 –

+0

私の以前のコメントでは、カメラを回転させると、私は風景モードに変更することを意味します。 –

答えて

4

すでにプレビュー層を持っている場合は、あなただけの接続を更新する必要があります。

[[previewLayer connection] setAutomaticallyAdjustsVideoMirroring:NO]; 
[[previewLayer connection] setVideoMirrored:NO]; 
+1

セッションを作成するときにこの行のコードを追加しようとしましたが、フロントカメラもプレビューレイヤーで反転されています。そして、私はその効果を望んでいない、私は結果がもう反転しないようにしたい。だから私は前のカメラに切り替えるときにこの行のコードを追加しようとしましたが効果はありません。もしあなたがそれをうまく使ったら、このことについて私を助けてくれますか? – CarmenA

関連する問題