2013-06-28 10 views
7

Używam AVCaptureVideoPreviewLayer do przesyłania wideo na żywo i stosowania cieniowania openGL w czasie rzeczywistym. Podczas korzystania z przedniej kamery wideo jest odtwarzane z lustrem, chcę je odtworzyć z lustrem przed zastosowaniem modułu cieniującego.AVCaptureVideoPreviewLayer Przedni aparat odwraca (unmirror) pixelbuffer przed przejściem do modułu cieniującego OpenGL

Czy ktoś może w tym pomóc?

Dodano: Kod do przełączania do przedniej kamery:

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

można podać więcej szczegółów, jak, fragment kodu, w którym przełączasz kamery? I co się dzieje, gdy wrócisz do tylnej kamery? czy wciąż jest odzwierciedleniem? –

+0

Cześć Fahri, dodałem kod, aby przełączyć się do przedniej kamery. Problem polega na tym, że wideo z przedniego aparatu ma odzwierciedlenie, co jest dobre dla trybu portretowego, ale kiedy obracam kamerę, wideo jest odwrócone i staje do góry nogami. na przykład. twarz osoby obraca się o 180 *. –

+0

W moim wcześniejszym komentarzu, przez obracanie kamery, mam na myśli przejście do trybu poziomego. –

Odpowiedz

4

Jeśli masz już warstwę podglądu, wystarczy zaktualizować połączenie:

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

Próbowałem dodać ten wiersz kodu podczas tworzenia sesji, ale wtedy kamera przednia jest również odwinięta w warstwie podglądu. I nie chcę tego efektu, chcę tylko, aby wynik już nie był odwrotny. Próbowałem więc dodać ten wiersz kodu podczas przełączania do przedniego aparatu, ale nie ma to żadnego wpływu. Czy możesz mi pomóc w tej sprawie, jeśli z powodzeniem go użyłeś? – CarmenA

Powiązane problemy