2013-06-28 57 views
7

我使用AVCaptureVideoPreviewLayer來傳遞實時視頻並實時應用openGL着色器。 使用前置攝像頭時,視頻是鏡像的,我想在應用着色器之前取消鏡像。AVCaptureVideoPreviewLayer前置攝像頭在傳遞給opengl着色器之前翻轉(unmirror)pixelbuffer

任何人都可以幫助嗎?

補充:切換到前置攝像頭代碼:

-(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

嗨Fahri,已添加代碼切換到前置攝像頭。問題是,前置攝像頭的視頻是鏡像的,這對於肖像模式來說很好,但是當我旋轉攝像頭時,視頻會翻轉並變得顛倒。例如。一個人的臉轉180 *。 –

+0

在我之前的評論中,通過旋轉相機,我的意思是改變爲風景模式。 –

回答

4

如果你已經有了一個預覽層,你只需要更新連接:

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

我在創建會話時嘗試添加這一行代碼,但是前置攝像頭也會在預覽圖層中翻轉。我不想要那樣的效果,我只想讓結果不再翻轉。所以我試圖在切換到前置攝像頭時添加這一行代碼,但它沒有效果。如果成功使用它,你能幫助我解決這個問題嗎? – CarmenA