2013-06-28 1 views
7

Я использую AVCaptureVideoPreviewLayer для передачи видео в реальном времени и применяю шейдеры openGL в реальном времени. При использовании фронтальной камеры зеркало отражается, я хочу отменить зеркало перед применением шейдера.AVCaptureVideoPreviewLayer передняя камера flip (unmirror) pixelbuffer перед переходом к opengl shader

Может ли кто-нибудь помочь?

Добавлено: Код для переключения на фронтальную камеру:

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