2013-06-28 23 views
7

Ich verwende AVCaptureVideoPreviewLayer, um das Live-Video zu übergeben und openGL Shader in Echtzeit anwenden. Bei der Verwendung der Frontkamera wird das Video gespiegelt, ich möchte es vor der Anwendung des Shaders entspiegeln.AVCaptureVideoPreviewLayer Front Kamera spiegeln (Unmirror) der Pixelpuffer vor dem Passieren zu OpenGL Shader

Kann mir jemand helfen?

Hinzugefügt: Code für zu Frontkamera Schalt:

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

Können Sie weitere Informationen zur Verfügung stellen, wie, Code-Snippet wo wechseln Sie die Kameras? Und was passiert, wenn Sie zurück zur Rückfahrkamera wechseln? Ist es noch gespiegelt? –

+0

Hallo Fahri, habe den Code hinzugefügt, um auf Frontkamera umzuschalten. Das Problem ist, dass das Video der Frontkamera gespiegelt wird, was für den Portrait-Modus gut ist, aber wenn ich die Kamera drehe, wird das Video umgedreht und wird auf den Kopf gestellt. z.B. das Gesicht einer Person dreht sich um 180 *. –

+0

In meinem früheren Kommentar, durch Drehen der Kamera, meine ich den Wechsel in den Querformat-Modus. –

Antwort

4

Wenn Sie bereits eine Vorschau Schicht haben, müssen Sie nur noch die Verbindung aktualisieren:

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

Ich habe versucht, diese Codezeile beim Erstellen der Sitzung hinzuzufügen, aber dann wird auch die Frontkamera in der Vorschauebene umgedreht. Und ich will diesen Effekt nicht, ich will nur, dass das Ergebnis nicht mehr dreht. Also habe ich versucht, diese Codezeile beim Umschalten auf die Frontkamera hinzuzufügen, aber es hat keine Wirkung. Kannst du mir in dieser Angelegenheit helfen, wenn du es erfolgreich benutzt hast? – CarmenA